011_beats

Beats

Beats 是一个基于 Go 开发的 Light weight data shippers(也可以自己基于 Elastic 公司提供的规范开发自定义的 beat):

  • 以收集数据为主,收集到数据之后写入到 ES 然后使用 Kibana 进行图形化界面的展示和数据分析(Dashboard)
  • 支持与 Logstash 或 ES 无缝集成

Elastic 公司开发了很多开箱即用的 beats:

  • filebeat
  • metricbeat
  • packetbeat
  • winlogbeat
  • auditbeat
  • heartbeat
  • functionbeat

全品类、轻量级、开箱即用、可插拨、可扩展、可视化

image-20200503171457303

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

  1. 下载安装 metricbeat

  2. 解压下载好的压缩包,然后分配权限

    [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
    
  3. 我们现在看一下 Kibana 的 Dashboard 界面,基本没有什么数据

    image-20200503180059695

  4. 查看 metricbeat 的 modules,可以看到默认启用(enabled)了systemmodule,即监控操作系统的 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
    
  5. 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 界面,发现加载了很多新的数据进来

    image-20200503190119322

  6. 我们搜索 system,查看以下操作系统的指标

    image-20200503190605880

    进来之后可以看到有各项系统指标的聚合模块,但是可能是因为一些配置项没有配置或者哪些的权限没有配置的原因,没有数据显示,这个后续再看。

    image-20200503190959959

  7. 另外如果我们有安转 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

  1. 安装配置
  2. 配置 Kibana Dashboard:packetbeat setup --dashboards
  3. 运行 packetbeat
  4. 查看 dashboard

总结

各个 beats 的操作都是大同小异的,它们收集各种各样的指标数据根据配置可以存储到 logstash 和 Elasticsearch 中,我们上面的 Metricbeat 的例子启用了 Kibana 和 Elasticsearch 的 module,metricbeat 会将收集到的数据和 logstash 一样转换成一个 event 的结构:

image-20200503192752900

然后写入到 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)


   转载规则


《011_beats》 阿钟 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录