news 2026/5/29 21:25:09

Docker容器化高可用架构部署方案(十七)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker容器化高可用架构部署方案(十七)

16-Zabbix监控配置详解

本文档详细介绍Zabbix监控系统的部署和配置,实现对3节点Docker集群的全面监控。

概述

Zabbix是一个企业级开源监控解决方案,支持:

  • 主机和容器监控

  • 网络设备监控

  • 应用程序监控

  • 告警和通知

架构设计

┌─────────────────────────────────────────────────────────────────┐ │ manage-net (172.20.5.0/24) │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Zabbix Server │ │ │ │ 172.20.5.31:10051 │ │ │ └────────────────────────┬────────────────────────────────┘ │ │ │ │ │ ┌────────────────────────┴────────────────────────────────┐ │ │ │ Zabbix Web │ │ │ │ 172.20.5.32:8080 │ │ │ │ (Apache + PHP) │ │ │ └────────────────────────┬────────────────────────────────┘ │ │ │ │ │ ┌────────────────────────┴────────────────────────────────┐ │ │ │ Zabbix MySQL │ │ │ │ 172.20.5.33:3306 │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │Agent-Node1 │ │Agent-Node2 │ │Agent-Node3 │ │ │ │172.20.5.41 │ │172.20.5.42 │ │172.20.5.43 │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ └─────────┼──────────────────┼──────────────────┼─────────────────┘ │ │ │ 监控Node1 监控Node2 监控Node3

IP规划

组件IP地址节点端口说明
Zabbix Server172.20.5.31Node310051Zabbix主服务
Zabbix Web172.20.5.32Node38080Web界面
Zabbix MySQL172.20.5.33Node33306数据库
Zabbix Agent172.20.5.41Node110050Agent2
Zabbix Agent172.20.5.42Node210050Agent2
Zabbix Agent172.20.5.43Node310050Agent2

部署步骤

步骤1:创建配置目录

在所有节点执行:

mkdir -p /opt/cluster-deploy/config/{zabbix,zabbix-mysql}

步骤2:创建Zabbix MySQL配置

在Node3执行:

cat > /opt/cluster-deploy/config/zabbix-mysql/my.cnf << 'EOF' [mysqld] server-id = 100 bind-address = 0.0.0.0 port = 3306 datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock ​ log_bin = mysql-bin binlog_format = ROW expire_logs_days = 7 ​ character-set-server = utf8mb4 collation-server = utf8mb4_bin ​ max_connections = 200 max_allowed_packet = 64M ​ innodb_buffer_pool_size = 256M innodb_log_file_size = 64M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT ​ [client] socket = /var/lib/mysql/mysql.sock ​ [mysql] socket = /var/lib/mysql/mysql.sock EOF

步骤3:创建Zabbix Server配置

在Node3执行:

cat > /opt/cluster-deploy/config/zabbix/zabbix_server.conf << 'EOF' ListenPort=10051 LogType=console DBHost=zabbix-mysql DBPort=3306 DBName=zabbix DBUser=zabbix DBPassword=ZabbixStr0ng!Pass HANodeName=ZabbixServer NodeAddress=172.20.5.31:10051 EOF

步骤4:创建Zabbix Agent配置

在所有节点执行对应的配置:

Node1 Agent配置
cat > /opt/cluster-deploy/config/zabbix/zabbix_agentd-node1.conf << 'EOF' Server=172.20.5.31 ServerActive=172.20.5.31 Hostname=Node1-Agent ​ BufferSend=5 BufferSize=100 MaxLinesPerSecond=20 Timeout=10 ​ LogType=console EOF
Node2 Agent配置
cat > /opt/cluster-deploy/config/zabbix/zabbix_agentd-node2.conf << 'EOF' Server=172.20.5.31 ServerActive=172.20.5.31 Hostname=Node2-Agent ​ BufferSend=5 BufferSize=100 MaxLinesPerSecond=20 Timeout=10 ​ LogType=console EOF
Node3 Agent配置
cat > /opt/cluster-deploy/config/zabbix/zabbix_agentd-node3.conf << 'EOF' Server=172.20.5.31 ServerActive=172.20.5.31 Hostname=Node3-Agent ​ BufferSend=5 BufferSize=100 MaxLinesPerSecond=20 Timeout=10 ​ LogType=console EOF

