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

简介: 最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。

前言

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

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

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

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

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

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

什么是 logstash?

Logstash是具有实时流水线能力的开源的数据收集引擎。Logstash可以动态统一不同来源的数据,并将数据标准化到您选择的目标输出。它提供了大量插件,可帮助我们解析,丰富,转换和缓冲任何类型的数据。

工作方式

管道(Logstash Pipeline)是Logstash中独立的运行单元,每个管道都包含两个必须的元素输入(input)和输出(output),和一个可选的元素过滤器(filter),事件处理管道负责协调它们的执行。

输入和输出支持编解码器,使您可以在数据进入或退出管道时对其进行编码或解码,而不必使用单独的过滤器。如:json、multiline等

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

inputs(输入阶段):

Logstash 支持各种输入选择,可以同时从众多常用来源捕捉事件。

包括:file、kafka、beats等

filters(筛选阶段):

数据从源传输到存储库的过程中,Logstash 筛选器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便进行更强大的分析和实现商业价值。

包括:

  • 利用 Grok 从非结构化数据中派生出结构
  • 简化整体处理,不受数据源、格式或架构的影响等

outputs(输出阶段):

将事件数据发送到特定的目的地,完成了所以输出处理,改事件就完成了执行。

如:elasticsearch、file、redis等

Codecs(解码器):

基本上是流过滤器,作为输入和输出的一部分进行操作,可以轻松地将消息的传输与序列化过程分开。

扩展

Logstash 采用可插拔框架,拥有 200 多个插件。您可以将不同的输入选择、筛选器和输出选择混合搭配、精心安排,让它们在管道中和谐地运行。

部署 logstash 日志收集工具

logstash的部署方式有很多种,一般情况下我们可以采用下载 logstash 安装包的方式去启动。

但是官方为我们提供了Docker的部署方式,我比较倾向于利用Docker来进行管理。

  1. 安装Logstash镜像
docker pull docker.elastic.co/logstash/logstash:7.7.1
  1. 创建文件目录和配置文件

创建文件夹

mkdir -p /data/elk/logstash/config
mkdir -p /data/elk/logstash/pipeline

创建配置文件

logstash.yml 放在/data/elk/logstash/config

touch logstash.yml
vi logstash.yml
config:
  reload:
    automatic: true
    interval: 3s
xpack:
  management.enabled: false
  monitoring.enabled: false

配置文件 pipelines.yml

放在/data/elk/logstash/config

在这里我们可以配置多个管道信息,来收集不同的信息

touch pipelines.yml
vi pipelines.yml
- pipeline.id: logstash_dev
  path.config: /usr/share/logstash/pipeline/logstash_dev.conf

配置文件 logstash_dev.conf

放在/data/elk/logstash/pipeline下

touch logstash_dev.conf
vi logstash_dev.conf
input {
  beats {
    port => 9900
  }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  mutate {
    convert => {
      "bytes" => "integer"
    }
  }
  geoip {
    source => "clientip"
  }
  useragent {
    source => "user_agent"
    target => "useragent"
  }
  date {
    match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
  }
}
output {
  stdout { }
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
    index => "xiaoguo_test_example"
  }
}

注意了,在这里我们可以配置索引的名称,以方便我们后面在查看

  1. 启动容器

最重要的一个环节来了,成败在此一举

docker run -d -it --restart=always  --privileged=true  --name=logstash -p 5047:5047 -p 9600:9600 -v /data/elk/logstash/pipeline/:/usr/share/logstash/pipeline/      -v /data/elk/logstash/config/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:7.7.1

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

启动结果:

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

  1. 验证是否启动成功

通过docker logs id 来看logstash是否启动成功

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

看到Successfully就表示成功了

  1. 修改 filebeat 配置文件

在前面的文章中我们已经将FlieBeat + Es + Kibana 的合并操作

我们只需要修改 filebeat 配置文件 filebeat.yml

将输出地址更改为我们部署的 logstash 地址

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/share/filebeat/logs/*
output.logstash:
  hosts: ["ip:9900"]
  1. 查询是否生成索引
curl http://localhost:9200/_cat/indices?v 

看到自定义名称的那个索引,就表示成功了

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

  1. 上Kibana查看

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

总结

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

Filebeat 收集数据写入 logstash处理,再将数据写入 Elasticsearch 后 Kibana 进行可视化展示的全过程。


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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
6月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1122 64
搭建ELK日志收集,保姆级教程
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
869 90
|
8月前
|
运维 安全 数据可视化
日志审查安排工具实战攻略:中小团队如何通过日志审查安排工具建立可控、安全的审查机制?
在审计敏感时代,日志审查安排工具成为安全运维与合规管理的关键利器。它实现审查任务的流程化、周期化与可视化,支持多系统协作、责任到人,确保“可控、可查、可追”的日志治理。工具如板栗看板、Asana、Monday 等提供任务调度、问题闭环与合规对接能力,助力企业构建高效、透明的日志审查体系,提升安全与合规水平。
|
9月前
|
JavaScript API 开发工具
HarmonyOS NEXT实战:日志工具
本文介绍了在HarmonyOS Next应用开发中,如何封装一个简单易用的日志工具LoggerKit。通过使用系统提供的HiLog API,开发者可以灵活输出不同级别的日志信息(DEBUG、INFO、WARN、ERROR、FATAL),用于分析应用运行状态和调试逻辑问题。文章详细说明了日志级别、参数配置及使用注意事项,并提供了完整的TypeScript封装示例代码,便于实际项目集成与应用调试。
221 0
|
存储 人工智能 JSON
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
RAG Logger 是一款专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、检索结果记录、LLM 交互记录和性能监控等功能。
577 7
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
612 8
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
564 5
|
存储 JSON 网络协议
Docker面试整理-如何查看和管理Docker容器的日志?
通过本文的介绍,我们了解了如何查看和管理Docker容器的日志,包括使用 `docker logs`命令、配置日志驱动、设置日志选项和集中日志管理。掌握这些技能,不仅可以在面试中展示专业水平,也能在实际工作中高效
2497 3
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
501 2
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
1308 2