在CentOS 7上部署ELK(Elasticsearch, Logstash, Kibana)日志分析系统,是构建集中式日志管理平台的常见选择,该技术栈能够高效地收集、存储、分析和可视化来自不同服务器的海量日志数据,本文将详细介绍在CentOS 7环境中安装与配置ELK的完整流程,帮助您快速搭建一个功能强大的日志分析中心。

准备工作
在开始安装之前,请确保您的系统满足以下基本条件:
- 操作系统:一台全新或已运行的CentOS 7服务器,并具备root或sudo权限。
- Java环境:ELK栈基于Java开发,因此需要安装Java Development Kit (JDK),推荐安装Oracle JDK 1.8或OpenJDK 1.8及以上版本,可以通过
yum install java-1.8.0-openjdk-devel -y命令进行安装。 - 网络配置:确保服务器网络通畅,以便下载Elasticsearch官方的软件包。
完成准备工作后,我们就可以开始逐一安装ELK的各个组件。
安装与配置 Elasticsearch
Elasticsearch是ELK栈的核心,负责数据的存储与索引。
导入Elasticsearch的GPG密钥,并添加其YUM仓库。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch cat > /etc/yum.repos.d/elasticsearch.repo << EOF [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 EOF
使用YUM安装Elasticsearch:
yum install --enablerepo=elasticsearch elasticsearch -y
安装完成后,需要对其进行配置,主配置文件位于/etc/elasticsearch/elasticsearch.yml,对于单节点测试环境,主要修改以下两个参数:
# 网络主机,设置为0.0.0.0允许任何IP访问,生产环境建议绑定内网IP network.host: localhost # HTTP端口,默认为9200 http.port: 9200 # 发现节点列表,单节点设置为自身 discovery.seed_hosts: ["localhost"] # 初始化主节点列表 cluster.initial_master_nodes: ["node-1"]
配置完毕后,启动并设置Elasticsearch开机自启:
systemctl start elasticsearch systemctl enable elasticsearch
通过curl -X GET "localhost:9200"命令验证Elasticsearch是否成功运行,若返回一串包含集群名称、节点ID等信息的JSON数据,则表示安装成功。

安装与配置 Logstash
Logstash作为数据收集和处理引擎,负责从多种来源采集数据,进行过滤和转换,然后发送到Elasticsearch。
安装过程与Elasticsearch类似,直接使用YUM即可:
yum install --enablerepo=elasticsearch logstash -y
Logstash的核心在于其配置文件,它定义了数据处理的流程,配置文件通常位于/etc/logstash/conf.d/目录下,我们创建一个简单的配置文件syslog.conf,用于处理系统日志:
input {
beats {
port => 5044
}
}
filter {
if [fields][logtype] == "syslog" {
grok {
match => { "message" => "%{SYSLOGBASE}" }
}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
} 此配置定义了一个监听5044端口的Beats输入,一个用于解析系统日志格式的过滤器,以及一个将处理后的数据发送到本地Elasticsearch并按日期创建索引的输出。
配置完成后,启动并设置Logstash开机自启:
systemctl start logstash systemctl enable logstash
安装与配置 Kibana
Kibana是ELK的可视化组件,它提供了一个Web界面,用于查询和展示存储在Elasticsearch中的数据。
同样,使用YUM进行安装:
yum install --enablerepo=elasticsearch kibana -y
Kibana的配置文件为/etc/kibana/kibana.yml,主要修改以下两项:

# 服务器主机地址,允许外部访问 server.host: "0.0.0.0" # Elasticsearch服务器地址 elasticsearch.hosts: ["http://localhost:9200"]
配置完成后,启动并设置Kibana开机自启:
systemctl start kibana systemctl enable kibana
至此,ELK栈的核心组件已全部安装并运行,您可以通过浏览器访问http://<您的服务器IP>:5601来打开Kibana界面,首次访问时,需要创建索引模式(例如syslog-*)来开始探索和分析日志数据。
为了方便管理各组件的端口,下表小编总结了它们默认使用的网络端口:
| 组件 | 端口 | 描述 |
|---|---|---|
| Elasticsearch | 9200 | RESTful API接口 |
| Elasticsearch | 9300 | 节点间通信端口 |
| Kibana | 5601 | Web服务端口 |
| Logstash (Beats) | 5044 | 用于接收Filebeat等Beats的数据 |
相关问答FAQs
Q1: Elasticsearch 启动失败,日志提示内存不足,该如何解决?
A1: 这是因为Elasticsearch默认分配的JVM堆内存可能超出了您服务器的可用内存,您需要修改其JVM配置,编辑文件/etc/elasticsearch/jvm.options,找到-Xms和-Xmx参数(初始和最大堆内存),将它们设置为一个合适的值,例如-Xms1g和-Xmx1g(表示1GB),此值不应超过物理内存的50%,并且-Xms与-Xmx的值必须保持一致,保存文件后,重启Elasticsearch服务即可。
Q2: 为什么我无法通过本地浏览器访问 Kibana 界面?
A2: 这通常由两个原因导致,首先是防火墙限制,CentOS 7默认使用firewalld,您需要开放Kibana的5601端口,执行以下命令:firewall-cmd --permanent --add-port=5601/tcpfirewall-cmd --reload
其次是Kibana的配置问题,请检查/etc/kibana/kibana.yml文件中的server.host设置,如果它被设置为localhost,那么您只能从服务器本机访问,若要允许其他机器访问,应将其设置为服务器的内网IP地址或0.0.0,修改后记得重启Kibana服务。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复