步骤5:创建Docker Compose文件

Node1 Zabbix Agent
cat > /opt/cluster-deploy/docker-compose-zabbix-node1.yml << 'EOF' services: zabbix-agent: image: zabbix/zabbix-agent2:alpine-7.0-latest container_name: zabbix-agent networks: manage-net: ipv4_address: 172.20.5.41 volumes: - ./config/zabbix/zabbix_agentd-node1.conf:/etc/zabbix/zabbix_agent2.conf:ro - /var/run/docker.sock:/var/run/docker.sock:ro environment: - ZABBIX_SERVER_HOST=172.20.5.31 restart: unless-stopped ​ networks: manage-net: external: true EOF
Node2 Zabbix Agent
cat > /opt/cluster-deploy/docker-compose-zabbix-node2.yml << 'EOF' services: zabbix-agent: image: zabbix/zabbix-agent2:alpine-7.0-latest container_name: zabbix-agent networks: manage-net: ipv4_address: 172.20.5.42 volumes: - ./config/zabbix/zabbix_agentd-node2.conf:/etc/zabbix/zabbix_agent2.conf:ro - /var/run/docker.sock:/var/run/docker.sock:ro environment: - ZABBIX_SERVER_HOST=172.20.5.31 restart: unless-stopped networks: manage-net: external: true EOF
Node3 Zabbix Server + Web + Agent
cat > /opt/cluster-deploy/docker-compose-zabbix-node3.yml << 'EOF' services: zabbix-agent: image: zabbix/zabbix-agent2:alpine-7.0-latest container_name: zabbix-agent networks: manage-net: ipv4_address: 172.20.5.43 volumes: - ./config/zabbix/zabbix_agentd-node3.conf:/etc/zabbix/zabbix_agent2.conf:ro - /var/run/docker.sock:/var/run/docker.sock:ro environment: - ZABBIX_SERVER_HOST=172.20.5.31 restart: unless-stopped zabbix-mysql: image: mysql:8.0 container_name: zabbix-mysql hostname: zabbix-mysql networks: manage-net: ipv4_address: 172.20.5.33 volumes: - zabbix-mysql-data:/var/lib/mysql - ./config/zabbix-mysql/my.cnf:/etc/mysql/conf.d/my.cnf:ro environment: - MYSQL_ROOT_PASSWORD=RootStr0ng!Pass - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=ZabbixStr0ng!Pass command: - --default-authentication-plugin=mysql_native_password restart: unless-stopped zabbix-server: image: zabbix/zabbix-server-mysql:alpine-7.0-latest container_name: zabbix-server hostname: zabbix-server networks: manage-net: ipv4_address: 172.20.5.31 volumes: - zabbix-server-data:/var/lib/zabbix - ./config/zabbix/zabbix_server.conf:/etc/zabbix/zabbix_server.conf:ro environment: - DB_SERVER_HOST=zabbix-mysql - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=ZabbixStr0ng!Pass - ZBX_CACHESIZE=128M - ZBX_HISTORYCACHESIZE=64M - ZBX_TRENDCACHESIZE=32M - ZBX_VALUECACHESIZE=64M ports: - "10051:10051" depends_on: - zabbix-mysql restart: unless-stopped zabbix-web: image: zabbix/zabbix-web-apache-mysql:alpine-7.0-latest container_name: zabbix-web hostname: zabbix-web networks: manage-net: ipv4_address: 172.20.5.32 volumes: - zabbix-web-data:/etc/zabbix/web - zabbix-web-logs:/var/log/httpd environment: - DB_SERVER_HOST=zabbix-mysql - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=ZabbixStr0ng!Pass - ZBX_SERVER_HOST=172.20.5.31 - PHP_TZ=Asia/Shanghai ports: - "8080:8080" depends_on: - zabbix-mysql - zabbix-server restart: unless-stopped networks: manage-net: external: true volumes: zabbix-mysql-data: zabbix-server-data: zabbix-web-data: zabbix-web-logs: EOF

