news 2026/4/16 16:06:35

【Linux 基础知识系列:第二百一十七篇】Linux 系统日志集中管理:ELK 入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 基础知识系列:第二百一十七篇】Linux 系统日志集中管理:ELK 入门

简介

在现代的系统运维中,日志管理是至关重要的环节。日志不仅记录了系统的运行状态,还能帮助我们快速定位问题、分析性能瓶颈以及进行安全审计。随着系统规模的不断扩大,传统的日志管理方式已经难以满足需求,因此需要一种集中化的日志管理系统。ELK(Elasticsearch、Logstash、Kibana)栈是目前最流行的开源日志管理解决方案之一,它能够高效地收集、存储、分析和可视化日志数据。本文将介绍 ELK 栈的基本架构,并演示如何配置 Logstash 收集 Linux 日志,通过 Kibana 进行可视化分析。

核心概念

ELK 栈简介

ELK 栈由三个主要组件构成:

  • Elasticsearch:一个高性能的搜索引擎,用于存储和索引日志数据。它支持分布式存储,能够快速查询和检索大量数据

  • Logstash:一个数据处理管道,用于收集、解析和转换日志数据。它支持多种输入和输出插件,可以灵活地处理各种格式的日志

  • Kibana:一个数据可视化工具,用于展示和分析 Elasticsearch 中的数据。它提供了丰富的图表和仪表板,方便用户直观地查看日志

日志收集的基本流程

在 ELK 栈中,日志收集的基本流程如下:

  1. 日志生成:应用程序或系统生成日志文件。

  2. 日志收集:Logstash 或其他工具(如 Filebeat)收集日志文件

  • 日志解析:Logstash 使用过滤器(如 Grok)解析日志,提取关键信息

  • 日志存储:解析后的日志被发送到 Elasticsearch 存储

  • 日志可视化:Kibana 从 Elasticsearch 中读取数据并进行可视化展示

命令与示例

安装 ELK 栈

安装 Elasticsearch

以 CentOS 为例,安装 Elasticsearch 的命令如下:

# 安装 Elasticsearch 的官方仓库 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch cat <<EOF | sudo tee -a /etc/yum.repos.d/elasticsearch.repo [Elasticsearch-8.x] name=Elasticsearch repository for 8.x packages baseurl=https://artifacts.elastic.co/packages/8.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF # 安装 Elasticsearch sudo yum install elasticsearch -y # 启动 Elasticsearch 服务 sudo systemctl enable elasticsearch sudo systemctl start elasticsearch
安装 Logstash
# 安装 Logstash sudo yum install logstash -y # 启动 Logstash 服务 sudo systemctl enable logstash sudo systemctl start logstash
安装 Kibana
# 安装 Kibana sudo yum install kibana -y # 启动 Kibana 服务 sudo systemctl enable kibana sudo systemctl start kibana

配置 Logstash 收集 Linux 日志

配置 Logstash 收集 syslog 日志

创建一个配置文件/etc/logstash/conf.d/syslog.conf,内容如下:

input { syslog { type => "system-syslog" port => 514 } } output { elasticsearch { hosts => ["localhost:9200"] index => "system-syslog-%{+YYYY.MM}" } }
  • input:定义输入源,这里使用 syslog 插件监听 514 端口。

  • output:定义输出目标,将日志发送到 Elasticsearch。

配置 Logstash 收集文件日志

创建一个配置文件/etc/logstash/conf.d/filebeat.conf,内容如下:

input { file { path => "/var/log/access.log" } } filter { grok { match => { "message" => "%{HTTPDATE:timestamp}\t%{WORD:client_ip}\t%{WORD:requested_uri}\t%{NUMBER:http_status_code}" } } date { match => ["timestamp", "HTTPDATE"] } } output { elasticsearch { hosts => ["localhost:9200"] index => "access_log-%{+YYYY.MM.dd}" } }
  • input:定义输入源,这里使用 file 插件从/var/log/access.log收集日志。

  • filter:使用 Grok 过滤器解析日志,提取关键字段。

  • output:将解析后的日志发送到 Elasticsearch。

配置 Kibana 可视化分析

  1. 访问 Kibana:在浏览器中访问http://<Kibana_IP>:5601

  2. 创建索引模式:在 Kibana 中创建一个索引模式,例如system-syslog-*access_log-*

  3. 创建可视化图表:使用 Kibana 的可视化工具创建图表,例如柱状图、折线图等,展示日志数据的分析结果。

常见问题

1. 如何确保 Logstash 能够访问日志文件?

如果 Logstash 无法访问日志文件,可能是因为权限问题。可以通过以下命令将 Logstash 用户添加到日志文件的访问组:

sudo usermod -a -G adm logstash

然后重新启动 Logstash 服务:

sudo systemctl restart logstash

2. 如何验证 Logstash 是否正确收集日志?

可以通过查看 Logstash 的日志文件来验证配置是否正确:

