Zabbix容器化部署

Zabbix容器化部署

Zabbix 是一个开源的企业级监控解决方案,可以实时监控服务器、网络设备和其他 IT 资源的状态。

1.Zabbix 关键功能

  1. 监控:
    • 服务器和虚拟机(Linux/Windows/Unix)。
    • 网络设备(路由器、交换机、防火墙等)。
    • 应用程序和服务(Web服务器、数据库服务器等)。
    • 云服务(AWS、Azure等)。
  2. 数据采集:
    • 支持多种监控方法:SNMP、IPMI、JMX、Zabbix Agent 等。
    • 自动发现网络设备和拓扑结构。
    • 主动和被动数据收集。
  3. 报警和通知:
    • 自定义触发条件和报警规则。
    • 多种通知方式:邮件、短信、即时消息、脚本等。
    • 报警升级和恢复通知。
  4. 数据存储:
    • 历史数据存储和管理。
    • 数据库支持:MySQL、PostgreSQL、Oracle、SQLite 等。
  5. 可视化:
    • 图表、仪表盘、地图等多种可视化方式。
    • 实时和历史数据的图形展示。
    • 自定义报表和 SLA 报告。

2.Zabbix 组件

  1. Zabbix Server:
    • 核心组件,负责接收和处理从代理和监控项收集的数据。
    • 管理配置、用户和报警规则。
  2. Zabbix Agent:
    • 安装在被监控主机上,负责收集本地的监控数据并发送给 Zabbix Server。
    • 支持主动和被动模式。
  3. 数据库:
    • 存储所有配置数据、历史数据和事件数据。
  4. Web 接口:
    • 提供图形化的管理界面,用于配置、管理和查看监控数据。
    • 用户可以通过 Web 界面创建仪表盘、图表和报警规则。
  5. Zabbix Proxy:
    • 用于分布式监控场景,帮助在大规模或地理分布式网络中收集数据。
    • 将数据汇总并发送到 Zabbix Server。

3.Zabbix 工作原理

  1. 数据收集:
    • Zabbix Agent 或其他监控方法(如 SNMP)从被监控主机和设备收集数据。
    • 代理将收集的数据发送到 Zabbix Server。
  2. 数据处理:
    • Zabbix Server 接收数据并根据预定义的触发器进行分析。
    • 如果数据满足触发器条件,生成报警并通知相关人员。
  3. 数据存储:
    • 处理后的数据存储在数据库中,用于历史记录和趋势分析。
  4. 报警和通知:
    • 根据触发条件和报警规则,发送通知给管理员或其他相关人员。
    • 支持多种通知方式和报警升级机制。
  5. 数据展示:
    • 用户通过 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地址设为空,拷贝zabbix-server容器内/usr/share/doc/zabbix-server-mysql/create.sql.gz文件至宿主机,使用gunzip create.sql.gz解压后,导入至mysql数据库内 mysql -uzabbix -p zabbix < create.sql
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内容如下

1
2
3
4
5
6
7
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

1
2
3
4
5
6
7
8
9
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]配置名称


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明来自NoteBook