社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker-compose部署Zabbix监控系统

院长技术 • 5 月前 • 204 次点击  

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
 
204 次点击