igozhang

——

    Zabbix 4 部署

    老笔记整理:Zabbix 4.x 传统 RPM 安装 + MySQL,并补充 docker-compose 部署方式。当前更常见的还有 Helm / 官方容器方案。

    标签: zabbix4_ins

    环境

    项目 说明
    操作系统 CentOS 7.2(原文 cent72)
    监控 Zabbix 4.1 / 4.2 系(仓库示例为 4.2)
    数据库 MySQL 5.6(Compose 示例用 MariaDB)
    编排 docker-compose(另可选 Helm)

    相关概念

    概念 一句话
    Zabbix Server 监控中枢,采集、计算触发器、告警。
    Zabbix Web PHP 前端,配置与看图。
    Zabbix Proxy 分布式代理,替 Server 拉取/缓冲数据。
    Zabbix Agent 装在被监控机上的采集端。
    10051 / 10050 Server(主动/trapper 等)与 Agent 常用端口。

    下文将原文中的 zabbbix 统一为 zabbix


    一、传统安装(CentOS + RPM)

    1. Web 依赖

    yum -y install httpd
    yum -y install php
    

    2. 添加 Zabbix 仓库并安装组件

    rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
    yum -y install yum-utils
    yum-config-manager --enable rhel-7-server-optional-rpms
    

    Server + Web:

    yum install -y zabbix-server-mysql
    yum install -y zabbix-web-mysql
    

    Proxy(按需):

    yum install -y zabbix-proxy-mysql
    

    二、MySQL 5.6:建库与导入

    1. 安装 MySQL(示例为本地 rpm 包)

    yum -y install *.rpm
    

    按环境完成初始化与改密后,建库授权:

    CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
    GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'192.168.5.%' IDENTIFIED BY 'zabbix';
    FLUSH PRIVILEGES;
    

    2. 导入官方建表脚本

    zcat create.sql.gz | mysql -uzabbix -pzabbix zabbix
    

    create.sql.gz 路径以 zabbix-server-mysql 包内文档为准(常见在 /usr/share/doc/zabbix-server-mysql*/)。
    命令末尾用英文分号 ;,不要用中文

    3. 修改 Server 数据库配置

    grep ^DB /etc/zabbix/zabbix_server.conf
    

    示例:

    DBHost=localhost
    # 或远程库 IP
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    

    4. PHP 时区

    vim /etc/httpd/conf.d/zabbix.conf
    

    设置:

    php_value date.timezone Asia/Shanghai
    

    启动服务(示意):

    systemctl enable --now zabbix-server httpd
    # 按需放行 80、10051 等端口
    

    浏览器访问 Web 按向导完成;默认账号多为 Admin / zabbix(请登录后改密)。


    三、Docker Compose 部署(补充)

    适合快速拉起 Server + DB + Web + Agent。镜像 tag 可用 centos-latest / latest,生产建议钉死具体版本。

    1. 准备配置目录(可选)

    mkdir -p zabbix/zabbixconfig zabbix/data/mysqllib \
      zabbix/alertscripts zabbix/externalscripts
    
    wget https://raw.githubusercontent.com/sunsharing-note/zabbix/master/zabbix_server.conf
    mv zabbix_server.conf zabbix/zabbixconfig/
    

    2. docker-compose.yml 示例

    version: "3"
    services:
      zabbix-mysql:
        image: mariadb:latest
        ports:
          - "3309:3306"
        volumes:
          - ./zabbix/data/mysqllib:/var/lib/mysql
        environment:
          MYSQL_USER: zabbix
          MYSQL_DATABASE: zabbix
          MYSQL_PASSWORD: zabbix
          MYSQL_ROOT_PASSWORD: "123321"
        command:
          - --character-set-server=utf8
          - --collation-server=utf8_bin
        restart: always
    
      zabbix-server:
        image: zabbix/zabbix-server-mysql:centos-latest
        restart: always
        ports:
          - "10052:10051"
        environment:
          DB_SERVER_HOST: zabbix-mysql
          MYSQL_USER: zabbix
          MYSQL_DATABASE: zabbix
          MYSQL_PASSWORD: zabbix
          DB_SERVER_ROOT_USER: root
          DB_SERVER_ROOT_PASS: "123321"
          TZ: Asia/Shanghai
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - ./zabbix/zabbixconfig/:/etc/zabbix/
          - ./zabbix/alertscripts:/usr/lib/zabbix/alertscripts
          - ./zabbix/externalscripts:/usr/lib/zabbix/externalscripts
          - ./zabbix/modules:/var/lib/zabbix/modules
          - ./zabbix/enc:/var/lib/zabbix/enc
          - ./zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
          - ./zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
          - ./zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
          - ./zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
          - ./zabbix/snmptraps:/var/lib/zabbix/snmptraps
          - ./zabbix/mibs:/var/lib/zabbix/mibs
        depends_on:
          - zabbix-mysql
    
      zabbix-web-nginx:
        image: zabbix/zabbix-web-nginx-mysql:latest
        restart: always
        ports:
          - "8088:80"
        environment:
          DB_SERVER_HOST: zabbix-mysql
          MYSQL_DATABASE: zabbix
          MYSQL_USER: zabbix
          MYSQL_PASSWORD: zabbix
          MYSQL_ROOT_PASSWORD: "123321"
          ZBX_SERVER_HOST: zabbix-server
          PHP_TZ: Asia/Shanghai
          TZ: Asia/Shanghai
        volumes:
          - /etc/localtime:/etc/localtime:ro
        depends_on:
          - zabbix-mysql
          - zabbix-server
    
      zabbix-agent:
        image: zabbix/zabbix-agent:latest
        environment:
          ZBX_HOSTNAME: "Zabbix server"
          ZBX_SERVER_HOST: zabbix-server
          ZBX_SERVER_PORT: "10051"
          TZ: Asia/Shanghai
        ports:
          - "10053:10050"
        restart: always
        privileged: true
        depends_on:
          - zabbix-server
    

    相对原笔记的修正:

    说明
    TZ= 全角等号改为英文 TZ: Asia/Shanghai
    zabbix-agent 缩进 与其它 services 同级
    links Compose v3 中改用服务名 DNS + depends_on
    字符集 MariaDB 用 command 指定,比塞进 environment 更可靠
    /etc/timezone 部分精简镜像无此文件,可只挂 localtime

    3. 启动与访问

    docker-compose -f docker-compose.yml up -d
    

    浏览器:

    http://192.168.3.168:8088
    

    (IP 按实际主机修改。)默认登录一般为 Admin / zabbix

    映射 含义
    8088 → 80 Web
    10052 → 10051 Server
    10053 → 10050 Agent
    3309 → 3306 MySQL/MariaDB

    流程速览

    传统:装 httpd/php → zabbix 仓库 → server-mysql + web-mysql
         → MySQL 建库授权 → 导 create.sql.gz → 改 conf/时区 → 启服务
    
    Compose:准备目录/conf → docker-compose up -d → 访问 :8088
    

    注意

    1. 仓库为 4.2 示例,与笔记中的「4.1」可能并存,以实际启用的 repo 为准。
    2. 生产请修改默认密码,并钉死镜像版本;mariadb:latest / centos-latest 仅适合实验。
    3. 新项目优先考虑较新 Zabbix + 官方 Compose/Helm;本文保留 4.x 老环境参考价值。
    4. Agent 的 ZBX_SERVER_HOST、防火墙与 Server 主动/被动模式需与网络规划一致。

    MP3