Zabbix【部署 05】 Docker部署Zabbix Server Agent Agent2 Web interface及 Java-Gate-Way

@[TOC](Docker部署Zabbix Server Agent Agent2 Web interface Java-Gate-Way)

1.docker常用命令

bash 复制代码
# 查看运行的容器
docker ps
# 查看日志
docker logs containerID
# 重启容器
docker restart containerID
bash 复制代码
# 创建 zabbix 专用网络
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
# 查询
docker network ls
bash 复制代码
# 容器启动命令查询
docker pull cucker/get_command_4_run_container

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container containerID

2.Preparation

  • 安装Docker。
  • 为Zabbix创建专用网络zabbix-net
  • 创建数据库用户zabbix和数据库zabbix

3.IP地址说明

  • 172.20.240.0【Zabbix 专用网络的 Gateway IP 下边有查询方法】
  • 172.17.0.8【云服务器的内网IP】

4.Server

bash 复制代码
# pull 镜像
docker pull zabbix/zabbix-server-pgsql:5.4-centos-latest

# 启动容器
docker run --name 5.4-zabbix-server-pgsql \
-e DB_SERVER_HOST="172.17.0.8" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix" \
--privileged=true \
--network=zabbix-net \
--restart unless-stopped \
--restart=always \
-v /etc/localtime:/etc/localtime \
-v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-p 10051:10051 \
-d zabbix/zabbix-server-pgsql:5.4-centos-latest

开启JAVAGATEWAY服务:

bash 复制代码
# 容器启动【开启JAVAGATEWAY服务】
docker run --name 5.4-zabbix-server-pgsql \
-e DB_SERVER_HOST="172.17.0.8" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix" \
-e ZBX_JAVAGATEWAY_ENABLE="true" -e ZBX_JAVAGATEWAY="172.20.240.0" \
--privileged=true \
--network=zabbix-net \
--restart unless-stopped \
--restart=always \
-v /etc/localtime:/etc/localtime \
-v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-p 10051:10051 \
-d zabbix/zabbix-server-pgsql:5.4-centos-latest
bash 复制代码
# 数据库会自动初始化166张表

5.Agent

5.1 agent

bash 复制代码
# pull 镜像
docker pull zabbix/zabbix-agent:centos-5.4-latest

# 启动容器
docker run --name 5.4-zabbix-agent \
-e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="172.20.240.0" \
--privileged=true \
--network=zabbix-net \
--restart unless-stopped \
-v /etc/localtime:/etc/localtime \
-p 10050:10050 \
-d zabbix/zabbix-agent:centos-5.4-latest

其他启动命令:

bash 复制代码
# 其他启动命令
# Connects from Zabbix server or Zabbix proxy in other containers (Passive checks)
docker run --name some-zabbix-server --link some-zabbix-agent:zabbix-agent -d zabbix/zabbix-server:latest

# Connect to Zabbix server or Zabbix proxy containers (Active checks)
docker run --name some-zabbix-agent --link some-zabbix-server:zabbix-server -d zabbix/zabbix-agent:latest

#  Privileged mode
docker run --name some-zabbix-agent --link some-zabbix-server:zabbix-server --privileged -d zabbix/zabbix-agent:latest
docker run --name some-zabbix-agent --link some-zabbix-server:zabbix-server -v /dev/sdc:/dev/sdc -d zabbix/zabbix-agent:latest

踩坑记录:

bash 复制代码
# 1.报错
active check configuration update from [云服务器内网IP:10051] started to fail (cannot connect to [[云服务器内网IP]:10051]: [111] Connection refused)

# 解决
# Zabbix server 启动时添加
-p 10051:10051 \
bash 复制代码
# 2.报错
# agent
no active checks on server [云服务器内网IP:10051]: host [zabbix-agent] not found
# server
cannot send list of active checks to "172.20.240.0": host [zabbix-agent] not found

