【Zabbix】
·
文章目录
前言
本博客内容的测试与演示环境为 Rocky Linux 10.2 操作系统
一、Zabbix概念
1、Zabbix简介
Zabbix是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
2、主要特点
- 安装配置简单,学习成本较低 不用花费大量时间
- 支持多语言 包括中文
- 开源免费
- 自动发现服务器与网络设备
- 分布式监控web集群中的管理功能
- 通过邮件功能做邮件通知(短信、语音、微信、钉钉)
监控主要功能:
CPU负载、内存使用、磁盘使用率、网络状态、端口监视、日志监视、插件开发自定义
3、应用场景
- 硬件监控
- 系统层监控(如:linux、windows)
- 网络监控
- Java监控
- 应用服务监控(如:tomcat、nginx)
- 数据库监控
- url监控
- VMware监控虚拟机运行状况
4、监控原理
Zabbix agent安装在被监控的主机上,Zabbix agent负责定期收集客户端本地各项数据,并发送至 Zabbix server 端,Zabbix server 收到数据后,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。当 Zabbix监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。
二、部署Zabbix
1、系统环境准备
- 关闭 SELinux
# 临时关闭
setenforce 0
# 永久关闭
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
- 配置防火墙
# 开放HTTP(80)、HTTPS(443)和Zabbix服务器端口(10051)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --reload
2、安装Zabbix
- 安装最新的 Zabbix 7.0 LTS 官方仓库
# 使用官方通用最新版本链接(永远指向最新的7.0 LTS release包)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm
dnf clean all
# 安装Zabbix服务器、前端、代理和SQL脚本
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
# 验证仓库是否正常
dnf list zabbix-server-mysql

3、MariaDB 数据库配置
- 登录MariaDB并创建Zabbix数据库
mysql -u root -p
- 执行SQL语句
-- 创建数据库(必须使用utf8mb4字符集和utf8mb4_bin排序规则)
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
-- 创建Zabbix数据库用户并授权
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbix_password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- 导入 Zabbix 初始数据库结构
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix

4、Zabbix服务器配置
- 编辑 Zabbix 服务器主配置文件
vim /etc/zabbix/zabbix_server.conf

# 数据库名称
DBName=zabbix
# 数据库用户名
DBUser=zabbix
# 数据库密码(替换为您设置的zabbix_password)
DBPassword=zabbix_password
# 数据库套接字路径(Rocky Linux 10默认路径)
DBSocket=/var/lib/mysql/mysql.sock
# 启用日志
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
DebugLevel=3
# 超时设置
Timeout=30
- 启动 Zabbix 服务器并设置开机自启
systemctl enable --now zabbix-server
systemctl status zabbix-server

5、Nginx 与 PHP 配置
- 编辑 Zabbix Nginx 配置文件
vim /etc/nginx/conf.d/zabbix.conf
- 修改以下内容(替换your_server_ip为您服务器的实际 IP 地址或域名)
server {
listen 1031;
server_name 192.168.13.134;
root /usr/share/zabbix;
index index.php;
# 安全设置
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ ^/api/(?!(event|item|graph|image|chart)\.php).*\.php$ {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# 解决Zabbix前端超时问题
fastcgi_read_timeout 300;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1d;
add_header Cache-Control "public, max-age=86400";
}
# 禁止访问敏感文件
location ~ /\.ht {
deny all;
}
location ~ /(conf|include|locale|setup)/ {
deny all;
}
}
- 配置 PHP 参数以满足 Zabbix 要求
vim /etc/php-fpm.d/www.conf
- 修改以下 PHP-FPM 参数
; 用户和组(与Nginx运行用户一致)
user = nginx
group = nginx
; 监听套接字权限
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

- 编辑 PHP 主配置文件
vim /etc/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1
- 重启相关服务
systemctl restart php-fpm nginx
systemctl enable php-fpm nginx
- 访问 Zabbix 前端

用户名 Admin
密码 zabbix


6、添加被监控对象
- 新建一台虚拟机用于被监控端

- 在被监控端(192.168.13.135)安装配置 Zabbix Agent2
# 安装Zabbix 7.0 LTS仓库(与服务器版本一致)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm
dnf clean all
- 安装 Zabbix Agent2
dnf install -y zabbix-agent2 zabbix-selinux-policy

- 配置 Zabbix Agent2修改以下参数
vim /etc/zabbix/zabbix_agent2.conf
# Zabbix服务器的IP地址(您的Zabbix服务器IP)
Server=192.168.13.XXX # 替换为您Zabbix服务器的实际IP
# 主动模式服务器地址
ServerActive=192.168.13.XXX # 同上
# 被监控主机的主机名(必须与Zabbix前端添加的主机名一致)
Hostname=192.168.13.135
# 允许远程命令执行(可选,用于告警动作)
AllowKey=system.run[*]
- 启动 Agent2 并设置开机自启
systemctl enable --now zabbix-agent2
systemctl status zabbix-agent2
- 配置被监控端防火墙
# 开放Zabbix Agent端口10050
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload
7、在 Zabbix 前端正确添加主机
- 添加被监控对象

- 查看监控数据

- 模拟 CPU 飙升场景 使用专门的 CPU 压力测试工具
# 安装stress-ng
dnf install -y stress-ng
# 测试1:打满所有CPU核心,持续60秒
stress-ng --cpu 0 --timeout 60s
# 测试2:打满2个CPU核心,持续5分钟
stress-ng --cpu 2 --timeout 300s
# 测试3:同时测试CPU和内存
stress-ng --cpu 2 --vm 1 --vm-bytes 512M --timeout 300s
- 实时查看最新数据

- 实时查看最新数据

8、配置故障告警
- 设置 CPU 高负载告警

- 修改配置 CPU使用率高于1分钟即告警

- 修改配置 修改CPU使用阈值

- 重新模拟 CPU 飙升
- 观察仪表盘可以看到问题

- 观察 监测-问题可以看到告警

- 停止模拟可以看到问题已解决

9、邮件告警配置
- 163 邮箱端开启 SMTP 服务 并新增客户端授权码(KD3MCDr5ymp8NysF)

- 安装软件并启动 postfix 服务
# 安装mailx
yum install mailx -y
# 安装postfix
yum install postfix -y
# 启动postfix服务
systemctl start postfix
# 设置开机自启
systemctl enable postfix
# 验证服务状态
systemctl status postfix

- 发送测试邮件
echo "这是邮件正文内容" | mail -s "邮件测试标题" yolo_0716@163.com

- 新增媒介类型


- 创建动作

- 创建操作 自定义消息内容


- 给用户添加报警媒介

- 更新报警媒介

- 再次在被监控端模拟 CPU 飙升 稍后可在邮箱中查看告警&恢复邮件
stress-ng --cpu 2 --timeout 300s

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)