Zabbix 7.0监控系统

Zabbix 7.0监控系统从零部署到生产实践

Zabbix是企业级开源监控解决方案的首选,支持网络设备、服务器、云资源等全方位监控。2025年发布的Zabbix 7.0带来了重大更新:原生Prometheus集成、增强的Kubernetes监控和全新的Web界面。本文基于Zabbix 7.0 LTS版本,提供完整的部署与配置指南。


zabbix.png

一、Zabbix 7.0新特性概览

  • 原生Prometheus集成: 无需额外组件即可抓取Prometheus指标

  • 增强的K8s监控: 自动发现Pod、Service、Node等资源

  • 新Web UI: 基于React重构的前端界面,响应式设计

  • 改进的高可用: 原生支持Zabbix server主备切换

  • AI告警压缩: 内置机器学习算法减少告警风暴

二、环境规划

组件 推荐配置 说明
Zabbix Server 4核8G, 100GB SSD 核心服务,建议独立部署
MySQL/PostgreSQL 8核16G, 500GB SSD 数据库,和历史数据存储
Zabbix Proxy 2核4G, 50GB 分布式监控,按区域部署
Agent/Agent2 被监控节点安装 采集指标

三、部署Zabbix Server(CentOS 9 / Rocky Linux 9)

3.1 安装Zabbix仓库

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm
dnf clean all

3.2 安装Server + 前端 + Agent

dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent2 zabbix-sql-scripts -y
# 或者使用PostgreSQL
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-agent2 -y

3.3 配置数据库(MySQL)

# 创建数据库
mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@2026!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
QUIT
# 导入初始数据
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
mysql -u root -p
SET GLOBAL log_bin_trust_function_creators = 0;
QUIT

3.4 配置Zabbix Server

vim /etc/zabbix/zabbix_server.conf
# 关键配置
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@2026!
DBPort=3306
# 历史数据保留时间
HistoryStorageDate=30
TrendStorageDate=365
# 监控主机数
StartPollers=20
StartPingers=10
StartTrappers=20
CacheSize=256M
HistoryCacheSize=128M
HistoryIndexCacheSize=64M
TrendCacheSize=64M
ValueCacheSize=256M

3.5 配置PHP前端

vim /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
php_value[max_execution_time] = 300
php_value[memory_limit] = 256M
php_value[post_max_size] = 32M
php_value[upload_max_filesize] = 16M
php_value[max_input_time] = 300
systemctl restart php-fpm
systemctl restart zabbix-server
systemctl enable zabbix-server

3.6 启动服务

systemctl restart zabbix-server zabbix-agent2 httpd php-fpm
systemctl enable zabbix-server zabbix-agent2 httpd php-fpm
# 检查状态
systemctl status zabbix-server
tail -f /var/log/zabbix/zabbix_server.log
# 防火墙放行
firewall-cmd --add-port=10051/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

浏览器访问 http://服务器IP/zabbix,按向导完成安装。默认管理员:Admin / zabbix

四、Docker Compose部署(快速方案)

# docker-compose.yml
version: '3.8'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbixpass
    volumes:
      - mysql_data:/var/lib/mysql
      - ./zbx_env/usr/share/zabbix-sql-scripts/mysql/server.sql.gz:/docker-entrypoint-initdb.d/server.sql.gz:ro
  
  zabbix-server:
    image: zabbix/zabbix-server-mysql:7.0-alpine
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbixpass
      MYSQL_DATABASE: zabbix
    ports:
      - "10051:10051"
    depends_on:
      - mysql
  
  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:7.0-alpine
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: mysql
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbixpass
      MYSQL_DATABASE: zabbix
      PHP_TZ: Asia/Shanghai
    ports:
      - "80:8080"
    depends_on:
      - mysql
      - zabbix-server
  zabbix-agent:
    image: zabbix/zabbix-agent2:7.0-alpine
    privileged: true
    network_mode: host
    environment:
      ZBX_HOSTNAME: "zabbix-server"
      ZBX_SERVER_HOST: "127.0.0.1"
    restart: unless-stopped
volumes:
  mysql_data:
# 启动
docker compose up -d
docker compose logs -f

五、监控配置实战

5.1 自动发现规则

Zabbix 7.0的自动发现支持多种协议:

配置路径:配置 → 发现 → 创建发现规则
# ICMP扫描发现的设备
名称: ICMP Auto Discovery
IP范围: 192.168.1.0/24
检测: ICMP ping
更新间隔: 3600s
# 自动发现后的动作
配置 → 动作 → 发现动作
条件: 发现状态 = 已发现
操作: 添加到主机组"Network Devices"
     链接模板"Linux by Zabbix agent"

5.2 Prometheus集成(Zabbix 7.0原生支持)

# 添加Prometheus数据源
配置 → 主机 → 创建主机 → 选择"Prometheus"类型
# 示例:监控Node Exporter
Interval: 30s
# 预定义PromQL模板
# CPU使用率
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 内存使用率
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100

5.3 Kubernetes监控

# 使用Zabbix Agent2的Kubernetes插件
kubectl create namespace zabbix-monitoring
# 部署Zabbix Agent2到K8s集群
kubectl apply -f - <

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

This website uses cookies to analyze site traffic and improve your experience. By continuing to use this site, you consent to our use of cookies.