当前位置:首页 > 工具 > 正文内容

基于ELK的日志集中化分析系统搭建

访客 工具 2026年5月23日 3

构建统一日志管理平台的必要性

在分布式架构中,各服务节点独立运行,日志分散存储于不同主机。传统通过命令行工具如grep、awk逐个检索日志的方式,在数据量庞大时效率极低,难以实现快速定位问题。为提升运维效率,需建立集中式日志处理体系,具备日志采集、传输、存储、分析与告警能力。

ELK技术栈核心组件解析

  • Elasticsearch:分布式搜索引擎,支持全文检索、实时数据分析和高可用集群部署,提供RESTful API接口。
  • Logstash:数据处理管道,负责从多源收集日志,进行过滤、解析(如使用grok正则)、转换后输出至Elasticsearch。
  • Kibana:可视化前端,用于展示索引数据、创建仪表盘、执行日志搜索及设置告警规则。
  • Filebeat:轻量级日志采集代理,资源占用少,适用于部署在应用服务器上,将日志转发给Logstash或直接发送到Elasticsearch。

实验环境与部署架构

采用两台CentOS 7虚拟机构建单节点ELK集群:

  • 服务端:192.168.80.130(部署Elasticsearch + Logstash + Kibana)
  • 客户端:192.168.80.132(部署Nginx + Filebeat)

基础配置准备

# 配置阿里云yum源
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo

# 禁用SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

# 开放防火墙端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --zone=public --add-port=5044/tcp --permanent
firewall-cmd --reload

安装与配置核心组件

Elasticsearch 部署

# 创建专用用户并授权
useradd elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-6.2.3/

# 切换用户启动服务
su - elasticsearch -c "/usr/local/elasticsearch-6.2.3/bin/elasticsearch -d"

# 验证服务状态
curl localhost:9200

Logstash 日志解析配置

通过自定义grok模式解析Nginx访问日志:

# 编辑grok模式文件
vim /usr/local/logstash-6.2.3/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns

# 添加以下内容
NGINXACCESS %{IP:client_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{URIPATH:request} HTTP/%{NUMBER:http_version}" %{NUMBER:status_code} %{NUMBER:response_bytes} %{QS:referer} %{QS:user_agent} %{QS:x_forwarded_for}

创建Logstash主配置文件:

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{NGINXACCESS}" }
  }
  geoip {
    source => "client_ip"
  }
}

output {
  elasticsearch {
    hosts => ["127.0.0.1:9200"]
  }
}

Kibana 可视化配置

vim /usr/local/kibana-6.2.3-linux-x86_64/config/kibana.yml

# 修改配置项
server.host: "192.168.80.130"
elasticsearch.hosts: ["http://192.168.80.130:9200"]

# 启动Kibana
nohup /usr/local/kibana-6.2.3-linux-x86_64/bin/kibana > nohup.out 2>&1

客户端Filebeat配置

vim /usr/local/filebeat-6.2.3-linux-x86_64/filebeat.yml

# 启用日志采集
enabled: true

# 指定Nginx日志路径
paths:
  - /var/log/nginx/*.log

# 输出目标改为Logstash
output.logstash:
  hosts: ["192.168.80.130:5044"]

# 启动Filebeat
nohup /usr/local/filebeat-6.2.3-linux-x86_64/filebeat -e -c filebeat.yml > nohup.out 2>&1

验证与数据可视化

  1. 在客户端浏览器多次访问 https://192.168.80.132 生成测试日志。
  2. 打开 https://192.168.80.130:5601 进入Kibana界面。
  3. 进入Discover模块,输入索引模式 logstash-*,选择时间字段创建索引模板。
  4. 即可查看解析后的结构化日志,包括访问IP、请求方法、响应状态码等信息。

相关文章

Trojan服务器搭建与配置

一、整体架构(先对齐认知)Clash Meta (PC / iOS / Android)        ↓ TLS   Trojan Server (443)        ↓     InternetTrojan 的核心是: TLS + HTTPS 流量伪装 看起来像正常网站 非常适合...

Tailscale 的详细用法

Tailscale 是一种基于 WireGuard 协议 的 零配置 VPN(虚拟私有网络)服务,让设备之间能够 安全、加密地直接连接,就像它们在同一个本地网络一样。它的核心特点是 简单、安全、跨平台。Tailscale 非常适合 没有公网 IP、两台电脑不在同一局域网 的场景。 简单来说,Tailscale 是什么?Tailscale 是一款让你的各种设备(电脑、服务器、手机...

Clash Tun 模式 导致 爱快(iKuai SD-Wan)内网域名无法访问

一、Clash  DNS 配置dns:  enable: true  listen: 0.0.0.0:53  ipv6: true  enhanced-mode: redir-host  nameserver:    - 223.5.5.5    - 223.6.6.6iKuai 内网域名 ...

深入解析Node.js运行环境与异步I/O架构

深入解析Node.js运行环境与异步I/O架构

核心定义与价值Node.js本质上是一个JavaScript运行环境,而非编程语言或应用框架。它赋予了JavaScript脱离浏览器在服务端、命令行工具及网络应用中执行的能力。其核心意义在于:用单一语言打通前后端开发壁垒。基于事件驱动与非阻塞I/O的架构特性,Node.js在处理API网关、实时通信及微服务等I/O密集型场景时表现卓越,已成为现代后端工程的主流选择。浏览器沙箱限制1995年Java...

ADO.NET SQL参数化查询的最佳实践

在 ADO.NET 中执行 SQL 查询时,参数化查询是一种关键的安全措施和性能优化手段。它通过将 SQL 命令和用户提供的数据分开处理,有效防止了 SQL 注入攻击,并有助于数据库缓存执行计划。下面总结了几种常用的参数化查询方式。 1. 使用 SqlParameter 对象(推荐) 这是最推荐的参数化查询方式。通过显式创建 SqlParameter 对象,您可以精确控制参数的类...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。