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

简介: 最近在玩 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部分。


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


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1932 5
|
4月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
224 5
|
4月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1377 7
|
5月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1072 64
搭建ELK日志收集,保姆级教程
|
11月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
835 90
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
存储 监控 安全
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
471 6