步骤6:启动Zabbix服务

# Node1 - 启动Agent cd /opt/cluster-deploy docker compose -f docker-compose-zabbix-node1.yml up -d # Node2 - 启动Agent cd /opt/cluster-deploy docker compose -f docker-compose-zabbix-node2.yml up -d # Node3 - 启动Server + Web + Agent cd /opt/cluster-deploy docker compose -f docker-compose-zabbix-node3.yml up -d

初始化Zabbix Web界面

首次访问

  1. 打开浏览器访问:http://192.168.64.130:8080

  2. 默认登录信息:

    • 用户名:Admin

    • 密码:zabbix

初始配置向导

  1. 欢迎:点击 "Next step"

  2. 检查依赖:确认所有检查项通过,点击 "Next step"

  3. 配置数据库:保持默认设置,点击 "Next step"

  4. Zabbix服务器详情

    • Host:172.20.5.31

    • Port:10051

    • Name:Zabbix server

  5. 时区配置:选择Asia/Shanghai

  6. 完成:点击 "Finish"

添加主机监控

添加Node1主机

  1. 进入ConfigurationHostsCreate host

  2. 填写主机信息:

    • Host name:Node1

    • Groups: 选择Linux servers

    • Interfaces:

      • Type:Agent

      • IP address:172.20.5.41

      • Port:10050

  3. 点击Templates

    • Link new templates:Linux by Zabbix agent

    • Link new templates:Docker(如需要)

  4. 点击Add

添加Node2主机

同上,Host name为Node2,IP为172.20.5.42

添加Node3主机

同上,Host name为Node3,IP为172.20.5.43

配置监控项

常用监控项

监控项键值说明
CPU使用率system.cpu.utilCPU总使用率
内存使用vm.memory.size内存总量
磁盘使用vfs.fs.size磁盘使用情况
网络流量net.if.in/out网络接口流量
容器数量docker.infoDocker容器数量

添加自定义监控项

  1. 进入ConfigurationHosts

  2. 点击主机名称进入详情

  3. 点击ItemsCreate item

  4. 填写监控项信息:

    • Name:容器总数

    • Type:Zabbix agent

    • Key:docker.info

    • Type of information:Numeric (unsigned)

配置告警

创建媒体类型

  1. 进入AdministrationMedia types

  2. 点击Email

  3. 配置SMTP服务器信息:

    • SMTP server:smtp.example.com

    • SMTP server port:587

    • SMTP helo:zabbix

    • SMTP email:zabbix@example.com

  4. 点击Update

创建触发器

  1. 进入ConfigurationHosts

  2. 点击触发器的主机

  3. 点击TriggersCreate trigger

  4. 填写触发器信息:

    • Name:CPU使用率过高

    • Severity:Warning

    • Expression:{Node1:system.cpu.util.last()}>80

  5. 点击Add

创建动作

  1. 进入ConfigurationActions

  2. 选择Trigger actionsCreate action

  3. 填写动作信息:

    • Name:CPU告警通知

    • Conditions:Trigger = CPU使用率过高

  4. 点击Operations

    • Operation type:Send message

    • Send to: 选择用户组

    • Media type:Email

  5. 点击Add

使用Zabbix监控Docker

启用Docker监控模板

Zabbix Agent2内置了Docker监控支持。需要配置以下内容:

  1. 在Agent配置中添加监控插件

cat >> /opt/cluster-deploy/config/zabbix/zabbix_agentd-node1.conf << 'EOF' # Docker监控 Plugins.Docker.Endpoint=unix:///var/run/docker.sock EOF
  1. 重启Agent

docker restart zabbix-agent
  1. 在Zabbix Web中导入Docker模板

    • 下载模板:https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/templates/app/docker.yaml

    • 进入ConfigurationTemplatesImport

    • 选择下载的yaml文件

    • 点击Import

监控容器状态

可用的Docker监控项:

  • docker.container_info:容器信息

  • docker.container_stats:容器统计

  • docker.container.list:容器列表

  • docker.image.list:镜像列表

