Py学习  »  docker

Docker-compose部署Zabbix监控系统

院长技术 • 1 年前 • 299 次点击  

Zabbix是一个基于Web界面的企业级开源监控解决方案,它能够提供分布式系统监视以及网络监视功能。以下是对Zabbix的详细介绍:

一、构成与架构

Zabbix主要由两部分构成:Zabbix server与可选的Zabbix agent。此外,Zabbix frontend(前端界面)也是其重要组成部分。

  1. Zabbix server:作为监控系统的核心,负责收集agent发送的数据、处理数据并存储到数据库中。同时,它还提供API接口供前端展示使用。Zabbix server可以运行在多种平台上,如Linux、Solaris、HP-UX等。

  2. Zabbix agent:部署在被监控主机上,负责收集主机的各种信息,如CPU使用率、内存占用率、磁盘空间等,并将这些信息发送到Zabbix server。Zabbix agent也可以运行在多种操作系统上。

  3. Zabbix frontend:基于Web界面的管理界面,用户可以通过前端界面进行监控配置、查看监控数据、接收报警等操作。

二、主要功能与特点

  1. 实时监控:Zabbix能够实时监控数万台服务器、虚拟机和网络设备,采集百万级监控指标。

  2. 跨平台监控:支持跨平台监控,无论是Linux、Windows还是其他操作系统,都可以进行监控。

  3. 自动发现:Zabbix具有自动发现功能,能够自动发现网络中的新设备,并为其创建监控项、触发器和图形。

  4. 灵活的报警机制:当监控项达到预设的阈值时,Zabbix可以通过邮件、短信、微信等多种方式发送报警通知,帮助管理员及时发现问题。

  5. 可视化报表:Zabbix提供了丰富的可视化图表,帮助管理员直观地了解系统的运行状态和性能数据。

  6. 分布式监控:支持多级监控架构,可以方便地实现大规模分布式系统的监控。

  7. 开放的API接口:Zabbix提供了丰富的API接口,方便与其他系统进行集成,如配置管理、工单系统等。

三、安装与配置

Zabbix的安装与配置相对简单,官方提供了详细的安装和配置指南。用户可以根据指南轻松地部署和配置监控系统。同时,Zabbix还提供了大批模板,开箱即用,可以节省用户宝贵的时间。

四、应用场景

Zabbix广泛应用于各种场景,如IT基础设施监控、应用程序性能监控、网络监控等。它可以帮助企业确保系统的稳定运行,及时发现并解决问题,提高运维效率。

五、版本更新与维护

Zabbix团队不断推出新版本,修复已知问题并引入新功能。用户可以关注Zabbix的官方网站或社区,及时获取最新版本的更新信息。同时,Zabbix也提供了专业的技术支持和服务,帮助用户解决在使用过程中遇到的问题。

