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 gateway
时Server
的启动参数也要进行调整:
- 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 添加了前端图表中文乱码的解决方法。