在 CentOS 8.2.2004 上部署 ELK 栈实现日志归集
在现代分布式系统中,日志的集中管理和分析至关重要。ELK(Elasticsearch, Logstash, Kibana)是一个强大的日志处理和分析平台,能够帮助我们实现日志的集中管理。在本文中,我将详细介绍如何在 CentOS 8.2.2004 环境下部署 ELK 栈,并在 CentOS 6.6 服务器上使用 Filebeat 收集日志。
环境概述
- 日志归集服务端: CentOS 8.2.2004
- Java 应用服务器: CentOS 6.6
- 日志收集工具: Filebeat
- 日志处理和可视化工具: Elasticsearch, Logstash, Kibana
ELK 栈及 Filebeat 组件介绍
-
Elasticsearch: Elasticsearch 是一个分布式搜索和分析引擎。它在日志归集中起到了日志数据存储和快速检索的核心作用。日志数据被发送到 Elasticsearch 进行索引,随后可以通过 Kibana 快速搜索和可视化。
-
Logstash: Logstash 是一个数据处理管道,能够从多种来源收集数据、解析并进行过滤,然后将处理后的数据发送到 Elasticsearch。它在日志归集中充当数据转换和处理的角色,可以根据需要对日志数据进行丰富的过滤和解析操作。
-
Kibana: Kibana 是一个开源数据可视化工具,专门为与 Elasticsearch 配合使用而设计。它为日志数据提供了图形化的用户界面,可以方便地进行搜索、分析和可视化展示。在日志归集中,Kibana 是前端展示和分析日志数据的主要工具。
-
Filebeat: Filebeat 是一个轻量级的日志收集器,安装在日志来源服务器上(如 Java 应用服务器)。它负责监控日志文件并将日志数据发送到 Logstash 或 Elasticsearch。在日志归集中,Filebeat 是日志数据从来源服务器传输到日志处理平台的入口。
部署步骤概述
-
在 CentOS 8 上安装和配置 ELK 栈
- 安装 Java
- 安装并配置 Elasticsearch
- 安装并配置 Kibana
- 安装并配置 Logstash
-
在 Java 应用服务器(CentOS 6.6)上安装和配置 Filebeat
- 安装 Filebeat
- 配置并启动 Filebeat
步骤 1:在 CentOS 8 上安装和配置 ELK 栈
1. 安装 Java
在 CentOS 8 上安装 OpenJDK 11:
sudo dnf install java-11-openjdk-devel -y
作用: Java 是 Elasticsearch 和 Logstash 运行所必需的基础依赖。Elasticsearch 和 Logstash 都是基于 Java 构建的,因此需要安装 Java 运行时环境(JRE)来支持它们的运行。
2. 安装 Elasticsearch
-
添加 Elasticsearch 官方 GPG 密钥:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
-
创建 Elasticsearch 的 yum 源:
sudo vi /etc/yum.repos.d/elasticsearch.repo
在文件中输入以下内容:
[elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
-
安装 Elasticsearch:
sudo dnf install elasticsearch -y --disablerepo=docker-ce-stable
注意: 如果遇到 Docker YUM 源相关的错误,可以通过禁用 Docker YUM 源来解决。
-
配置 Elasticsearch:
修改配置文件
/etc/elasticsearch/elasticsearch.yml
:sudo vi /etc/elasticsearch/elasticsearch.yml
设置以下内容:
cluster.name: my-elk-cluster node.name: elk-node-1 network.host: 0.0.0.0 discovery.seed_hosts: ["localhost"]
-
启动并设置 Elasticsearch 为开机自启:
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
作用: Elasticsearch 是日志归集的核心存储引擎,它将接收来自 Logstash 或 Filebeat 的日志数据,并对这些数据进行索引和存储。Elasticsearch 支持快速检索和查询,使得我们可以通过 Kibana 快速访问和分析日志数据。
3. 安装 Kibana
-
在 CentOS 8 上安装 Kibana:
sudo dnf install kibana -y
-
配置 Kibana:
修改配置文件
/etc/kibana/kibana.yml
:sudo vi /etc/kibana/kibana.yml
设置以下内容:
server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"]
-
启动并设置 Kibana 为开机自启:
sudo systemctl start kibana sudo systemctl enable kibana
作用: Kibana 为日志数据提供了一个可视化界面。通过 Kibana,我们可以搜索和分析存储在 Elasticsearch 中的日志数据,创建仪表板,生成图表,实时监控系统和应用的运行状态。
4. 安装 Logstash
-
安装 Logstash:
sudo dnf install logstash -y
-
配置 Logstash:
在
/etc/logstash/conf.d/
目录下创建一个配置文件,例如filebeat-input.conf
:sudo vi /etc/logstash/conf.d/filebeat-input.conf
输入以下内容:
input { beats { port => 5044 } } filter { # 这里可以添加一些解析或过滤规则 } output { elasticsearch { hosts => ["http://localhost:9200"] index => "app-logs-%{+YYYY.MM.dd}" } }
-
启动并设置 Logstash 为开机自启:
sudo systemctl start logstash sudo systemctl enable logstash
作用: Logstash 是一个强大的数据处理引擎,它能够处理来自 Filebeat 的日志数据,并进行必要的过滤和解析,然后将处理后的数据传输到 Elasticsearch 进行存储。它的灵活性使得我们可以根据需求对日志数据进行复杂的处理和转换。
步骤 2:在 Java 应用服务器(CentOS 6.6)上安装和配置 Filebeat
1. 安装 Filebeat
下载并安装 Filebeat:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.12.0-x86_64.rpm
sudo rpm -vi filebeat-7.12.0-x86_64.rpm
作用: Filebeat 是一个轻量级的日志转发器,安装在日志来源服务器上(例如你的 Java 应用服务器)。它负责监控指定的日志文件,并将日志数据安全地传输到 Logstash 或 Elasticsearch。在分布式系统中,Filebeat 是日志数据收集的第一步。
2. 配置 Filebeat
修改 Filebeat 配置文件 /etc/filebeat/filebeat.yml
:
sudo vi /etc/filebeat/filebeat.yml
配置 Filebeat 读取 Java 应用日志文件:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/app/*.log # 修改为你的实际日志路径
output.logstash:
hosts: ["<Logstash_Server_IP>:5044"] # 指定 Logstash 的 IP 和端口
3. 启动并设置 Filebeat 为开机自启
-
测试 Filebeat 配置:
sudo filebeat test config
-
启动并设置 Filebeat 为开机自启:
sudo systemctl start filebeat sudo systemctl enable filebeat
作用: 配置并启动 Filebeat 后,它将开始监控指定的日志文件,并将日志数据传输到配置的 Logstash 或 Elasticsearch 节点。这一步确保了日志数据可以
实时、安全地传输到日志处理平台。
步骤 3:验证和调试
1. 验证日志传输
在 Kibana 上访问 http://<Logstash_Server_IP>:5601
,使用 Kibana 的“Discover”功能来查看是否接收到了 Java 应用服务器的日志。
2. 调试
如果日志没有正常传输,可以通过检查 Filebeat、Logstash 和 Elasticsearch 的日志来排查问题:
sudo tail -f /var/log/filebeat/filebeat.log
sudo tail -f /var/log/logstash/logstash-plain.log
sudo tail -f /var/log/elasticsearch/elasticsearch.log
通过这篇文章,我们了解了如何在 CentOS 8.2.2004 上安装和配置 ELK 栈,并使用 Filebeat 从 Java 应用服务器上收集日志数据。这种日志归集方案能够有效地集中管理分布式系统中的日志,为系统运维和故障排查提供了极大的便利。
希望这篇文章对你有所帮助,如果你在配置过程中遇到任何问题,欢迎随时与我交流!