tail -f /var/log/logstash/logstash-plain.log

如果日志文件中没有错误信息,则说明 Logstash 正在正常工作。

3. 如何在 Kibana 中查看日志数据?

在 Kibana 中,可以通过以下命令查看索引中的数据:

GET _cat/indices GET logstash/_search

这些命令可以帮助你确认日志数据是否已经成功写入 Elasticsearch。

4. 如何处理跨行日志?

如果需要处理跨行日志,可以在 Logstash 配置文件中使用multiline插件。例如:

filter { multiline { pattern => "^%{TIMESTAMP_ISO8601}" negate => true what => previous } }

5. 如何优化 Elasticsearch 性能?

在使用 Elasticsearch 时,需要注意索引数量和分片数量的配置。过多的索引和分片会影响性能,可以通过合理设置索引生命周期管理(ILM)来优化性能。

实践建议

1. 使用 Filebeat 收集日志

Filebeat 是一个轻量级的日志收集工具,适合在服务器上直接收集日志文件。它可以通过 Logstash 或直接发送到 Elasticsearch。使用 Filebeat 可以减轻 Logstash 的负担,提高日志收集的效率。

2. 定期清理 Elasticsearch 索引

随着时间的推移,Elasticsearch 中的索引会不断增加。定期清理旧索引可以节省存储空间并提高查询性能。可以通过 Elasticsearch 的索引生命周期管理(ILM)功能来自动化这一过程。

3. 使用 Kibana 的仪表板功能

Kibana 提供了强大的仪表板功能,可以将多个可视化图表组合在一起,方便用户全面查看日志数据。通过创建自定义仪表板,可以快速了解系统的运行状态。

4. 配置告警功能

Kibana 支持告警功能,可以在日志数据满足特定条件时发送告警通知。例如,当系统出现错误日志时,可以自动发送邮件或短信通知运维人员。

5. 安全配置

在生产环境中,需要对 ELK 栈进行安全配置,包括启用 SSL/TLS 加密、设置访问控制等。这可以保护日志数据的安全性,防止未经授权的访问。

总结

本文详细介绍了 ELK 栈的基本架构,演示了如何配置 Logstash 收集 Linux 日志,并通过 Kibana 进行可视化分析。通过掌握这些知识和技能,你可以在日常工作中更好地管理和分析日志数据,提升系统的运维效率和可靠性。ELK 栈的强大功能使其成为现代日志管理的首选解决方案之一,无论是在小型项目还是大型企业环境中,都能发挥重要作用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:42:25

Kusto Query Language 去重技巧:实战篇

在数据处理过程中,去重(de-duplication)是一个常见的需求,尤其是在处理大量数据时。Kusto Query Language(KQL)提供了一些强大的工具来帮助我们实现这一点。本文将通过一个实际案例,详细讲解如何使用KQL进行数据去重。 背景介绍 假设我们有一个名为AccountInfo的表,存…

作者头像 李华
网站建设 2026/4/16 13:35:42

如何在4小时内完成Open-AutoGLM全栈部署?资深架构师亲授秘诀

第一章&#xff1a;Open-AutoGLM全栈部署的背景与核心挑战随着大语言模型在自然语言处理领域的广泛应用&#xff0c;构建一个高效、可扩展且易于维护的全栈推理系统成为企业落地AI能力的关键。Open-AutoGLM作为一款开源的大模型自动化推理框架&#xff0c;旨在打通从模型加载、…

作者头像 李华
网站建设 2026/4/16 13:42:21

Open-AutoGLM本地部署全攻略(含CUDA、Python、依赖库版本对照表)

第一章&#xff1a;Windows平台Open-AutoGLM部署概述在Windows平台上部署Open-AutoGLM模型&#xff0c;为本地化大语言模型应用提供了高效、灵活的解决方案。该部署方式支持离线运行、数据隐私保护以及定制化功能扩展&#xff0c;适用于科研、企业内部知识库构建等场景。环境准…

作者头像 李华
网站建设 2026/4/16 2:23:16

一文读懂直接偏好优化(DPO),非常详细收藏我这一篇就够了

虽然大规模无监督语言模型能够学习广泛的世界知识&#xff0c;并拥有一些推理能力&#xff0c;但由于其训练的完全无监督性质&#xff0c;精确控制其行为是相对来说还是很困难的。而要想去实现这种精准控制&#xff0c;可以使用人类反馈强化学习&#xff0c;其简称为RLHF&#…

作者头像 李华
网站建设 2026/4/16 13:31:57

大模型三大核心技术:RAG、Agent与多模态实战指南

本文解析大模型三大核心技术&#xff1a;RAG解决知识时效性与可信度问题&#xff0c;Agent赋予自主决策能力&#xff0c;多模态技术实现全息认知。三者协同演进&#xff0c;攻克数据隐私、专业适配等挑战&#xff0c;在医疗、金融等领域推动从效率革新到业务重构的行业变革。 &…

作者头像 李华