ELK Stack 是一套强大的开源日志管理解决方案,由 Elasticsearch、Logstash 和 Kibana 三个核心组件构成,Elasticsearch 负责数据的存储与索引,Logstash 负责日志的收集与处理,Kibana 则提供数据可视化与分析界面,本文将详细介绍如何在 CentOS 7 系统上一步步搭建 ELK 环境,实现高效的日志集中管理。
环境准备
在开始安装之前,请确保您拥有一台干净的 CentOS 7 服务器,并具备 sudo
权限,ELK Stack 对系统资源有一定要求,特别是内存,建议至少分配 4GB RAM,需要确保服务器的防火墙配置正确,开放必要的端口。
组件 | 默认端口 | 作用 |
---|---|---|
Elasticsearch | 9200 (HTTP), 9300 (TCP) | RESTful API 和节点间通信 |
Kibana | 5601 | Web 访问端口 |
Logstash | 9600 (API), 5044 (Beats input) | API 监听和接收 Beats 数据 |
安装 Java 环境
Elasticsearch 和 Logstash 均运行在 Java 环境之上,第一步是安装 Java,推荐安装 OpenJDK 11,它是 ELK 7.x 版本的官方支持版本。
# 更新 yum 包索引 sudo yum update -y # 安装 OpenJDK 11 sudo yum install java-11-openjdk java-11-openjdk-devel -y # 验证 Java 版本 java -version
安装成功后,您应该能看到类似 openjdk version "11.0.xx"
的输出。
安装 Elasticsearch
我们将通过 Elasticsearch 官方提供的 Yum 仓库来安装,这样可以方便地进行后续的更新与管理。
导入 GPG 公钥并添加仓库
# 导入 Elasticsearch PGP 密钥 sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # 创建仓库文件 sudo vim /etc/yum.repos.d/elasticsearch.repo
在打开的文件中,添加以下内容:
[elasticsearch] 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=0 autorefresh=1 type=rpm-md
安装并配置 Elasticsearch
# 安装 Elasticsearch sudo yum install --enablerepo=elasticsearch elasticsearch -y
安装完成后,需要修改其主配置文件
/etc/elasticsearch/elasticsearch.yml
:sudo vim /etc/elasticsearch/elasticsearch.yml
找到并修改以下关键配置项:
# 集群名称,同一集群内的节点名称需保持一致 cluster.name: my-application # 节点名称,每个节点应唯一 node.name: node-1 # 设置数据存储路径 path.data: /var/lib/elasticsearch # 设置日志存储路径 path.logs: /var/log/elasticsearch # 锁定内存,以防交换 bootstrap.memory_lock: true # 网络主机,设置为 0.0.0.0 允许外部访问,生产环境建议配置具体IP或内网IP network.host: localhost # HTTP 端口 http.port: 9200
启动并设置开机自启
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
验证安装
等待几秒钟让服务完全启动,然后使用
curl
命令测试:curl -X GET "localhost:9200"
如果看到类似以下的 JSON 响应,说明 Elasticsearch 已成功运行。
{ "name" : "node-1", "cluster_name" : "my-application", "cluster_uuid" : "xxxxxxxxxxxxxxxxxxxx", "version" : { // ... 版本信息 ... }, "tagline" : "You Know, for Search" }
安装 Kibana
Kibana 的安装过程与 Elasticsearch 类似。
安装 Kibana
sudo yum install --enablerepo=elasticsearch kibana -y
配置 Kibana
编辑配置文件
/etc/kibana/kibana.yml
:sudo vim /etc/kibana/kibana.yml
修改以下配置:
# Kibana 服务监听的端口 server.port: 5601 # Kibana 服务监听的主机地址,允许外部访问 server.host: "0.0.0.0" # Elasticsearch 的地址 elasticsearch.url: "http://localhost:9200"
启动并设置开机自启
sudo systemctl start kibana sudo systemctl enable kibana
您可以通过浏览器访问
http://<your_server_ip>:5601
来查看 Kibana 的欢迎界面。
安装 Logstash
Logstash 是数据处理管道,负责从各种来源收集数据,进行转换,然后发送到 Elasticsearch。
安装 Logstash
sudo yum install --enablerepo=elasticsearch logstash -y
创建配置文件
Logstash 的配置文件位于
/etc/logstash/conf.d/
目录下,我们创建一个简单的配置,用于接收 Beats 数据并发送到 Elasticsearch。sudo vim /etc/logstash/conf.d/beats-input.conf
input { beats { port => 5044 } } output { elasticsearch { hosts => ["localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }
这个配置定义了一个
beats
输入,监听 5044 端口,并将接收到的数据输出到 Elasticsearch,索引名称按天分割。启动并设置开机自启
sudo systemctl start logstash sudo systemctl enable logstash
至此,ELK 核心组件已全部安装并运行,为了收集服务器上的日志,通常还需要部署 Filebeat 或 Metricbeat 等轻量级数据收集器,它们将日志发送给 Logstash 进行处理,整个 ELK Stack 现在已经准备就绪,等待接收数据,并通过 Kibana 进行强大的可视化分析。
相关问答FAQs
问题1:为什么我无法通过外部 IP 访问 Kibana 或 Elasticsearch?
解答: 这通常由两个原因导致,检查防火墙设置,CentOS 7 默认使用 firewalld
,您需要开放相应端口,开放 Kibana 的 5601 端口:
sudo firewall-cmd --permanent --add-port=5601/tcp sudo firewall-cmd --reload
检查配置文件中的 network.host
(Elasticsearch)和 server.host
(Kibana)设置,如果它们被设置为 localhost
或 0.0.1
,服务将只监听本地回环地址,无法从外部访问,请将其修改为服务器的内网 IP 或 0.0.0
(允许所有接口访问,生产环境需谨慎),然后重启服务。
问题2:Logstash 服务启动失败或非常缓慢,我该如何排查?
解答: Logstash 启动问题通常与配置文件语法错误或资源不足有关,查看 Logstash 的日志文件,它位于 /var/log/logstash/logstash-plain.log
,日志中通常会包含详细的错误信息,指明配置文件中的哪一行出了问题,您可以使用 Logstash 自带的命令来测试配置文件的语法是否正确,而无需启动整个服务:
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings=/etc/logstash -f /etc/logstash/conf.d/your-config-file.conf --config.test_and_exit
这个命令会检查指定配置文件的语法并报告结果,如果语法正确但启动仍然缓慢,请检查服务器的内存和 CPU 资源是否充足,因为 Logstash 在处理大量数据时是资源密集型应用。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复