不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。

前言

大家好,我是小郭,最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。

只有学习了,操作了才能算真正的学会使用了,虽然看起来简单,但是里面的流程步骤还是很多的,将步骤和遇到的问

题记录和总结下,今天主要分享下在Docker环境下部署 Filebeat 日志收集工具。

# 从零到一搭建ELK日志,在Docker环境下部署 Elasticsearch 数据库

# 从零到一搭建ELK日志,在Docker环境下部署 logstash 工具

# 从零到一搭建ELK日志,在Docker环境下部署 Kibana 可视化工具

什么是 Filebeat?

轻量型日志采集器,用于转发和集中日志数据

Filebeat 监控您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash生成索引

工作原理

启动 Filebeat 时,它会启动一个或多个输入,这些输入会在您为日志数据指定的位置中查找

对于 Filebeat 定位的每个日志,Filebeat 都会启动一个收割机。每个harvester 读取单个日志以获取新内容并将新日志数据发送到libbeat,libbeat 聚合事件并将聚合数据发送到您为Filebeat 配置的输出。

网络异常,图片无法展示
|

输入

filebeat.inputs: 
    - type: log 
    paths: 
    - /var/log/*.log 
    - /var/path2/*.log

输入的作用:输入负责管理收割机并查找所有要读取的源。

支持输入的类型:www.elastic.co/guide/en/be…

收割机

收割机的作用:负责打开和关闭文件,这意味着在收割机运行时文件描述符保持打开状态

如果文件在收集过程中被删除或重命名,Filebeat 会继续读取该文件。这样做的副作用是保留磁盘上的空间,直到收割机关闭

默认情况下,Filebeat 会保持文件打开,直到close_inactive到达。

存在丢失的情况:

Filebeat 的至少一次交付保证存在限制,涉及日志轮换和旧文件的删除。如果日志文件写入磁盘并旋转的速度超过了 Filebeat 处理的速度,或者如果在输出不可用时删除了文件,则数据可能会丢失

部署 Filebeat 日志收集工具

  1. 安装Filebeat镜像
docker pull docker.elastic.co/beats/filebeat:8.1.0
  1. 创建配置文件
mkdir -p /data/elk/filebeat
touch filebeat.yml

filebeat.yml配置

需要注意的坑,在filebeat.yml 配置的日志地址是配置docker里面的地址,否则会读不到

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/share/filebeat/logs/*
# output.logstash:
#  hosts: ["127.0.0.1:9900"]
output.elasticsearch: 
  hosts: ["192.168.56.10:9200"]  
  1. 启动Filebeat
docker run -d -v /data/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
 -v /home/logs:/usr/share/filebeat/logs
 --name filebeat docker.elastic.co/beats/filebeat:8.1.0

指令可能存在换行的问题,执行有问题,可以先复制出来去掉换行

  1. 生成索引,有生成才算成功

通过docker logs来看Filebeats的操作

我们可以看到 Filebeats 内部启动了 go程序 去我们所配置的文件日志拉取数据

网络异常,图片无法展示
|

查询是否生成索引

curl http://localhost:9200/_cat/indices?v 

看到filebeat开头的那个索引,就表示成功了

网络异常,图片无法展示
|

  1. 上Kibana上添加索引

为了能看到日志,我们必须手动添加索引

网络异常,图片无法展示
|

再回到查询页面的时候我们就可以进行筛选的操作了

网络异常,图片无法展示
|

配置

Filebeat提供给我们的配置是非常丰富的,我们可以将收集到的数据写入很多不同的地方

这里我总结了部分常用到的,更多的配置信息我们可以到官网上去查询。

// 输出
filebeat.inputs:
// 类型
- type: filestream   
  id: my-filestream-id
  paths:
    - /var/log/*.log
// 模块配置 设置启动模块
filebeat.modules:
- module: nginx
  access:
  error:
- module: mysql
  slowlog:
// 输出到Es
output.elasticsearch:
  hosts: ["https://myEShost:9200"]
  username: "filebeat_writer"
  password: "YOUR_PASSWORD"
  index: "%{[fields.log_type]}-%{[agent.version]}-%{+yyyy.MM.dd}" 
  // 默认行为,当一个事件被 elasticsearch 明确拒绝时,它会被丢弃。
  non_indexable_policy.drop: ~
  indices:
    - index: "warning-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "WARN"
    - index: "error-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "ERR"
// 输出到logstash
output.logstash:
    hosts: ["localhost:5044", "localhost:5045"]
// 如果设置为 true 并且配置了多个 Logstash 主机,则输出插件会将已发布的事件负载平衡到所有 Logstash 主机上。
// 如果设置为 false,则输出插件将所有事件仅发送到一个主机(随机确定),
// 如果所选主机无响应,则将切换到另一台主机。默认值为假。
  loadbalance: true
  index: filebeat
  proxy_url: socks5://user:password@socks5-proxy:2233
  enabled: true
 output.kafka:
  # initial brokers for reading cluster metadata
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
  # message topic selection + partitioning 用于生产事件的 Kafka 主题。
  topic: '%{[fields.log_topic]}'
  partition.round_robin:
    reachable_only: false
// 代理要求的 ACK 可靠性级别。0=无响应,1=等待本地提交,-1=等待所有副本提交。默认值为 1
  required_acks: 1
// 设置输出压缩编解码器
  compression: gzip
// JSON 编码消息的最大允许大小
  max_message_bytes: 1000000 

总结

我们主要完成在Docker环境下部署 Filebeat 日志收集工具,他是搭建ELK日志非常重要的一部分,我们利用Filebeat日志收集完成之后,将数据写入 Elasticsearch 后用 Kibana 进行可视化展示,目前我们已经完成了Fliebeat + Es +Kibana部分。


网络异常,图片无法展示
|


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
51 5
|
2月前
|
存储 JSON 网络协议
Docker面试整理-如何查看和管理Docker容器的日志?
通过本文的介绍,我们了解了如何查看和管理Docker容器的日志,包括使用 `docker logs`命令、配置日志驱动、设置日志选项和集中日志管理。掌握这些技能,不仅可以在面试中展示专业水平,也能在实际工作中高效
330 3
|
2月前
|
存储 监控 安全
|
2月前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
218 2
|
3月前
|
Web App开发 iOS开发 Docker
Docker 容器的日志
【10月更文挑战第31天】
40 5
|
3月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
92 3
|
5月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
5月前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
5月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
180 6