ELK企业日志分析系统

文章目录

  • ELK企业日志分析系统
    • [一、ELK 核心组件速览](#一、ELK 核心组件速览)
    • 二、部署环境规划
      • [1. 服务器配置(CentOS 7.9)](#1. 服务器配置(CentOS 7.9))
      • [2. 前置依赖](#2. 前置依赖)
    • 三、分步部署指南
      • [第一步:部署 Elasticsearch 集群(node1 + node2)](#第一步:部署 Elasticsearch 集群(node1 + node2))
        • [1. 基础配置(两节点通用)](#1. 基础配置(两节点通用))
        • [2. 集群验证](#2. 集群验证)
        • [3. 安装 head 插件(可视化管理集群,node1 执行)](#3. 安装 head 插件(可视化管理集群,node1 执行))
      • [第二步:部署 Logstash(apache 节点)](#第二步:部署 Logstash(apache 节点))
        • [1. 安装配置 Logstash](#1. 安装配置 Logstash)
        • [2. 测试 Logstash 连通性](#2. 测试 Logstash 连通性)
      • [第三步:部署 Kibana(node1 节点)](#第三步:部署 Kibana(node1 节点))
    • 四、核心功能验证

ELK企业日志分析系统

在运维工作中,日志是排查故障、监控系统的核心依据,但分散在多台服务器上的日志管理起来十分繁琐。ELK 作为开源日志分析解决方案,通过 Elasticsearch(存储检索)、Logstash(日志采集处理)、Kibana(可视化分析)的组合,实现了日志的集中化、自动化分析,广泛应用于系统监控、安全审计、业务分析等场景。本文精简核心步骤,带你快速搭建 ELK 集群,适合运维新手收藏实操~

一、ELK 核心组件速览

组件 核心角色 核心功能
Elasticsearch(ES) 数据存储与检索引擎 分布式存储海量日志、毫秒级检索、索引分片与高可用
Logstash 日志采集与处理管道 从多源收集日志、过滤格式化(如解析 IP、时间戳)、输出到 ES
Kibana 数据可视化平台 日志查询、图表展示、自定义仪表盘、集群管理

核心工作流程

日志源(服务器/应用) → Logstash(采集 + 过滤)→ Elasticsearch(存储 + 索引)→ Kibana(可视化查询)

二、部署环境规划

1. 服务器配置(CentOS 7.9)

主机名 IP 地址 角色 核心软件 关键端口
node1 192.168.108.41 ES 主节点 + Kibana Elasticsearch 5.5.0、Kibana 5.5.1 9200(ES)、5601(Kibana)
node2 192.168.108.42 ES 从节点 Elasticsearch 5.5.0 9200(ES)
apache 192.168.108.43 日志源 + Logstash Apache、Logstash 5.5.1 80(Apache)、9600(Logstash)

2. 前置依赖

  • 所有节点需安装 JDK 1.8(ES/Logstash 依赖)
  • 关闭防火墙 / 开放相关端口,关闭 SELinux

三、分步部署指南

第一步:部署 Elasticsearch 集群(node1 + node2)

1. 基础配置(两节点通用)
bash 复制代码
# 1. 配置域名解析(/etc/hosts)
echo -e "192.168.108.41 node1\n192.168.108.42 node2" >> /etc/hosts

# 2. 安装 ES RPM 包
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm

# 3. 配置 ES 核心文件(/etc/elasticsearch/elasticsearch.yml)
cat > /etc/elasticsearch/elasticsearch.yml << EOF
cluster.name: my-elk-cluster  # 集群名称(两节点一致)
node.name: $(hostname)        # 节点名称(node1/node2 分别对应)
path.data: /data/elk_data     # 数据存储路径
path.logs: /var/log/elasticsearch/  # 日志路径
network.host: 0.0.0.0         # 允许所有地址访问
http.port: 9200               # 监听端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  # 集群发现
http.cors.enabled: true       # 允许跨域(用于 head 插件)
http.cors.allow-origin: "*"
EOF

# 4. 创建数据目录并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

# 5. 启动 ES 并设置开机自启
systemctl daemon-reload
systemctl enable elasticsearch --now
2. 集群验证
bash 复制代码
# 访问节点状态(任意节点执行)
curl http://192.168.108.41:9200
# 集群健康检查(green 为正常)
curl http://192.168.108.41:9200/_cluster/health?pretty
3. 安装 head 插件(可视化管理集群,node1 执行)
bash 复制代码
# 1. 安装 Node.js 依赖
yum install gcc gcc-c++ make -y
tar xzvf node-v8.2.1.tar.gz -C /opt
cd /opt/node-v8.2.1 && ./configure && make -j4 && make install

# 2. 安装 phantomjs
tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin

# 3. 安装 head 插件
tar xzvf elasticsearch-head.tar.gz -C /usr/local/src
cd /usr/local/src/elasticsearch-head && npm install
npm run start &  # 后台启动,端口 9100

访问 http://192.168.108.41:9100,输入 ES 地址即可管理集群。

第二步:部署 Logstash(apache 节点)

1. 安装配置 Logstash
bash 复制代码
# 1. 安装 Apache(日志源)
yum install httpd -y && systemctl start httpd && systemctl enable httpd

# 2. 安装 Logstash
cd /opt && rpm -ivh logstash-5.5.1.rpm
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/  # 软连接

# 3. 配置系统日志采集(/etc/logstash/conf.d/system.conf)
cat > /etc/logstash/conf.d/system.conf << EOF
input {
  file {
    path => "/var/log/messages"  # 采集系统日志
    type => "system"
    start_position => "beginning"
  }
}
output {
  elasticsearch {
    hosts => ["192.168.108.41:9200"]  # 输出到 ES 集群
    index => "system-%{+YYYY.MM.dd}"  # 索引按日期命名
  }
}
EOF

# 4. 配置 Apache 日志采集(/etc/logstash/conf.d/apache_log.conf)
cat > /etc/logstash/conf.d/apache_log.conf << EOF
input {
  file {
    path => "/etc/httpd/logs/access_log"  # Apache 访问日志
    type => "access"
    start_position => "beginning"
  }
  file {
    path => "/etc/httpd/logs/error_log"   # Apache 错误日志
    type => "error"
    start_position => "beginning"
  }
}
output {
  if [type] == "access" {
    elasticsearch { hosts => ["192.168.108.41:9200"]; index => "apache_access-%{+YYYY.MM.dd}" }
  }
  if [type] == "error" {
    elasticsearch { hosts => ["192.168.108.41:9200"]; index => "apache_error-%{+YYYY.MM.dd}" }
  }
}
EOF

# 5. 启动 Logstash
systemctl start logstash && systemctl enable logstash
2. 测试 Logstash 连通性
bash 复制代码
# 标准输入输出测试(输入内容后按 Ctrl+C 退出)
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

第三步:部署 Kibana(node1 节点)

bash 复制代码
# 1. 安装 Kibana
cd /usr/local/src && rpm -ivh kibana-5.5.1-x86_64.rpm

# 2. 核心配置(/etc/kibana/kibana.yml)
cat > /etc/kibana/kibana.yml << EOF
server.port: 5601          # 监听端口
server.host: "0.0.0.0"     # 允许所有地址访问
elasticsearch.url: "http://192.168.108.41:9200"  # 连接 ES
kibana.index: ".kibana"    # Kibana 索引名
EOF

# 3. 启动 Kibana
systemctl start kibana && systemctl enable kibana

四、核心功能验证

  1. 日志采集验证 :访问 http://192.168.108.43(Apache 主页),生成访问日志,在 Kibana 中查看 apache_access-* 索引数据。
  2. 集群高可用验证:关闭 node2 节点的 ES 服务,查看 Kibana 中数据是否正常访问(依赖 ES 副本机制)。
  3. 可视化测试:在 Kibana 「Visualize」中创建柱状图,统计不同 IP 的访问次数。
相关推荐
小马爱打代码6 小时前
架构设计:搭建 ELK 日志系统
elk
你什么冠军?1 天前
ELK日志
elk
云和数据.ChenGuang1 天前
elk日志运维工程师技术之故障处理
运维·数据库·elk·jenkins·运维工程师
管理大亨3 天前
电商零售ELK应用:五大核心场景解析
大数据·elk·零售
管理大亨3 天前
光伏大棚智慧管理:ELK数据中枢
大数据·运维·elk·elasticsearch
flying robot4 天前
ELK单节点集群配置
运维·elk·jenkins
羊村懒哥4 天前
告别命令行查日志!CentOS 安装 ELK 实现可视化监控
linux·elk·centos
管理大亨5 天前
智慧农业ELK落地方案:数据驱动精准农业
大数据·redis·python·elk·elasticsearch
云和数据.ChenGuang6 天前
运维工程师技术教程之ELK日志监控
运维·服务器·elk·运维技术·数据库运维工程师