Zabbix【部署 05】 Docker部署Zabbix Server Agent Agent2 Web interface及 Java-Gate-Way(详细启动脚本及踩坑记录)不定时更新

简介: Zabbix【部署 05】 Docker部署Zabbix Server Agent Agent2 Web interface及 Java-Gate-Way(详细启动脚本及踩坑记录)不定时更新

docker常用命令

# 查看运行的容器
docker ps
# 查看日志
docker logs containerID
# 重启容器
docker restart containerID
# 创建 zabbix 专用网络
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
# 查询
docker network ls
# 容器启动命令查询
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

Preparation

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

IP地址说明

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

1.Server

# 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服务:

# 容器启动【开启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
# 数据库会自动初始化166张表

2.Agent

2.1 agent

# 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

其他启动命令:

# 其他启动命令
# 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

踩坑记录:

# 1.报错
active check configuration update from [云服务器内网IP:10051] started to fail (cannot connect to [[云服务器内网IP]:10051]: [111] Connection refused)
# 解决
# Zabbix server 启动时添加
-p 10051:10051 \
# 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
# 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": "",

2.2 agent2

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

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

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

# 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

3.Web interface

# 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)暴露给主机。

其他启动命令:

# 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
# 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        [::]:*

4.Java gateway

# 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
# 其他启动命令
# 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
# Additionally the image allows to specify many other environment variables listed below【仅贴出 Java gateway 相关参数】
# 本次使用默认参数
ZBX_JAVAGATEWAYPORT=10052
ZBX_STARTJAVAPOLLERS=5

修改后的启动命令:

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

5.总结及更新内容

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

  • 20230331 更新了对IP的说明。
  • 20230331 添加了前端图表中文乱码的解决方法。
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
传感器 监控 前端开发
zabbix中IPMI (Intelligent Platform Management Interface)
zabbix中IPMI (Intelligent Platform Management Interface)
90 68
|
11天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
72 26
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
155 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
19天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
23 2
|
25天前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
41 3
|
26天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
34 1
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
58 1
|
29天前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
46 0
下一篇
DataWorks