如何在CentOS 7上一步步搭建完整的ELK日志分析系统?

ELK Stack 是一套强大的开源日志管理解决方案,由 Elasticsearch、Logstash 和 Kibana 三个核心组件构成,Elasticsearch 负责数据的存储与索引,Logstash 负责日志的收集与处理,Kibana 则提供数据可视化与分析界面,本文将详细介绍如何在 CentOS 7 系统上一步步搭建 ELK 环境,实现高效的日志集中管理。

如何在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 仓库来安装,这样可以方便地进行后续的更新与管理。

  1. 导入 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
  2. 安装并配置 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
  3. 启动并设置开机自启

    sudo systemctl start elasticsearch
    sudo systemctl enable elasticsearch
  4. 验证安装

    等待几秒钟让服务完全启动,然后使用 curl 命令测试:

    如何在CentOS 7上一步步搭建完整的ELK日志分析系统?

    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 类似。

  1. 安装 Kibana

    sudo yum install --enablerepo=elasticsearch kibana -y
  2. 配置 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"
  3. 启动并设置开机自启

    sudo systemctl start kibana
    sudo systemctl enable kibana

    您可以通过浏览器访问 http://<your_server_ip>:5601 来查看 Kibana 的欢迎界面。

安装 Logstash

Logstash 是数据处理管道,负责从各种来源收集数据,进行转换,然后发送到 Elasticsearch。

  1. 安装 Logstash

    sudo yum install --enablerepo=elasticsearch logstash -y
  2. 创建配置文件

    Logstash 的配置文件位于 /etc/logstash/conf.d/ 目录下,我们创建一个简单的配置,用于接收 Beats 数据并发送到 Elasticsearch。

    如何在CentOS 7上一步步搭建完整的ELK日志分析系统?

    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,索引名称按天分割。

  3. 启动并设置开机自启

    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)设置,如果它们被设置为 localhost0.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 在处理大量数据时是资源密集型应用。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-08 09:20
下一篇 2025-10-08 09:23

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信