1. Elastic stack 简介
- ElaticSearch : 分布式的实时分析搜索引擎
- Logstash: 服务器端数据处理管道, 分为 **Input** **Filter** **output**
- Kibana: Kibana 是基于 Logstash 的工具,可以通过各种图表进行高级数据分析及展示
- Beats: 采用GO语言开发的轻量级的数据采集工具, 它可以采集不同类型的数据发送到Elastic Search中,
- 也可以将采集的数据发送到Logsta2. 安装与运行
# 下载安装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/18. 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 api11. 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"
}以上就是本次文章内容,谢谢!