# 解决修改 -e ZBX_HOSTNAME="zabbix-agent" 为
-e ZBX_HOSTNAME="Zabbix server" # 或者修改 Web 端的 Hosts->Name
bash 复制代码
# 3.报错
failed to accept an incoming connection: connection from "172.20.240.0" rejected, allowed hosts: "云服务器内网IP"

# 解决修改 -e ZBX_SERVER_HOST="云服务器内网IP" 为
-e ZBX_SERVER_HOST="172.20.240.0"

# 172.20.240.0 为 Zabbix 专用网络的 Gateway IP 地址 查看方式
docker inspect containerZabbixServerID | grep "Gateway"
            "Gateway": "",
            "IPv6Gateway": "",
                    "Gateway": "172.20.240.0",
                    "IPv6Gateway": "",

5.2 agent2

Zabbix agent 2 是新一代的 Zabbix agent,可以代替 Zabbix agent 使用。Zabbix agent 2 有以下特点:

  • 减少TCP连接数。
  • 提供改进的检查并发性。
  • 易于使用插件进行扩展。
  • 一个插件应该能够:提供仅由几行简单代码组成的简单检查;提供复杂的检查,包括长时间运行的脚本和独立的数据收集,并定期发回数据。

是 Zabbix agent 的临时替代品(因为它支持之前的所有功能)【新一代的 agent 是临时替代品???】

bash 复制代码
# pull 镜像
docker pull zabbix/zabbix-agent2:5.4-centos-latest

# 启动容器
docker run --name 5.4-zabbix-agent2 \
-e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="172.20.240.0" \
--privileged=true \
--network=zabbix-net \
--restart unless-stopped \
-v /etc/localtime:/etc/localtime \
-p 10050:10050 \
-d zabbix/zabbix-agent2:5.4-centos-latest

6.Web interface

bash 复制代码
# pull 镜像
docker pull zabbix/zabbix-web-nginx-pgsql:5.4-centos-latest

# 启动容器
docker run --name 5.4-zabbix-web-nginx-pgsql \
-e DB_SERVER_HOST="172.17.0.8" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix" \
-e ZBX_SERVER_HOST="172.20.240.0" \
--restart unless-stopped \
-v /etc/localtime:/etc/localtime \
-v /usr/share/zabbix/assets/fonts:/usr/share/zabbix/assets/fonts \
--network=zabbix-net \
-p 443:8443 \
-p 9090:8080 \
-e PHP_TZ="Asia/Shanghai" \
-d zabbix/zabbix-web-nginx-pgsql:5.4-centos-latest

# 用于解决图表中文乱码问题
# -v /usr/share/zabbix/assets/fonts:/usr/share/zabbix/assets/fonts 
# /usr/share/zabbix/assets/fonts 文件夹下放置 DejaVuSans.ttf 文件

# 界面实例将 443/TCP 端口(HTTPS)暴露给主机。

其他启动命令:

bash 复制代码
# Linking the container to Zabbix server
docker run --name some-zabbix-web-nginx-pgsql --link some-zabbix-server:zabbix-server -e DB_SERVER_HOST="some-postgres-server" -e POSTGRES_USER="some-user" -e POSTGRES_PASSWORD="some-password" -e ZBX_SERVER_HOST="some-zabbix-server" -e PHP_TZ="some-timezone" -d zabbix/zabbix-web-nginx-pgsql:tag

# Linking the container to PostgreSQL database
docker run --name some-zabbix-web-nginx-pgsql --link some-postgres-server:postgres -e DB_SERVER_HOST="some-postgres-server" -e POSTGRES_USER="some-user" -e POSTGRES_PASSWORD="some-password" -e ZBX_SERVER_HOST="some-zabbix-server" -e PHP_TZ="some-timezone" -d zabbix/zabbix-web-nginx-pgsql:tag
bash 复制代码
# socket 统计信息查看
ss -lnt

