如何在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

相关推荐

  • CentOS编译ffmpeg过程中可能遇到哪些具体问题及解决方法?

    CentOS编译FFmpeg的详细步骤准备环境在CentOS系统中编译FFmpeg之前,需要确保系统环境满足以下要求:CentOS版本:推荐使用CentOS 7或更高版本,系统更新:确保系统已经更新到最新状态,可以使用以下命令更新:sudo yum update -y安装依赖包FFmpeg的编译需要依赖一系列的……

    2026-01-30
    005
  • VMware中安装CentOS7,选择哪种虚拟机类型才正确?

    在虚拟化技术日益普及的今天,VMware与CentOS的组合成为了许多开发者、系统管理员和学习者的首选方案,VMware提供了稳定、功能强大的虚拟化平台,而CentOS 7则以其出色的稳定性、安全性和与Red Hat Enterprise Linux(RHEL)的高度兼容性,成为服务器环境中备受青睐的操作系统……

    2025-10-16
    005
  • CentOS Squid双网卡如何配置实现内外网代理?

    在企业或特定网络环境中,使用一台配备双网卡的CentOS服务器搭建Squid代理是一种常见且高效的架构,这种设置通常用于网络隔离、访问控制、内容缓存和提升安全性,服务器的一个网卡连接外部网络(如互联网),另一个网卡则连接内部局域网,充当内外网之间的网关和代理,本文将详细介绍如何在CentOS系统上,结合双网卡环……

    2025-10-20
    0017
  • CentOS如何访问Windows磁盘里的文件?

    在CentOS系统中访问Windows磁盘是一个常见的需求,尤其是在双系统环境或需要跨平台数据传输的场景中,Windows系统通常使用NTFS或FAT32文件系统,而CentOS作为Linux发行版,默认情况下可能无法直接识别这些文件系统,本文将详细介绍如何在CentOS中挂载和访问Windows磁盘,包括准备……

    2025-11-18
    002

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信