Beats
Beats 是一个基于 Go 开发的 Light weight data shippers(也可以自己基于 Elastic 公司提供的规范开发自定义的 beat):
- 以收集数据为主,收集到数据之后写入到 ES 然后使用 Kibana 进行图形化界面的展示和数据分析(Dashboard)
- 支持与 Logstash 或 ES 无缝集成
Elastic 公司开发了很多开箱即用的 beats:
- filebeat
- metricbeat
- packetbeat
- winlogbeat
- auditbeat
- heartbeat
- functionbeat
全品类、轻量级、开箱即用、可插拨、可扩展、可视化
¶Metricbeat
用来定期搜集操作系统,软件的指标数据,存储到 Elasticsearch 当中,可以通过 Kibana 进行实时的数据分析。
metric 和 logs 类型数据的对比:
- metric:可聚合的数据,定期搜集
- logs:文本数据,随机搜集
在 Metricbeat 中有两个重要概念:
-
Module:需要搜集相关指标的对象,它可以是一个操作系统、数据库、软件应用等等,ES 内置了很多开箱即用的 Modules
-
Metricset:具体的指标集合,一个 Module 可以包含多个 metricset。(metricset 以减少调用次数为原则进行划分,不同的 metrcset 可以设置不同的抓取数据的 interval)
下面是 system module 的 mertric set
- core
- cpu
- disk io
- filesystem
- load
- memory
Metricbeat 还提供了大量的开箱即用的 module,可以到官网进行查看,也可以通过执行metricbeat module list
查看,通过执行metricbeat module enable ${module_name}
开启相关的module。
¶Demo
-
解压下载好的压缩包,然后分配权限
[root@izwz920kp0myp15p982vp4z elasticsearch]# tar -zxvf ./metricbeat-7.1.0-linux-x86_64.tar.gz [root@izwz920kp0myp15p982vp4z elasticsearch]# cd metricbeat-7.1.0-linux-x86_64 [root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# chmod go-w ./metricbeat.yml
-
我们现在看一下 Kibana 的 Dashboard 界面,基本没有什么数据
-
查看 metricbeat 的 modules,可以看到默认启用(enabled)了
system
module,即监控操作系统的 module。[root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# ./metricbeat modules list Enabled: system Disabled: aerospike apache aws ceph couchbase couchdb docker dropwizard elasticsearch envoyproxy etcd golang graphite haproxy http jolokia kafka kibana kubernetes kvm logstash memcached mongodb mssql munin mysql nats nginx php_fpm postgresql prometheus rabbitmq redis traefik uwsgi vsphere windows zookeeper
-
enable kibana 和 elasticsearch,然后设置 Kibana 的 dashboard
[root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# ./metricbeat modules enable kibana Enabled kibana [root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# ./metricbeat modules enable elasticsearch Enabled elasticsearch [root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# ./metricbeat setup --dashboards Loading dashboards (Kibana must be running and reachable) Loaded dashboards
此时再查看 kibana 的 dashboard 界面,发现加载了很多新的数据进来
-
我们搜索 system,查看以下操作系统的指标
进来之后可以看到有各项系统指标的聚合模块,但是可能是因为一些配置项没有配置或者哪些的权限没有配置的原因,没有数据显示,这个后续再看。
-
另外如果我们有安转 mysql,需要监控 mysql 的一些指标,也可以启动 mysql 的 module。并到配置文件
./modules.d/mysql.yml
中配置 mysql 的一些连接信息。[root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# ./metricbeat modules enable mysql Enabled mysql [root@izwz920kp0myp15p982vp4z metricbeat-7.1.0-linux-x86_64]# vim ./modules.d/mysql.yml
所有一些其他模块的连接或者一些配置文件都在
${beat_home}/modules.d/xxx.yml
中进行配置
¶[Packetbeat](https://www.elastic.co/guide/en/beats/packetbeat/7.1/packetbeat-getting- started.html)
实时网络数据分析,监控应用服务器之间的网络流量。 常见的抓包工具有:Tcpdump、wireshark等。这些工具很多都是基于 Pcap来开发的,而 Pcap 底层是依赖于 libpcap(跨平台、基于内存映射嗅探、高性能),packetbeat 也是基于 pcap 来开发。
packetbeat 支持的协议:ICMP、DHCP、DNS、HTTP、Cassandra、Mysql、PostgresSQL、Redis、MongoDB、Memcache、TLS 等。同时它还有基于 network flos 的方式抓取记录网络流量数据,不涉及协议解析。
¶Demo
- 安装配置
- 配置 Kibana Dashboard:
packetbeat setup --dashboards
- 运行 packetbeat
- 查看 dashboard
¶总结
各个 beats 的操作都是大同小异的,它们收集各种各样的指标数据根据配置可以存储到 logstash 和 Elasticsearch 中,我们上面的 Metricbeat 的例子启用了 Kibana 和 Elasticsearch 的 module,metricbeat 会将收集到的数据和 logstash 一样转换成一个 event 的结构:
然后写入到 ES(我们没有配置 Kibana 和 ES 的连接信息,使用的是 beats 的默认配置,即 Kibana 和 Elasticsearch 都是取 localhost:5601和 localhost:9200 去通信的)。
另外以上例子中我们对于 beat 的一些特殊配置,我们也没有进行配置,例如 metricbeat 各个 modules的一些配置(mysql 连接信息等等)也没有配置,等到之后真正有这个需求再具体去看文档吧。
¶相关阅读
https://www.elastic.co/guide/en/beats/metricbeat/7.1/index.html
[https://www.elastic.co/guide/en/beats/packetbeat/7.1/packetbeat-getting- started.html](https://www.elastic.co/guide/en/beats/packetbeat/7.1/packetbeat-getting- started.html)