专栏名称: 院长技术
《院长技术》专注于DevOps技术栈研究,云原生、Istio,CICD、Docker、Prometheus、K8s、ServiceMesh、Jenkins、Linux、微服务、分布式存储、监控、日志收集、安全渗透、虚拟化等技术栈。
目录
相关文章推荐
佛山电视台  ·  冲上热搜!演员王某,被警方抓获! ·  昨天  
开平广播电视台  ·  定了!价格大降 ·  2 天前  
广东台今日关注  ·  一地公示涉农补贴,公开6000多人的手机和身 ... ·  4 天前  
佛山电视台  ·  0元打卡!佛山多片花海浪漫盛放🥰 ·  4 天前  
51好读  ›  专栏  ›  院长技术

Docker-compose部署Zabbix监控系统

院长技术  · 公众号  ·  · 2024-12-05 10:00

正文

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 # 被动模式检查






请到「今天看啥」查看全文