了解Beats
Filebeat入门学习
Metricbeat入门学习
Kibana入门学习
Logstash入门学习
1、Beats 简介
官网:https://www.elastic.co/cn/products/beats
2、Filebeat
2.1、架构
用于监控、收集服务器日志文件.
2.2、部署与运行
下载(或使用资料中提供的安装包,版本为:filebeat-6.5.4):
https://www.elastic.co/downloads/beats
2.3、读取文件
可以看出,已经检测到日志文件有更新,立刻就会读取到更新的内容,并且输出到控制台。
2.4、自定义字段
2.5、输出到Elasticsearch
在日志文件中输入新的内容进行测试:
在日志文件中输入新的内容进行测试:
查看数据:
2.6、Filebeat工作原理
Filebeat由两个主要组件组成:prospector 和 harvester。harvester:
负责读取单个文件的内容。
如果文件在读取时被删除或重命名,Filebeat将继续读取文件。
prospector
prospector 负责管理harvester并找到所有要读取的文件来源。
如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。
Filebeat目前支持两种prospector类型:log和stdin。Filebeat如何保持文件的状态
Filebeat 保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中。
该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
如果输出(例如Elasticsearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用 时继续读取文件。
在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebeat时,将使用注册 文件的数据来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取。
文件状态记录在data/registry文件中。
启动命令:
2.7、Module
前面要想实现日志数据的读取以及处理都是自己手动配置的,其实,在Filebeat中,有大量的Module,可以简化我 们的配置,直接就可以使用,如下:
可以看到,内置了很多的module,但是都没有启用,如果需要启用需要进行enable操作:
2.7.1、redis module
module目录:
1 .
2├── log #日志
3│ ├── config
4│ │ └── log.yml
5│ ├── ingest
6│ │ └── pipeline.json
7│ └── manifest.yml
8├── module.yml
9└── slowlog #慢查询日志
10├── config
11│ └── slowlog.yml
12├── ingest
13│ └── pipeline.json
14└── manifest.yml
2.7.2、redis module 配置
2.7.3、修改redis的docker容器
redis默认情况下,是不会输出日志的,需要进行配置,前面我们使用的容器都没有配置日志输出,下面需要配置一 下。
1 docker create --name redis-node01 -v /data/redis-data/node01:/data -p 6379:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf --loglevel debug --logfile nodes-node-01.log
2
3 docker create --name redis-node02 -v /data/redis-data/node02:/data -p 6380:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf --loglevel debug --logfile nodes-node-02.log
4
5 docker create --name redis-node03 -v /data/redis-data/node03:/data -p 6381:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf --loglevel debug --logfile nodes-node-03.log
loglevel 日志等级分为:debug、verbose、notice、warning 其中,debug 会有大量信息,对开发、测试有用;
verbose 等于log4j 中的info,有很多信息,但是不会像debug那样乱;
notice 一般信息;
warning 只有非常重要/关键的消息被记录。
2.7.4、配置filebeat
2.7.5、测试
./filebeat -e -c haoke-redis.yml --modules redis
测试发现,数据已经写入到了Elasticsearch中。当然了,其他的Module的用法参加官方文档:
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html
3、Metricbeat
定期收集操作系统或应用服务的指标数据存储到Elasticsearch中,进行实时分析
3.1、Metricbeat组成
Metricbeat有2部分组成,一部分是Module,另一部分为Metricset。Module
收集的对象,如:mysql、redis、操作系统等;
Metricset
收集指标的集合,如:cpu、memory、network等;
以Redis Module为例:
3.2、部署与收集系统指标
在ELasticsearch中可以看到,系统的一些指标数据已经写入进去了:
system module配置:
3.3、Module
3.4、Redis Module
可以看到Redis的指标数据写入到了Elasticsearch中:
更多的Module使用参见官方文档:
https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html
4、Kibana
Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。
官网:https://www.elastic.co/cn/products/kibana
4.1、配置安装
可以看到kibana页面,并且可以看到提示,导入数据到Kibana。
4.2、通过docker部署
4.3、功能说明
4.4、数据探索
首先先添加索引信息:
4.5、Metricbeat 仪表盘
可以将Metricbeat的数据在Kibana中展示。
即可在Kibana中看到仪表盘数据:
查看系统信息:
4.6、Filebeat 仪表盘
以Redis为例:
在kibana中已经看到了Filebeat中的redis仪表盘。
5、Logstash
5.1、简介
用途:
5.2、部署安装
执行效果如下:
5.3、接收Filebeat输入的日志
接下来,我们将Filebeat和Logstash整合起来,读取nginx的日志。
5.3.1、安装Nginx
5.3.2、配置Filebeat
5.3.3、配置Logstash
5.3.4、测试
分别启动Filebeat和Logstash,刷新页面查看输出。
可以看到,已经在控制台输出了nginx的访问日志。
5.3.4、配置filter
在前面的输出中,可以看出,虽然可以拿到日志信息,但是信息格式并不友好,比如说,不能直接拿到日志中的ip地 址。
第一步,自定义nginx的日志格式
第二步,编写nginx-patterns文件
NGINX_ACCESS %{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[%
{HTTPDATE:time_local}\] \"%{DATA:request}\" %{INT:status} %{NUMBER:bytes_sent} \"%
{DATA:http_referer}\" \"%{DATA:http_user_agent}\"
第三步,修改haoke-pipeline.conf文件
第四步,测试结果:
5.3.5、发送到Elasticsearch
修改配置:
测试:
在Kibana中查看:
制作柱形图: