elastic之beats各组件使用

1.Filebeat

Filebeat主要用于转发和集中日志数据。Filebeat作为代理安装在服务器上,监视您指定的日志文件或位置,收集日志事件,并将它们转发到ElasticSearch或Logstash进行索引。

支持将各种log文件和Liunx服务器、Windows及Docker容器的日志发送到ElasticSearch中

配置自动发现docker容器的日志之后,可以在kibana中按照主机、服务名进行过滤查看log

当将数据发送到 Logstash 或 Elasticsearch 时,Filebeat 使用背压敏感协议,以应对更多的数据量。如果 Logstash 正在忙于处理数据,则会告诉 Filebeat 减慢读取速度。一旦拥堵得到解决,Filebeat 就会恢复到原来的步伐并继续传输数据。

使用

1.创建filebeat.docker.yml文件

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

processors:
- add_cloud_metadata: ~

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
  username: '${ELASTICSEARCH_USERNAME:}'
  password: '${ELASTICSEARCH_PASSWORD:}'

2.运行下面的命令在es中会自动创建index以及pattern和一个index lifecycle policy,生成之后可以先修改一下policy的默认设置

sudo docker run \
docker.elastic.co/beats/filebeat:7.3.0 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

3.运行filebeat服务

docker run -d \
  --name=filebeat \
  --user=root \
  --net=host \
  --volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
  --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
  docker.elastic.co/beats/filebeat:7.3.0 filebeat -e -strict.perms=false \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]

2.Heartbeat

主要是检测服务或主机是否正常运行或存活,Heartbeat 能够通过 ICMP、TCP 和 HTTP 进行 ping 检测。

使用

1.创建heartbeat.docker.yml文件

heartbeat.monitors:
- type: http
  schedule: '@every 5s'
  urls:
    - http://elasticsearch:9200
    - http://kibana:5601

- type: icmp
  schedule: '@every 5s'
  hosts:
    - elasticsearch
    - kibana

processors:
- add_cloud_metadata: ~

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
  username: '${ELASTICSEARCH_USERNAME:}'
  password: '${ELASTICSEARCH_PASSWORD:}'

2.运行下面的命令在es中会自动创建index以及pattern和一个index lifecycle policy,生成之后可以先修改一下policy的默认设置

sudo docker run \
docker.elastic.co/beats/heartbeat:7.3.0 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

3.运行heartbeat

sudo docker run -d \
  --name=heartbeat \
  --user=heartbeat \
  --net=host \
  --volume="$(pwd)/heartbeat.docker.yml:/usr/share/heartbeat/heartbeat.yml:ro" \
  docker.elastic.co/beats/heartbeat:7.3.0 \
  --strict.perms=false -e \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]

3.Metricbeat

定期收集操作系统、软件或服务的指标数据
Metricbeat支持收集的module非常多,常用的有docker、kafka、mysql、nginx、redis、zookeeper等等

使用

1.创建metricbeat.docker.yml文件

metricbeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    # Reload module configs as they change:
    reload.enabled: false

metricbeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

metricbeat.modules:
- module: docker
  metricsets:
    - "container"
    - "cpu"
    - "diskio"
    - "healthcheck"
    - "info"
    #- "image"
    - "memory"
    - "network"
  hosts: ["unix:///var/run/docker.sock"]
  period: 10s
  enabled: true

processors:
  - add_cloud_metadata: ~

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
  username: '${ELASTICSEARCH_USERNAME:}'
  password: '${ELASTICSEARCH_PASSWORD:}'

2.运行下面的命令在es中会自动创建index以及pattern和一个index lifecycle policy,生成之后可以先修改一下policy的默认设置

sudo docker run \
docker.elastic.co/beats/metricbeat:7.3.0 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

3.运行Metricbeat

sudo docker run -d \
  --name=metricbeat \
  --user=root \
  --net=host \
  --volume="$(pwd)/metricbeat.docker.yml:/usr/share/metricbeat/metricbeat.yml:ro" \
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
  --volume="/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro" \
  --volume="/proc:/hostfs/proc:ro" \
  --volume="/:/hostfs:ro" \
  docker.elastic.co/beats/metricbeat:7.3.0 metricbeat -e \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]

4.Packetbeat

packetbeat 是一款轻量型网络数据包分析器,Packetbeat的工作原理是捕获应用程序服务器之间的网络流量,解码应用程序层协议(HTTP,MySQL,Redis等)

1.可以查看服务器与服务器之间的流量情况
2.可以监控SQL语句执行次数排名以及响应时间排名。

使用

1.创建packetbeat.docker.yml文件

packetbeat.interfaces.device: any

packetbeat.flows:
  timeout: 30s
  period: 10s

packetbeat.protocols.dns:
  ports: [53]
  include_authorities: true
  include_additionals: true

packetbeat.protocols.http:
  ports: [80, 5601, 9200]

packetbeat.protocols.memcache:
  ports: [11211]

packetbeat.protocols.mysql:
  ports: [3306]


processors:
- add_cloud_metadata: ~

output.elasticsearch:
  hosts: ["http://elasticsearch:9200"]

