ELK 与 Zabbix 系统部署及核心信息总结(增强版)
一、ELK 企业日志分析系统
(一)核心概述
ELK 是 Elastic 技术栈的核心组合(Elasticsearch + Logstash + Kibana),后续演进为 Elastic Stack(新增 Beats 轻量数据采集器),提供日志采集 - 处理 - 存储 - 分析 - 可视化的全链路解决方案,支持 PB 级日志实时处理,广泛应用于互联网、金融、政务等行业的日志审计、故障排查、业务监控等场景。
-
Elasticsearch(ES):基于 Lucene 的分布式搜索分析引擎,采用分片(Shard)与副本(Replica)机制保证高可用,支持横向扩展,核心特性包括:
-
倒排索引:实现全文检索,支持模糊匹配、短语查询、范围查询等。
-
聚合分析:提供桶聚合、指标聚合、管道聚合,支持多维度数据统计。
-
高并发:默认支持数千 QPS,通过集群扩容可支撑万级 QPS。
-
-
Logstash :开源数据处理管道,支持 200+ 输入插件(File、Syslog、Kafka 等)、100+ 过滤插件(Grok、Date、GeoIP 等)、50+ 输出插件(ES、Redis、File 等),核心优势是数据清洗能力强,可将非结构化日志(如 Apache 原始日志)转换为结构化 JSON 格式。
-
Kibana:ES 的可视化前端工具,提供五大核心模块:
-
Discover:日志实时检索与筛选,支持多索引模式切换。
-
Visualize:拖拽式生成图表(柱状图、折线图、饼图、热力图等)。
-
Dashboard:自定义仪表盘,支持多图表联动与定时刷新。
-
Timelion:时间序列数据分析,支持复杂数学运算与趋势预测。
-
Dev Tools:ES 命令行工具,支持直接执行 DSL 语句调试。
-
-
Beats(补充组件):轻量级数据采集器(Filebeat、Metricbeat、Packetbeat 等),占用资源低(CPU 使用率 %),适合部署在边缘节点,替代 Logstash 完成数据采集,再通过 Logstash 或直接向 ES 传输数据,优化采集链路性能。
(二)部署环境与硬件要求
| 主机 | 操作系统 | 主机名 | IP 地址 | 主要软件 | 硬件配置建议 | 网络要求 |
|---|---|---|---|---|---|---|
| 服务器 | Centos7.9 | node1 | 192.168.108.41 | Elasticsearch、Kibana | 8C16G、500G SSD(日志存储) | 千兆网卡,集群内通信带宽 ≥1Gbps |
| 服务器 | Centos7.9 | node2 | 192.168.108.42 | Elasticsearch | 8C16G、500G SSD | 同节点 1 |
| 服务器 | Centos7.9 | apache | 192.168.108.43 | Logstash、Apache、Filebeat | 4C8G、200G HDD | 可访问 node1/node2 的 9200 端口 |
| 可选服务器 | Centos7.9 | beats-node | 192.168.108.44 | Filebeat、Metricbeat | 2C4G、100G HDD | 可访问 ES 集群与 Logstash |
(三)关键部署步骤(细化版)
- Elasticsearch 集群配置
-
环境预处理:
-
关闭防火墙(
systemctl stop firewalld && systemctl disable firewalld)与 SELinux(setenforce 0,修改/etc/selinux/config永久关闭)。 -
配置内核参数:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf(ES 内存映射需求),sysctl -p生效。 -
配置文件描述符:
echo "* soft nofile 65535" >> /etc/security/limits.conf,echo "* hard nofile 65535" >> /etc/security/limits.conf。
-
-
安装配置:
-
导入 Elastic 官方 GPG 密钥:
rpm --import ``https://artifacts.elastic.co/GPG-KEY-elasticsearch。 -
配置 YUM 源:创建
/etc/yum.repos.d/elastic.repo,添加 ES 与 Kibana 源(版本建议 7.x 稳定版)。 -
安装 ES:
yum install elasticsearch-7.17.0 -y,修改配置文件/etc/elasticsearch/elasticsearch.yml:cluster.name: elk-cluster # 集群名称,所有节点需一致
node.name: node1 # 节点名称,唯一
path.data: /var/lib/elasticsearch # 数据目录
path.logs: /var/log/elasticsearch # 日志目录
network.host: 0.0.0.0 # 绑定所有网卡
http.port: 9200 # HTTP 端口
discovery.seed_hosts: ["192.168.108.41", "192.168.108.42"] # 集群节点IP
cluster.initial_master_nodes: ["node1", "node2"] # 初始主节点候选
-
-
授权目录:
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch。 -
启动服务:
systemctl daemon-reload && systemctl start elasticsearch && systemctl enable elasticsearch。 -
验证集群:
curl -X GET ``http://192.168.108.41:9200/_cluster/health,状态为green表示集群健康。
-
插件安装:
-
elasticsearch-head:
npm install -g grunt-cli && git clone ``https://github.com/mobz/elasticsearch-head.git`` && cd elasticsearch-head && npm install && grunt server,访问http://node1:9100查看集群状态。 -
IK 分词器(中文支持):
./bin/elasticsearch-plugin install ``https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.0/elasticsearch-analysis-ik-7.17.0.zip,重启 ES 生效。
-
- Logstash 部署与配置
-
安装:
yum install logstash-7.17.0 -y,建立软连接:ln -s /usr/share/logstash/bin/logstash /usr/bin/。 -
基础配置(Apache 日志采集示例):
- 创建配置文件
/etc/logstash/conf.d/apache.conf:
- 创建配置文件
bash
input {
file {
path => "/var/log/httpd/access\_log" # Apache 访问日志路径
start\_position => "beginning" # 从文件开头读取
sincedb\_path => "/dev/null" # 禁用 sincedb,每次重启重新读取
type => "apache-access" # 日志类型标识
}
file {
path => "/var/log/httpd/error\_log"
start\_position => "beginning"
sincedb\_path => "/dev/null"
type => "apache-error"
}
}
filter {
if \[type] == "apache-access" {
grok {
match => { "message" => '%{IPORHOST:client\_ip} %{USER:ident} %{USER:auth} \\\[%{HTTPDATE:timestamp}\\] "%{WORD:method} %{URIPATH:uri\_path}(?:%{URIPARAM:uri\_param})? %{HTTPVERSION:http\_version}" %{NUMBER:status} %{NUMBER:body\_bytes\_sent} "%{DATA:referrer}" "%{DATA:user\_agent}"' }
}
date {
match => \[ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] # 解析时间戳
target => "@timestamp" # 覆盖默认时间字段
}
mutate {
convert => { "status" => "integer" } # 转换字段类型
convert => { "body\_bytes\_sent" => "integer" }
}
}
}
output {
elasticsearch {
hosts => \["http://192.168.108.41:9200", "http://192.168.108.42:9200"]
index => "apache-access-%{+YYYY.MM.dd}" # 按日期生成索引
}
stdout { codec => rubydebug } # 控制台输出调试(可选)
}
- 启动与验证:
systemctl start logstash && systemctl enable logstash,查看日志tail -f /var/log/logstash/logstash-plain.log,无报错则正常运行。
- Kibana 部署与可视化配置
- 安装:
yum install kibana-7.17.0 -y,修改配置文件/etc/kibana/kibana.yml:
bash
server.port: 5601
server.host: "0.0.0.0" # 允许外部访问
elasticsearch.hosts: \["http://192.168.108.41:9200", "http://192.168.108.42:9200"]
kibana.index: ".kibana" # Kibana 自身数据存储索引
i18n.locale: "zh-CN" # 中文界面(7.x 版本支持)
-
启动服务:
systemctl start kibana && systemctl enable kibana,访问http://node1:5601进入界面。 -
进阶配置:
-
创建索引模式:Management → Index Patterns → Create index pattern,输入
apache-access-*,选择时间字段@timestamp,完成创建。 -
制作仪表盘:Visualize → Create visualization → 选择图表类型(如柱状图),配置 X 轴为
status(HTTP 状态码),Y 轴为count(数量),保存后添加到 Dashboard,设置自动刷新周期(如 10s)。 -
配置告警:通过 Watcher 插件(需 ES 商业版或基础版),设置日志异常阈值(如 5xx 状态码占比 >10% 时告警),对接邮件、Slack 等渠道。
-
(四)核心功能与实战场景
- 日志故障排查 :通过 Kibana Discover 检索关键字(如
error、timeout),结合时间范围筛选,快速定位应用报错日志,示例 DSL 查询:
bash
{
"query": {
"bool": {
"must": \[
{ "match": { "message": "error" } },
{ "range": { "@timestamp": { "gte": "now-1h", "lte": "now" } } }
]
}
}
}
-
业务数据分析:统计 Apache 访问 Top10 IP、热门接口、用户终端分布,通过饼图、条形图可视化,辅助业务决策。
-
安全审计:收集系统日志(/var/log/secure),监控 SSH 登录失败、sudo 操作等行为,生成安全审计报表。
-
常见问题排查:
-
ES 启动失败:检查内存是否充足(默认占用 1G 堆内存,可修改
/etc/elasticsearch/jvm.options调整-Xms/-Xmx)、内核参数vm.max_map_count是否配置。 -
Logstash 采集延迟:优化配置(如增加
workers线程数)、使用 Filebeat 替代直接采集、开启 Logstash 持久化队列。 -
Kibana 无法连接 ES:检查网络连通性、ES 集群状态、Kibana 配置文件中的 ES 地址是否正确。
-
二、Zabbix 监控系统
(一)核心概述
Zabbix 是一款开源企业级监控系统(最新稳定版 6.4),支持分布式监控 、自动化发现 、灵活告警,可监控对象包括:网络设备(交换机、路由器)、服务器(CPU、内存、磁盘)、应用程序(MySQL、Nginx、Java)、云资源(AWS、阿里云)等,适用于 IT 基础设施全栈监控,支持百万级监控指标采集。
(二)架构组件与工作流程
1. 核心组件
-
Zabbix Server:核心中枢,负责接收 Agent 数据、处理监控逻辑、触发告警、存储数据,支持集群部署(Zabbix Server Cluster)提升可用性。
-
Database:存储监控数据(历史数据、趋势数据)、配置信息(主机、模板、触发器),推荐使用 MariaDB 10.6+ 或 PostgreSQL 14+,支持分区表(按时间分区)优化查询性能。
-
Zabbix Web 界面:基于 PHP + Nginx/Apache 开发,提供可视化管理界面,支持角色权限控制(RBAC)、自定义仪表盘。
-
Zabbix Proxy:代理服务器,分担 Server 负载,适用于跨机房、大规模监控场景,支持主动模式(Proxy 主动向 Server 上报数据)和被动模式(Server 主动从 Proxy 拉取数据)。
-
Zabbix Agent/Agent2:部署在被监控主机,Agent 基于 C 语言开发(轻量),Agent2 基于 Go 语言开发(支持更多插件、性能更优),支持主动监控(Agent 主动推送数据)和被动监控(Server 主动查询数据)。
-
Zabbix Sender:用于主动发送数据到 Server/Proxy,适用于脚本监控场景(如自定义业务指标采集)。
-
Zabbix Get:用于从 Server/Proxy 主动获取 Agent 数据,适用于调试。
2. 工作流程
-
管理员通过 Web 界面配置监控主机、关联模板(包含监控项、触发器、图形)。
-
Agent 按配置周期采集监控数据,通过主动 / 被动模式发送给 Server/Proxy。
-
Server 接收数据后,存储到 Database,并检查是否满足触发器条件(如 CPU 使用率 >80% 持续 5 分钟)。
-
若满足触发条件,Server 按配置的告警媒介(邮件、短信、钉钉)发送告警通知。
-
管理员通过 Web 界面查看监控数据、处理告警、生成报表。
(三)部署环境与硬件要求
| 主机名 | IP 地址 | 功能 | 操作系统 | 主要软件 | 硬件配置建议 | 网络要求 |
|---|---|---|---|---|---|---|
| zabbix-server | 192.168.108.50 | Zabbix Server + Web 界面 | Centos7.9 | Zabbix Server 6.4、Nginx 1.20、MariaDB 10.6、PHP 7.4 | 8C16G、1TB SSD(监控数据存储) | 开放 80(Web)、10051(Server 端口) |
| mysql001 | 192.168.108.51 | 被监控主机(MySQL) | Centos7.9 | Zabbix Agent2 6.4、MySQL 8.0 | 4C8G、500G HDD | 开放 10050(Agent 端口),可访问 Server 10051 端口 |
| zabbix-proxy(可选) | 192.168.108.52 | Zabbix Proxy | Centos7.9 | Zabbix Proxy 6.4、SQLite3(小型环境) | 4C8G、200G SSD | 可访问 Server 10051 端口、被监控主机 10050 端口 |
(四)关键部署步骤(细化版)
- LNMP 架构搭建(Zabbix Server 依赖)
-
安装 Nginx:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx -y
systemctl start nginx && systemctl enable nginx
firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload
-
安装 MariaDB:
bash
curl -sS https://downloads.mariadb.com/MariaDB/mariadb\_repo\_setup | sudo bash
yum install MariaDB-server MariaDB-client -y
systemctl start mariadb && systemctl enable mariadb
\# 初始化数据库(设置root密码、删除空用户、禁用远程root登录)
mysql\_secure\_installation
\# 创建Zabbix数据库并授权
mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4\_unicode\_ci;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
GRANT ALL PRIVILEGES ON zabbix.\* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
exit
- 安装 PHP:
bash
yum install epel-release -y
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php74w php74w-fpm php74w-mysql php74w-gd php74w-xml php74w-json php74w-mbstring php74w-bcmath php74w-zip -y
\# 配置PHP
sed -i 's/short\_open\_tag = Off/short\_open\_tag = On/' /etc/php.ini
sed -i 's/max\_execution\_time = 30/max\_execution\_time = 300/' /etc/php.ini
sed -i 's/memory\_limit = 128M/memory\_limit = 512M/' /etc/php.ini
sed -i 's/post\_max\_size = 8M/post\_max\_size = 16M/' /etc/php.ini
sed -i 's/upload\_max\_filesize = 2M/upload\_max\_filesize = 8M/' /etc/php.ini
sed -i 's/;date.timezone =/date.timezone = Asia/Shanghai/' /etc/php.ini
systemctl start php-fpm && systemctl enable php-fpm
-
配置 Nginx 对接 PHP:
创建
/etc/nginx/conf.d/zabbix.conf:
bash
server {
listen 80;
server\_name zabbix-server;
root /usr/share/zabbix;
index index.php;
access\_log /var/log/nginx/zabbix-access.log;
error\_log /var/log/nginx/zabbix-error.log;
location / {
try\_files \$uri \$uri/ =404;
}
location \~ \\.php\$ {
fastcgi\_pass 127.0.0.1:9000;
fastcgi\_index index.php;
fastcgi\_param SCRIPT\_FILENAME \$document\_root\$fastcgi\_script\_name;
include fastcgi\_params;
}
}
重启 Nginx:systemctl restart nginx。
- Zabbix Server 部署
- 安装 Zabbix 源与依赖:
bash
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86\_64/zabbix-release-6.4-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf -y
- 导入数据库脚本:
bash
zcat /usr/share/doc/zabbix-server-mysql\*/create.sql.gz | mysql -u zabbix -p zabbix
-
配置 Zabbix Server:
修改
/etc/zabbix/zabbix_server.conf:
bash
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@123 # 对应数据库授权密码
LogFile=/var/log/zabbix/zabbix\_server.log
PidFile=/var/run/zabbix/zabbix\_server.pid
SocketDir=/var/run/zabbix
- 启动服务:
bash
systemctl start zabbix-server && systemctl enable zabbix-server
-
Web 界面初始化:
访问
http://192.168.108.50,按向导完成配置:
-
检查依赖(全部通过)→ 输入数据库信息(用户 zabbix,密码 Zabbix@123)→ 配置 Server 名称与端口 → 完成安装。
-
登录:默认账号 Admin,密码 zabbix(建议登录后修改密码)。
- Agent2 部署与主机监控配置
- 在被监控主机(mysql001)安装 Agent2:
bash
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86\_64/zabbix-release-6.4-1.el7.noarch.rpm
yum install zabbix-agent2 zabbix-agent2-plugin-mysql -y
-
配置 Agent2:
修改
/etc/zabbix/zabbix_agent2.conf:
bash
Server=192.168.108.50 # Zabbix Server IP
ServerActive=192.168.108.50 # 主动模式下的 Server IP
Hostname=mysql001 # 必须与 Web 界面配置的主机名一致
LogFile=/var/log/zabbix/zabbix\_agent2.log
PidFile=/var/run/zabbix/zabbix\_agent2.pid
- 启动服务:
bash
systemctl start zabbix-agent2 && systemctl enable zabbix-agent2
firewall-cmd --permanent --add-port=10050/tcp && firewall-cmd --reload
- Web 界面添加主机:
-
配置 → 主机 → 创建主机:输入主机名(mysql001)、可见名称、IP 地址(192.168.108.51)。
-
模板 → 链接模板:搜索并添加
Template DB MySQL(MySQL 监控模板)、Template OS Linux(Linux 系统监控模板)。 -
点击添加,等待 1-2 分钟,查看主机状态为 "已启用"、可用性为 "绿色",表示监控正常。
- 告警配置(进阶版)
- 配置邮件告警(基于 QQ 邮箱):
-
安装 mailx:
yum install mailx -y。 -
配置邮箱:
vi /etc/mail.rc,添加末尾:
bash
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxx # QQ 邮箱 SMTP 授权码
set smtp-auth=login
set ssl-verify=ignore
- 测试邮件发送:
echo "Zabbix 测试邮件" | mailx -s "Zabbix Alarm Test" ``recipient@xxx.com。
- Zabbix 告警媒介配置:
- 管理 → 报警媒介类型 → 创建媒体类型:
-
名称:QQ 邮件告警
-
类型:脚本
-
脚本名称:
sendmail.sh -
脚本参数:
{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}
- 编写脚本:
vi /usr/lib/zabbix/alertscripts/``sendmail.sh,添加:
bash
\#!/bin/bash
TO=\$1
SUBJECT=\$2
MESSAGE=\$3
echo "\$MESSAGE" | mailx -s "\$SUBJECT" \$TO
授权:chmod +x /usr/lib/zabbix/alertscripts/``sendmail.sh,chown zabbix:zabbix /usr/lib/zabbix/alertscripts/``sendmail.sh。
- 配置触发器与动作:
- 配置 → 主机 → mysql001 → 触发器 → 创建触发器:
-
名称:MySQL 服务下线
-
表达式:
{mysql001:net.tcp.service[mysql,3306].last()}<>1(3306 端口未监听) -
严重级别:灾难
- 配置 → 动作 → 创建动作:
-
名称:MySQL 服务告警动作
-
条件:触发器 = MySQL 服务下线
-
操作:发送到用户(添加 Admin 用户,选择 QQ 邮件告警媒介),设置告警内容(包含主机名、触发器名称、告警时间)。
-
恢复操作:发送恢复通知(包含恢复时间、持续时长)。
(五)核心功能与实战场景
-
多维度监控:
-
系统监控:CPU 使用率、内存使用率、磁盘空间、磁盘 I/O、网络带宽。
-
应用监控:MySQL 连接数、QPS、慢查询数;Nginx 并发连接数、请求数;Java 堆内存、线程数(基于 JMX)。
-
自定义监控:通过脚本采集业务指标(如订单量、接口响应时间),通过 Zabbix Sender 上报,示例脚本:
-
bash
\#!/bin/bash
\# 采集接口响应时间
RESPONSE\_TIME=\$(curl -o /dev/null -s -w "%{time\_total}" http://api.xxx.com/health)
\# 上报到 Zabbix Server
zabbix\_sender -z 192.168.108.50 -s "mysql001" -k "api.response.time" -o "\$RESPONSE\_TIME"
-
自动化运维:
-
自动发现:配置网络发现规则(基于 IP 段),自动发现新主机并关联模板。
-
自动注册:Agent 启动后主动向 Server 注册,自动完成主机添加(适用于批量部署场景)。
-
动作执行:触发告警时自动执行脚本(如 MySQL 服务下线时自动重启),配置动作的 "操作"→"远程命令":
systemctl restart mysqld。
-
-
报表与可视化:
-
内置报表:可用性报表、响应时间报表、告警统计报表,支持导出 PDF。
-
自定义仪表盘:添加监控图形(如 CPU 趋势图、MySQL QPS 图)、拓扑图(展示主机与网络设备连接关系)。
-
大屏展示:通过 Zabbix Screen 或第三方工具(如 Grafana)制作监控大屏。
-
-
常见问题排查:
-
Agent 无法连接 Server:检查防火墙端口(10050/10051)、Agent 配置文件中的 Server IP 是否正确、SELinux 是否关闭。
-
监控项无数据:检查 Agent 服务是否运行、监控项键值是否正确(如
net.tcp.service[mysql,3306])、Server 日志(/var/log/zabbix/zabbix_server.log)是否有报错。 -
告警未触发:检查触发器表达式是否正确、动作条件是否匹配、告警媒介是否配置正常、邮件 / 短信是否发送成功。
-
三、两者对比与集成方案
(一)详细对比表
| 特性 | ELK(Elastic Stack) | Zabbix |
|---|---|---|
| 核心用途 | 日志分析、数据检索、业务数据分析 | 基础设施监控、告警通知、自动化运维 |
| 数据类型 | 非结构化 / 半结构化数据(日志、日志) | 结构化数据(监控指标、状态值) |
| 数据处理能力 | 支持 PB 级日志存储与检索,处理延迟低(秒级) | 支持百万级监控指标采集,处理延迟(毫秒级) |
| 可视化能力 | 强(拖拽式图表、多维度聚合、自定义仪表盘) | 中(内置图形、拓扑图、基础报表,可集成 Grafana 增强) |
| 告警功能 | 依赖 Watcher 插件(商业版 / 基础版),告警规则配置复杂 | 原生支持灵活告警(多级别、多渠道、动作执行),配置简单 |
| 部署复杂度 | 中高(需配置 ES 集群、Logstash 管道、Kibana 可视化) | 中等(LNMP 架构 + Server/Agent 部署,文档完善) |
| 资源占用 | 高(ES 集群需较多 CPU / 内存 / 磁盘) | 低(Agent 轻量,Server 资源占用适中) |
| 扩展性 | 强(支持横向扩展 ES 集群、添加 Beats 采集器) | 强(支持 Proxy 分布式部署、集群模式) |
| 学习成本 | 中高(需掌握 DSL 查询、Logstash 配置、ES 集群管理) | 中等(需掌握模板配置、触发器表达式、告警动作) |
| 典型场景 | 日志故障排查、安全审计、业务数据分析(如用户行为分析) | 服务器 / 应用可用性监控、资源告警、自动化运维(如自动重启服务) |
| 开源版本限制 | 基础版功能足够,商业版提供 Watcher、机器学习等高级功能 | 完全开源,无核心功能限制,商业支持可选 |
(二)ELK 与 Zabbix 集成方案
ELK 与 Zabbix 并非竞争关系,而是互补关系,可通过以下方式集成,实现 "监控 + 日志" 联动:
- Zabbix 日志监控(通过 ELK 增强):
-
Zabbix 自带日志监控功能(通过
log[]监控项),但检索与可视化能力弱,可将 Zabbix Server/Agent 日志发送到 ELK,通过 Kibana 分析 Zabbix 告警日志、Agent 运行日志,辅助排查 Zabbix 自身问题。 -
配置:在 Zabbix Server 安装 Filebeat,采集
/var/log/zabbix/zabbix_server.log,发送到 ELK,创建 Zabbix 日志索引模式,制作日志分析仪表盘。
- ELK 告警联动 Zabbix:
- 通过 Logstash 输出插件将 ELK 中的日志异常(如应用报错日志)发送到 Zabbix,触发 Zabbix 告警,配置 Logstash 输出:
bash
output {
zabbix {
zabbix\_host => "apache" # Zabbix 中的主机名
zabbix\_server\_host => "192.168.108.50" # Zabbix Server IP
zabbix\_server\_port => 10051
key => "elk.log.error" # Zabbix 中的监控项键值
value => "%{message}" # 日志内容
}
}
- 在 Zabbix 中创建监控项
elk.log.error(类型为字符型),配置触发器(如日志包含Fatal时告警)。
- Zabbix 监控数据导入 ELK 可视化:
-
通过 Zabbix API 导出监控数据(如 CPU 使用率、告警数据),导入到 ELK,结合日志数据制作统一仪表盘,实现 "监控指标 + 日志" 一体化可视化。
-
示例:使用 Python 脚本调用 Zabbix API 获取主机监控数据,通过 Filebeat 发送到 ELK。
(注:文档部分内容可能由 AI 生成)