【Zabbix】

文章目录


一、

Zabbix是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

1、系统环境准备

  • 关闭 SELinux
bash 复制代码
# 临时关闭
setenforce 0

# 永久关闭
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  • 配置防火墙
bash 复制代码
# 开放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 官方仓库
bash 复制代码
# 使用官方通用最新版本链接(永远指向最新的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数据库
bash 复制代码
mysql -u root -p
  • 执行SQL语句
bash 复制代码
-- 创建数据库(必须使用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 初始数据库结构
bash 复制代码
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix

4、Zabbix服务器配置

  • 编辑 Zabbix 服务器主配置文件
bash 复制代码
vim /etc/zabbix/zabbix_server.conf
bash 复制代码
# 数据库名称
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 服务器并设置开机自启
bash 复制代码
systemctl enable --now zabbix-server
systemctl status zabbix-server

5、Nginx 与 PHP 配置

  • 编辑 Zabbix Nginx 配置文件
bash 复制代码
vim /etc/nginx/conf.d/zabbix.conf
  • 修改以下内容(替换your_server_ip为您服务器的实际 IP 地址或域名)
bash 复制代码
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 要求
bash 复制代码
vim /etc/php-fpm.d/www.conf
  • 修改以下 PHP-FPM 参数
bash 复制代码
; 用户和组(与Nginx运行用户一致)
user = nginx
group = nginx

; 监听套接字权限
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
  • 编辑 PHP 主配置文件
bash 复制代码
vim /etc/php.ini
bash 复制代码
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
  • 重启相关服务
bash 复制代码
systemctl restart php-fpm nginx
systemctl enable php-fpm nginx
  • 访问 Zabbix 前端
bash 复制代码
用户名 Admin
密码 zabbix

6、添加被监控对象

  • 新建一台虚拟机用于被监控端
  • 在被监控端(192.168.13.135)安装配置 Zabbix Agent2
bash 复制代码
# 安装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
bash 复制代码
dnf install -y zabbix-agent2 zabbix-selinux-policy
  • 配置 Zabbix Agent2修改以下参数
bash 复制代码
vim /etc/zabbix/zabbix_agent2.conf
bash 复制代码
# 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 并设置开机自启
bash 复制代码
systemctl enable --now zabbix-agent2
systemctl status zabbix-agent2
  • 配置被监控端防火墙
bash 复制代码
# 开放Zabbix Agent端口10050
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload

7、在 Zabbix 前端正确添加主机

  • 添加被监控对象
  • 查看监控数据
  • 模拟 CPU 飙升场景 使用专门的 CPU 压力测试工具
bash 复制代码
# 安装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)
相关推荐
枕星而眠1 小时前
C++面向对象核心:类间关系与继承深度解析
运维·开发语言·c++·后端
FBI HackerHarry浩1 小时前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
qq_452396231 小时前
第十一篇:《Docker Compose:多容器应用编排入门》
运维·docker·容器
Geoking.1 小时前
Docker安装Nacos指南
运维·docker·容器
梦仔生信进阶1 小时前
【本地数据传服务器命令】小文件Xftp,大文件用它更高效!
运维·服务器
wanhengidc1 小时前
服务器 数据恢复
运维·服务器·网络·智能手机·云计算
木卫二号Coding1 小时前
第八十五篇-CentOS-7 + Tesla V100 环境下 Docker 容器内编译部署 Qwen3.6-27B-MTP 大模型实战指南
linux·docker·centos
无限进步_1 小时前
【Linux】GDB 调试:定位问题的利器
linux·运维·服务器
流觞 无依1 小时前
CentOS 7 系统中 systemd 组件的 CVE-2022-2526 漏洞修复
linux·运维·centos