验证监控

检查主机状态

  1. 进入MonitoringHosts

  2. 确认所有3个节点的ZBX图标为绿色

查看最新数据

  1. 进入MonitoringLatest data

  2. 选择主机查看监控数据

查看图表

  1. 进入MonitoringGraphs

  2. 选择主机和监控项查看趋势图

常用查询

查看容器数量

docker exec zabbix-agent zabbix_agent2 -t docker.container.list

查看系统负载

docker exec zabbix-agent zabbix_agent2 -t system.cpu.load

查看内存使用

docker exec zabbix-agent zabbix_agent2 -t vm.memory.size

故障排除

Zabbix Server无法启动

# 查看日志 docker logs zabbix-server # 检查MySQL连接 docker exec zabbix-server nc -zv zabbix-mysql 3306

Agent无法连接Server

# 查看Agent日志 docker logs zabbix-agent # 测试连通性 docker exec zabbix-agent zabbix_agent2 -t agent.ping

数据库初始化失败

首次启动时,Zabbix会自动初始化数据库。如果失败:

# 删除数据库卷重新初始化 docker compose down -v docker compose up -d

Web界面显示"Services are not running"

# 检查Zabbix Server进程 docker exec zabbix-server pgrep -a zabbix_server # 重启服务 docker restart zabbix-server zabbix-web

性能优化

调整Housekeeper设置

# 编辑zabbix_server.conf HousekeepingFrequency=4 MaxHousekeeperDelete=5000

配置数据存储周期

  1. 进入AdministrationGeneralHousekeeper

  2. 调整历史数据和趋势的保留天数

调整缓存大小

# 编辑zabbix_server.conf CacheSize=64M StartPollers=10 StartPollersUnreachable=5

备份与恢复

备份Zabbix数据

# 备份MySQL数据 docker exec zabbix-mysql mysqldump -uroot -pRootStr0ng!Pass zabbix > zabbix_backup.sql # 备份配置文件 tar czf zabbix_config_backup.tar.gz /opt/cluster-deploy/config/zabbix

恢复Zabbix数据

# 恢复MySQL数据 docker exec -i zabbix-mysql mysql -uroot -pRootStr0ng!Pass zabbix < zabbix_backup.sql ​ # 恢复配置文件 tar xzf zabbix_config_backup.tar.gz -C /
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 21:21:07

2026合规AI Token服务商TOP10榜单:靠谱平台推荐与合规性排名

摘要/引文&#xff1a;进入2026年&#xff0c;企业直连海外大模型API频繁遭遇网络不稳、风控封禁和结算合规难题。合规AI Token服务商市场快速成熟&#xff0c;本文从企业真实生产需求出发&#xff0c;延迟、模型覆盖、计费透明度和财务合规四大维度&#xff0c;整理出10家经过…

作者头像 李华
网站建设 2026/5/29 21:21:06

python --version返回空行

问题描述 安装了python之后&#xff0c;在cmd中输入python --version返回空行 输入where python返回 C:\Users\admin\AppData\Local\Microsoft\WindowsApps\python.exe C:\Users\admin\AppData\Local\Python\bin\python.exe分析 where python找到两个&#xff0c;第一个是windo…

作者头像 李华
网站建设 2026/5/29 21:20:08

从零开始电路设计与制作:原理图、PCB布局与焊接调试全流程实践

1. 项目概述与核心价值如果你对电子设备内部那些五颜六色的线路板和密密麻麻的元件感到好奇&#xff0c;或者曾经有过“自己动手做一个东西”的念头&#xff0c;那么从电路设计与制作入手&#xff0c;绝对是一条充满乐趣且收获颇丰的路径。这不仅仅是把几个电阻、电容焊在一起那…

作者头像 李华
网站建设 2026/5/29 21:18:28

通过Taotoken CLI工具一键为团队所有网站项目配置统一AI环境

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键为团队所有网站项目配置统一AI环境 在团队协作开发中&#xff0c;为多个网站项目&#xff08;如前端应用…

作者头像 李华