1. Elastic stack 简介

	- ElaticSearch : 分布式的实时分析搜索引擎
	- Logstash: 服务器端数据处理管道, 分为 **Input**  **Filter**  **output**
	- Kibana: Kibana 是基于 Logstash 的工具,可以通过各种图表进行高级数据分析及展示
	- Beats: 采用GO语言开发的轻量级的数据采集工具, 它可以采集不同类型的数据发送到Elastic Search中,
	- 也可以将采集的数据发送到Logsta

2. 安装与运行

# 下载安装ElasticSearch 官方文档有详细说明:
	1.  安装javaJDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
	2.  安装ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html  
    

3. Elastic Search 与 Kibana入门

Elasticsearch配置说明:

一. elasticsearch.yml   es的相关配置:
	cluster.name :        		集群名称, 以此作为是否同一集群的判断条件
	node.name : 				节点名称,以此作为集群中不同节点的区分条件
	network.host/http.port : 	网络地址和端口, 用于http和transport服务使用
	path.data : 				数据存储地址
	path.log					日志存储地址
	
	Development 与 Production 模式说明:
		以transport 的地址是否绑定在localhost为判断标准 network.host
		Development模式下在启动时会以warning的方式提示配置检查异常
		Production 模式下在启动时会以error的方式提示配置检查异常并退出
	参数修改的第二种方式
		bin/elasticsearch -Ehttp.port=19200  通过命令行的方式来修改参数 
		
二. jvm.options.jvm的相关配置
三. log4j2.properties 日志相关配置

4.Elasticsearch 本地启动集群的方式:

	1. bin/elasticsearch   # 默认运行方式
	2. bin/elasticsearch -Ehttp.port=8200 -Epath.data=node2  # 端口改为8200 name=node2
    3. bin/elasticsearch -Ehttp.port=7200 -Epath.data=node3  # 端口改为7200 name=node3

	此时访问localhost:9200  	   可以查看我们的es是否运行起来
	访问localhost:9200/_cat/nodes 可以查看我们当前有几个集群
	例:
	
		ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
		127.0.0.1           30          97   6    2.65    1.12     0.45 dilmrt    -      root
		127.0.0.1           37          97   6    2.65    1.12     0.45 dilmrt    *      root
		127.0.0.1           42          97   6    2.65    1.12     0.45 dilmrt    -      root
	* 代表主节点,其他代表子节点

5. Kibana 安装与运行

下载安装 Kibana:
	https://www.elastic.co/downloads/kibana
	或
	1.curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz
	2.curl https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz.sha512
	3.tar -xzf kibana-7.8.0-linux-x86_64.tar.gz
	4.cd kibana-7.8.0-linux-x86_64/
	
kibana 配置说明
	配置位于config文件夹中
	kibana.yml 关键配置说明:
		1. server.host/server.port 访问kibana 用的地址和端口
		2. elasticsearch.url 待访问 elasticsearch 的地址  一般我们查看一下配置文件里是否是默认端口,然后运行
		
运行:
	bin/kibana
访问 localhost:5601 可以看到kibana的界面

6.Dev Tools(开发者工具)

kibana 常用功能说明
	1.Discover 数据搜索查看
	2.Visualize 图片制作
	3.Dashboard 仪表盘制作
	4.Timelion  时序数据的高级可视化分析
	5.DevTools  开发者工具
	6.Management 配置
Elasticsearch 常用术语
	1.Document 文档数据
	2.Index  索引
	3.Type  索引中的数据类型
	4.Field 字段, 文档的属性
	5.Query DSL 查询语法

7. Elasticsearch CURD

Create 创建文档 POST /accout/person/1  在accout文档下的person类型中下为1的地址,创建一个文档
	POST /accounts/person/1
    {
      "name":"wangdaxian",
      "lastname": "doe",
      "job_description" : "zai kibana logstash elasticsearch filebeta kafuka"   # 文档内容
    }
    
read   读取文档 GET  /accout/person/1  读取accout文档下的person类型中下为1的地址,读取一个文档	
Update 更新文档 POST /accout/person/1/_update 更新数据
	POST /accounts/person/1/_update
    {
      "doc": {
        "job_description": "Systems administrator and linux specialitwangdaxian"
      }
    }
    
Delete 删除文档  DELETE accounts/person/1

8. Elastic search Query

两种查询方式:
Query String:
	GET /accouts/person/_search?q=john
Query DSL:
	GET /accouts/person/_search
	{
		"query":{
			"match":{
				"name":"john"
			}
		}
	}

9.Beats 入门

简介:
Lightweght Data Shipper
		1.Filebeat   日志文件
		2.Metricbeat 度量数据
		3.Packerbeta 网络数据
		4.Winlogbeat Windows数据
		5.Heartbeat  健康检查
