Zabbix容器化部署
Zabbix 是一个开源的企业级监控解决方案,可以实时监控服务器、网络设备和其他 IT 资源的状态。
1.Zabbix 关键功能
- 监控:
- 服务器和虚拟机(Linux/Windows/Unix)。
- 网络设备(路由器、交换机、防火墙等)。
- 应用程序和服务(Web服务器、数据库服务器等)。
- 云服务(AWS、Azure等)。
- 数据采集:
- 支持多种监控方法:SNMP、IPMI、JMX、Zabbix Agent 等。
- 自动发现网络设备和拓扑结构。
- 主动和被动数据收集。
- 报警和通知:
- 自定义触发条件和报警规则。
- 多种通知方式:邮件、短信、即时消息、脚本等。
- 报警升级和恢复通知。
- 数据存储:
- 历史数据存储和管理。
- 数据库支持:MySQL、PostgreSQL、Oracle、SQLite 等。
- 可视化:
- 图表、仪表盘、地图等多种可视化方式。
- 实时和历史数据的图形展示。
- 自定义报表和 SLA 报告。
2.Zabbix 组件
- Zabbix Server:
- 核心组件,负责接收和处理从代理和监控项收集的数据。
- 管理配置、用户和报警规则。
- Zabbix Agent:
- 安装在被监控主机上,负责收集本地的监控数据并发送给 Zabbix Server。
- 支持主动和被动模式。
- 数据库:
- Web 接口:
- 提供图形化的管理界面,用于配置、管理和查看监控数据。
- 用户可以通过 Web 界面创建仪表盘、图表和报警规则。
- Zabbix Proxy:
- 用于分布式监控场景,帮助在大规模或地理分布式网络中收集数据。
- 将数据汇总并发送到 Zabbix Server。
3.Zabbix 工作原理
- 数据收集:
- Zabbix Agent 或其他监控方法(如 SNMP)从被监控主机和设备收集数据。
- 代理将收集的数据发送到 Zabbix Server。
- 数据处理:
- Zabbix Server 接收数据并根据预定义的触发器进行分析。
- 如果数据满足触发器条件,生成报警并通知相关人员。
- 数据存储:
- 处理后的数据存储在数据库中,用于历史记录和趋势分析。
- 报警和通知:
- 根据触发条件和报警规则,发送通知给管理员或其他相关人员。
- 支持多种通知方式和报警升级机制。
- 数据展示:
- 用户通过 Web 接口查看实时和历史数据。
- 创建图表、仪表盘和报表,以便直观了解系统状态。
4.使用 Docker Compose 部署 Zabbix
下载zabbix-server(zbx_env)配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| version: '3.5' services: mysql: image: mysql:8.0 container_name: zabbix-mysql environment: MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix MYSQL_ROOT_PASSWORD: root_password command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci volumes: - ./mysql_data:/var/lib/mysql
zabbix-server: image: zabbix/zabbix-server-mysql:latest container_name: zabbix-server depends_on: - mysql environment: DB_SERVER_HOST: mysql MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix ports: - "10051:10051" volumes: - /root/zbx_env:/etc/zabbix
zabbix-web: image: zabbix/zabbix-web-nginx-mysql:latest container_name: zabbix-web depends_on: - zabbix-server environment: ZBX_SERVER_HOST: zabbix-server DB_SERVER_HOST: mysql MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix PHP_TZ: Europe/Riga ports: - "8080:8080" volumes: - /root/zbx_env:/etc/zabbix
|
5.使用 Docker Compose 部署 Zabbix-agent
创建zabbix_agentd.d文件夹,配置zabbix_agentd.conf内容如下
| LogType=console Server=[zabbix-server-IP] ServerActive=[zabbix-server-IP] Hostname=[填写在主机列表中的名称] User=zabbix Include=/etc/zabbix/zabbix_agentd.d/ LoadModulePath=/var/lib/zabbix/modules/
|
Zabbix-agent
| version: '3.5' services: zabbix-agent: image: zabbix/zabbix-agent:latest container_name: zabbix-agent ports: - "10050:10050" volumes: - ./zbx_env:/etc/zabbix
|
6.在zabbix控制台新增主机,名称为[Hostname]配置名称