news 2026/1/1 4:14:33

【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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 14:36:02

在Linux系统上安装和使用Prometheus+Grafana

我们将会介绍如何在Linux系统上安装和使用Prometheus&#xff0c;包括以下步骤&#xff1a; 下载和安装Prometheus配置Prometheus启动Prometheus服务器访问Prometheus的Web界面配置Prometheus监控自身安装和配置Node Exporter&#xff08;用于监控Linux主机&#xff09;配置Pr…

作者头像 李华
网站建设 2025/12/25 14:35:52

2025自考必备!8个降AI率工具测评榜单

2025自考必备&#xff01;8个降AI率工具测评榜单 自考论文降AI率工具测评&#xff1a;为何需要专业榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;检测系统在学术领域的应用愈发严格。对于自考生而言&#xff0c;论文的…

作者头像 李华
网站建设 2025/12/25 14:35:32

动态添加Bootstrap Select元素

在使用Bootstrap框架构建Web应用时,经常会遇到需要动态添加表单元素的情况,尤其是当我们希望使用Bootstrap的selectpicker类来创建一个增强的下拉选择框时。本文将详细介绍如何动态添加一个Bootstrap Select元素,并解决一些常见的问题。 背景介绍 当你直接在HTML中编写<…

作者头像 李华
网站建设 2025/12/25 14:33:37

网络安全哪个就业方向好?

随着网络安全需求激增&#xff0c;行业岗位逐渐细分&#xff0c;不再是单一的 “安全防护”。从日常监测网络异常&#xff0c;到挖掘系统漏洞、应对突发攻击&#xff0c;不同工作对应不同岗位。那么网络安全具体岗位有哪些?以下是具体内容介绍。网络安全领域涵盖许多不同的岗位…

作者头像 李华
网站建设 2025/12/25 14:32:16

浅谈专项测试之弱网络测试

一&#xff0e;弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境&#xff0c;大部分用户主要使用4G,3G,2G等网络&#xff0c;另外因为移动端产品使用的场景多变&#xff0c;如进公交&#xff0c;上地铁&#xff0c;坐电梯&#xff0c;使得弱网测试显得尤为重要。…

作者头像 李华
网站建设 2025/12/25 14:29:22

观察者模式:从理论到生产实践

观察者模式深度解析&#xff1a;从理论到生产实践&#xff0c;Spring都在用的设计模式 观察者模式UML类图 在软件开发中&#xff0c;我们经常需要实现”一个对象状态变化&#xff0c;多个对象自动更新”的场景。比如用户注册成功时&#xff0c;需要发送欢迎邮件、赠送积分、记录…

作者头像 李华