Filebeat 简介
处理流程:
	输入 Input
	处理 Firter
	输出 Output
Filedeat Input 配置简介
	yaml语法
	filebeat.prospectors
		- input_type:log
		  paths:
		  	- /var/log/apache/httpd-*.log
		- input_type:log
		  paths:
		  	-/var/log/messages
		  	-/var/log/*.log
Filedeat Output 配置简介
	1. Console
	2. Elasticsearch
	3. Logstash
	4. Kafka
	5. File
	6. redis
	
	output.elasticsearch:
		hosts:["http://localhost:9200"]
		username: "admin"
		password: "s3cr3t"
	output.console:
		pretty:true
	
Filebeat Filter 配置简介:
input 时处理  						
	Include_lines  	当达到某些条件时读取这一行或者不读这一行				  
	exclude_lines	当达到某些条件时读取这一行				  
	exclude_files	当达到某些条件时不读取这个文件				  
Output 前处理--Processor
	 drop_event		当达到这个条件满足丢弃这条数据
	 drop_fields	当达到这个条件满足丢弃这个字段
	 Decode_json_fields  对符合条件的字段去做一个json的解析
	 Include_fields		 加入一些字段,或者只去某些字段
filter处理:
processors:  # 这是一个filebeat filter配置, 作用是当我们的日志是DBG开头的时候就drop掉
	-drop_event:
	  when:
		regrxp:
		  message:"^DBG"
processors: # 对inner字段去进行json解析,比如这样的一条日志信息 : {"outer":"value", "inner":"{\"data\":\"value\"}"}
    -decode_json_fields:
    	fields:["inner"]
  	

10. FileBeat + Elastic search Ingest Node

Filebeat 缺乏数据转换的能力     因为filebeat确认数据转换的能力,所以官方给出的解决方案是在5.x之前增加了一个ingest node

Elasticsearch Ingest Node
	新增的node类型
	在数据写入es前对数据进行处理转换
	pipeline api

11. Filebeat Module 简介

如果想通过filebeat本身快速的存储到Elasicsearch中,大致要做不少处理,首先你要写合适的filebeat配置文件,然后还要去配置ingest node 中的pipeline,然后你还要对存储的数据做Kibana的一个Dashboard的一个合理的可视化的配置,那么filebeat官方也看到了这些事情在做的时候的一个复杂度,所以官方就推出了一些模块,把大家常用的一些日志格式做了一个统一化的处理,来达到一个开箱即用的效果.

Filebeat Module:
	1.对社区常见需求进行配置封装增加易用性
		比如一些平台的日志:
			nginx
			apache
			MySQL
	2.封装内容:
		filebeat.yml 配置
		ingest node pipeline 配置
		kibana dashboard 
当有了这些配置之后我们就只需要指定一些日志的路径就ok了,如需要收集nginx的日志那么只需要指定nginx的日志路径就好

12. PacketBeat 简介

1. 实时抓取网络包
2. 自动解析应用层协议
	- ICMP
	- DNS
	- HTTP
	- MySQL
	- Redis
	........
3. Wireshark   

Dome: Packetbeat 解析 http协议
	解析 elasticsearch http 请求
	配置文件:2020.7.3  后续官网如有更新,以官网为主
		# packetbeat.interfaces.device: localhost     
		packetbeat.protocols: 
		- type: http
  			ports: [9200] 
  			send_request: true   
  		include_body_for: ["application/json", "x-www-form-urlencoded"]  

		# 标准化输出到控制台 
		output.console:
    		codec.json:
        		pretty: true
        		escape_html: false

Packetbeat 运行
sudo ./packetbeat -e -c es.yml -strict.perms=false

 

下面就是获取的一次http请求:
"http": {
    "request": {
      "referrer": "http://localhost:9200/",
      "bytes": 505,
      "headers": {
        "content-length": 0
      },
      "method": "get"
    },
    "response": {
      "bytes": 1652,
      "body": {
        "bytes": 1559
      },
      "headers": {
        "content-length": 1559,
        "content-type": "image/x-icon"
      },
      "status_phrase": "ok",
      "status_code": 200
    },
    "version": "1.1"
  },
  "method": "get",
  "ecs": {
    "version": "1.5.0"
  },
  "destination": {
    "domain": "localhost",
    "bytes": 1652,
    "ip": "::1",
    "port": 9200
  },
  "client": {
    "port": 37934,
    "bytes": 505,
    "ip": "::1"
  },
  "event": {
    "kind": "event",
    "category": "network_traffic",
    "dataset": "http",
    "duration": 1373000,
    "start": "2020-07-03T05:38:46.084Z",
    "end": "2020-07-03T05:38:46.085Z"
  },
  "status": "OK"
}

以上就是本次文章内容,谢谢!

 

 

1
0