注意:默认配置的数据量很大(一台机器一天接近百G)使用要优化配置

2.在es中创建packetbeat的index,会自动创建一个index lifecycle policy管理该index,生成之后可以先修改一下policy的默认设置

sudo docker run \
--cap-add=NET_ADMIN \
docker.elastic.co/beats/packetbeat:7.3.0 \
setup -E setup.kibana.host=elasticsearch:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

3.docker命令启动packetbeat服务

sudo docker run -d \
  --name=packetbeat \
  --user=packetbeat \
  --volume="/data/docker/packetbeat/7.3.0/packetbeat.docker.yml:/usr/share/packetbeat/packetbeat.yml:ro" \
  --cap-add="NET_RAW" \
  --cap-add="NET_ADMIN" \
  --network=host \
  docker.elastic.co/beats/packetbeat:7.3.0 \
  --strict.perms=false -e \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]

4.在kibana的DashBoard查看packetbeat对应的图表

5.Auditbeat

Auditbeat 允许您在 Linux、macOS 和 Windows 平台上仔细监控任何您感兴趣的文件目录。文件改变会被实时发送到 Elasticsearch,每条消息都包含元数据和文件内容的加密哈希信息,以便后续进一步分析。

只需简单地指定您想让 Auditbeat 监控的文件目录,便大功告成。

audit 主要用来记录安全信息,用于对系统安全事件的追溯
audit 来记录内核信息,包括文件的读写,权限的改变等


使用auditbeat 需要先停掉linux系统自带的auditd(service auditd stop)
否则出现failed to set audit PID. An audit process is already running (PID 9701)

使用

1.创建auditbeat.docker.yml配置文件

auditbeat.modules:

- module: auditd
  audit_rules: |
    -w /etc/passwd -p wa -k identity
    -a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access

- module: file_integrity
  paths:
    - /bin
    - /usr/bin
    - /sbin
    - /usr/sbin
    - /etc
processors:
- add_cloud_metadata: ~

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
  username: '${ELASTICSEARCH_USERNAME:}'
  password: '${ELASTICSEARCH_PASSWORD:}'

2.在es中创建auditbeat的index,会自动创建一个index lifecycle policy管理该index,生成之后可以先修改一下policy的默认设置

sudo docker run \
--cap-add="AUDIT_CONTROL" \
--cap-add="AUDIT_READ" \
--privileged=true \    
docker.elastic.co/beats/auditbeat:7.3.0 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

3.docker命令启动,并挂载自定义配置文件

sudo docker run -d \
  --name=auditbeat \
  --user=root \
  --net=host \
  --privileged=true \
  --volume="/data/docker/auditbeat/7.3.0/auditbeat.docker.yml:/usr/share/auditbeat/auditbeat.yml:ro" \
  --cap-add="AUDIT_CONTROL" \
  --cap-add="AUDIT_READ" \
  --pid=host \
  docker.elastic.co/beats/auditbeat:7.3.0 -e \
  --strict.perms=false \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]

4.在kibana查看对应modules的Dashboard

6.Journalbeat(实验性功能)

属于Beats中的一员,专门用于收集journald日志 。

journald

centos7使用systemd-journald做日志中心库,使用rsyslog来持久化日志,使用logrotate来轮转日志文件。

systemd-journald 守护进程提供一种改进的日志管理服务,可以收集来自内核,启动过程的早期阶段,标准输出,系统日志,以及守护进程启动和运行期间的错误的消息。它将这些消息写到一个结构化的事件日志中,默认情况下不在重新启动之间保留。

journald区别于传统的文件存储方式,是二进制存储。需要用journalctl查看。

使用

1.默认配置文件

journalbeat.inputs:
- paths: []
  seek: cursor

processors:
- add_cloud_metadata: ~

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
  username: '${ELASTICSEARCH_USERNAME:}'
  password: '${ELASTICSEARCH_PASSWORD:}'

2.使用docker生成index pattern以及lifecycle policy,生成之后可以先修改一下policy的默认设置

sudo docker run \
docker.elastic.co/beats/journalbeat:7.3.0 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"]

3.启动journlbeat

sudo docker run -d \
  --name=journalbeat \
  --user=root \
  --net=host \
  --volume="/var/log/journal:/var/log/journal" \
  --volume="/etc/machine-id:/etc/machine-id" \
  --volume="/run/systemd:/run/systemd" \
  --volume="/etc/hostname:/etc/hostname:ro" \
  docker.elastic.co/beats/journalbeat:7.3.0 journalbeat -e -strict.perms=false \
  -E output.elasticsearch.hosts=["elasticsearch:9200"]  

7.Functionbeat

Functionbeat是在无服务器环境中部署的Elastic Beat,用于收集由云服务生成的事件并将事件发送到Elasticsearch。

7.3.0版支持将Functionbeat部署为AWS Lambda服务,并响应为以下事件源定义的触发器:

  • 1.CloudWatch Logs
  • 2.Amazon Simple Queue Service (SQS)
  • 3.Kinesis

8.TopBeat

主要是读取系统负载和CPU和内存统计信息,已经被Metricbeat取代。

你可能感兴趣的:(elastic)