version: "3"services:
# 数据库 mysql-server: image: mysql:8.0.26 container_name: mysql-8.0.26 # docker安全验证 security_opt: - seccomp:unconfined command: # 一般都应该选择utf8mb4的字符编码,不知道为什么zabbix是使用utf8,用utf8mb4会出错 - --character-set-server=utf8 - --collation-server=utf8_bin # 开启慢日志查询 - --slow_query_log=1 # 把查询时间超过3秒的定义为慢查询 - --long_query_time=3 # 指定慢查询记录文件位置 - --slow_query_log_file=/var/lib/mysql/slow_query.log # 不区分大小写,有可能发过来的sql语句表名是大写的,但库中的表名是小写的 - --lower_case_table_names=1 # 对整个服务器的用户限制的最大连接数为10000 - --max_connections=10000 # 指每个MySQL用户的最大连接数,0代表不限制 - --max_user_connections=0 # 让innodb的每个表文件单独表空间,mysql 8是默认的,可以不用设置 - --innodb_file_per_table=1 # mysql8开始默认的加密规则使用的是 caching_sha2_password,但zabbix使用会有问题,所以改回mysql_native_password - --default-authentication-plugin=mysql_native_password restart: always environment: - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=5k6jSHBofOqVzEy8 - MYSQL_ROOT_PASSWORD=2cEBNoUPVmetYrlp ports: - 3306:3306 volumes: - /data/docker_app_volume_data/mysql-8.0.26:/var/lib/mysql:rw - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - zabbix_networks
# select user, host from mysql.user;
# zabbix 服务端 zabbix-server: image: zabbix/zabbix-server-mysql:alpine-5.4-latest container_name: zabbix-server-mysql-alpine-5.4-latest privileged: true restart: always environment: # 轮询处理监控项的进程数,参考值:1个进程处理250个item - ZBX_STARTPOLLERS=10 # 用于轮询不可到达到的设备 # 1.如果监控的机器死机或其他原因导致zabbix agent死掉server获取不到数据 # 2.server向agent获取数据时时间过长,经常超过server甚至的timeout时间 # 以上2点unreachable poller就会升高 - ZBX_STARTPOLLERSUNREACHABLE=10 # 一次最多删除20000条数据 - ZBX_MAXHOUSEKEEPERDELETE=20000 # 历史数据缓存大小 - ZBX_VALUECACHESIZE=128M # 缓存大小 - ZBX_CACHESIZE=1024M # 历史缓存数据大小 - ZBX_HISTORYCACHESIZE=32M # 历史索引缓存大小 - ZBX_HISTORYINDEXCACHESIZE=10M # 接收来自Zabbix发送者、主动agent和主动proxy的数据 - ZBX_STARTTRAPPERS=20 # 报警进程数 - ZBX_STARTALERTERS=5 - DB_SERVER_HOST=mysql-8.0.26 - MYSQL_USER=zabbix - MYSQL_PASSWORD=5k6jSHBofOqVzEy8 - MYSQL_DATABASE=zabbix - MYSQL_ROOT_PASSWORD= 2cEBNoUPVmetYrlp ports: - 10051:10051 depends_on: - mysql-server volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - zabbix_networks
# zabbix web页面 zabbix-web: image: zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest container_name: zabbix-web-nginx-mysql-alpine-5.4-latest environment: - DB_SERVER_HOST=mysql-8.0.26 - MYSQL_USER=zabbix # 可以是service名,也可以是容器名,这里用service名 - ZBX_SERVER_HOST=zabbix-server - ZBX_SERVER_PORT=10051 - DB_SERVER_HOST=mysql-server - DB_SERVER_PORT=3306 - PHP_TZ=Asia/Shanghai - MYSQL_PASSWORD=5k6jSHBofOqVzEy8 - MYSQL_DATABASE=zabbix - MYSQL_ROOT_PASSWORD=2cEBNoUPVmetYrlp restart: always ports: - 80:8080 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro depends_on: - mysql-server - zabbix-server networks: - zabbix_networks
# zabbix 客户端 zabbix-agent: image: zabbix/zabbix-agent:alpine-5.4-latest container_name: zabbix-agent-alpine-5.4-latest privileged: true restart: always environment: # 这个是agent的名称,要和web页面录入的Hostname一致 # 服务器的agent可以使用默认名称Zabbix server # 这里不需要用引号包裹 - ZBX_HOSTNAME=Zabbix server - ZBX_SERVER_HOST=zabbix-server - ZBX_SERVER_PORT=10051 # 开启远程命令 - ZBX_ENABLEREMOTECOMMANDS=1 # 开启远程命令日志记录 - ZBX_LOGREMOTECOMMANDS=1 # 超时 - ZBX_TIMEOUT=10 # 被动模式检查 - ZBX_PASSIVE_ALLOW=true # 主动模式检查 - ZBX_ACTIVE_ALLOW=true volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro ports: - '10050:10050' depends_on: - mysql-server - zabbix-server - zabbix-web networks: - zabbix_networks
# 收接外界发过来snmp数据。需要在server的environment增加- ZBX_ENABLE_SNMP_TRAPS=true的选项# 当然,可以不用,而是通过主动去获取的方式# /var/lib/zabbix/snmptraps是存放log的地方 zabbix-snmptraps: image: zabbix/zabbix-snmptraps:alpine-5.4-latest container_name: zabbix-snmptraps-alpine-5.4-latest ports: - "162:1162/udp" volumes: # 用来接收监控对象发送来的SNMPTrap信息。 - /data/docker_app_volume_data/snmptraps:/var/lib/zabbix/snmptraps networks: - zabbix_networks
# grafana插件,增强zabbix的显示 grafana: image: grafana/grafana:8.1.2 container_name: grafana-grafana-8.1.2 environment: # 安装支持zabbix的插件 # alexanderzobnin-zabbix-app # 修改图形为饼状 # grafana-piechart-panel # 安装其他图形插件 # grafana-clock-panel # #钟表形展示 # briangann-gauge-panel # 字符型展示 # natel-discrete-panel # 服务器状态 # vonage-status-panel - GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app,grafana-piechart-panel,grafana-clock-panel,briangann-gauge-panel,natel-discrete-panel,vonage-status-panel,grafana-simple-json-datasource # 默认登录帐号密码 - GF_SECURITY_ADMIN_USER=amis - GF_SECURITY_ADMIN_PASSWORD=123456 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro # grafana容器中的/var/lib/grafana目录,需要有写入权限,而在容器中用户是grafana,是没有写入权限的,需要给grafana对/var/lib/grafana目录有写入权限 # 从5.1开始,grafana用户在grafana容器中的uid是472,所以要在宿主机修改这个目录的属主为472,之前的版本是104 # chown -R 472 /data/docker_app_volume_data/grafana/ - /data/docker_app_volume_data/grafana:/var/lib/grafana restart: always ports: - '3000:3000' depends_on: - zabbix-web networks: - zabbix_networks
networks: zabbix_networks: external: true

创建服务

docker-compose up -d

访问:

http://ip

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/176663