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"]
主要是检测服务或主机是否正常运行或存活,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"]
定期收集操作系统、软件或服务的指标数据
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"]
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对应的图表
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
属于Beats中的一员,专门用于收集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"]
Functionbeat是在无服务器环境中部署的Elastic Beat,用于收集由云服务生成的事件并将事件发送到Elasticsearch。
7.3.0版支持将Functionbeat部署为AWS Lambda服务,并响应为以下事件源定义的触发器:
主要是读取系统负载和CPU和内存统计信息,已经被Metricbeat取代。