# 结果
State		Recv-Q		Send-Q		Local Address:Port		Peer Address:Port
LISTEN		0			128 		*:22					*:*
LISTEN		0			128 		*:5432					*:*
LISTEN		0			128 		*:10050					*:*
LISTEN		0			128 		*:9090					*:*
LISTEN		0			128 		*:10051					*:*
LISTEN		0			128 		[::]:5432				[::]:*
LISTEN		0			128 		[::]:10050				[::]:*
LISTEN		0			128 		[::]:9090				[::]:*
LISTEN		0			128 		[::]:10051				[::]:*

7.Java gateway

bash 复制代码
# pull 镜像
docker pull zabbix/zabbix-java-gateway:5.4-centos-latest

# 启动容器
docker run --name 5.4-zabbix-java-gateway \
-e ZBX_START_POLLERS=50 \
--privileged=true \
--network=zabbix-net \
--restart unless-stopped \
--restart=always \
-v /etc/localtime:/etc/localtime \
-v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-p 10052:10052 \
-d zabbix/zabbix-java-gateway:5.4-centos-latest
bash 复制代码
# 其他启动命令
# Linking the container to Zabbix server or Zabbix proxy
docker run --name some-zabbix-java-gateway --link some-zabbix-server:zabbix-server -d zabbix/zabbix-java-gateway:tag

启用Java gatewayServer的启动参数也要进行调整:

  • ZBX_JAVAGATEWAY_ENABLE

The variable enable communication with Zabbix Java Gateway to collect Java related checks. By default, value is false.

  • Other variables
bash 复制代码
# Additionally the image allows to specify many other environment variables listed below【仅贴出 Java gateway 相关参数】
# 本次使用默认参数
ZBX_JAVAGATEWAYPORT=10052
ZBX_STARTJAVAPOLLERS=5

修改后的启动命令:

bash 复制代码
docker run --name 5.4-zabbix-server-pgsql \
-e DB_SERVER_HOST="172.17.0.8" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix" \
-e ZBX_JAVAGATEWAY_ENABLE="true" -e ZBX_JAVAGATEWAY="172.20.240.0" \
--privileged=true \
--network=zabbix-net \
--restart unless-stopped \
--restart=always \
-v /etc/localtime:/etc/localtime \
-v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-p 10051:10051 \
-d zabbix/zabbix-server-pgsql:5.4-centos-latest

8.小小的总结

本文介绍了使用Docker部署Zabbix监控系统的主要步骤。首先创建了专用的zabbix-net网络,然后分别部署了Zabbix Server(PostgreSQL版)、Agent/Agent2和Web界面组件。文章详细说明了各容器的启动命令和关键参数配置,包括数据库连接、网络设置、端口映射等。特别记录了部署过程中遇到的常见问题及解决方案,如Agent连接问题、主机名配置错误和中文乱码处理等。最后还提供了Docker常用命令参考,包括容器管理、网络创建和日志查看等实用操作。整个部署过程覆盖了Zabbix监控系统的主要组件,并针对实际部署中的常见陷阱给出了解决方案。

9.总结及更新内容

Docker部署方便,load导出的镜像就无需下载各种依赖了。

  • 20230331 更新了对IP的说明。
  • 20230331 添加了前端图表中文乱码的解决方法。
相关推荐
无名之辈J12 小时前
系统崩溃(OOM)
后端
码农刚子13 小时前
ASP.NET Core Blazor简介和快速入门 二(组件基础)
javascript·后端
间彧13 小时前
Java ConcurrentHashMap如何合理指定初始容量
后端
catchadmin13 小时前
PHP8.5 的新 URI 扩展
开发语言·后端·php
少妇的美梦13 小时前
Maven Profile 教程
后端·maven
白衣鸽子13 小时前
RPO 与 RTO:分布式系统容灾的双子星
后端·架构
Jagger_13 小时前
SOLID原则与设计模式关系详解
后端
间彧13 小时前
Java: HashMap底层源码实现详解
后端
这里有鱼汤13 小时前
量化的困局:当所有人都在跑同一个因子时,我们还能赚谁的钱?
后端·python
武子康14 小时前
大数据-130 - Flink CEP 详解 - 捕获超时事件提取全解析:从原理到完整实战代码教程 恶意登录案例实现
大数据·后端·flink