如何使用docker来安装zabbix服务
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。是目前最为主流的开源监控系统。
官方文档和官方下载地址
https://www.zabbix.com/download
https://www.zabbix.com/documentation
zabbix docker地址
https://hub.docker.com/r/zabbix/zabbix-server-mysql/tags/
https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql/tags/
docker安装教程
ubuntu安装docker-ce
centos7安装docker
下载mysql镜像
[root@cnbugs ~]# docker pull mysql:5.7

运行mysql容器
docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="zabbix" -p 33069:3306 -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin

下载zabbix-server-mysql镜像
docker pull zabbix/zabbix-server-mysql:centos-4.0-latest
运行zabbix-server-mysql容器
docker run --name zabbix-server-mysql -t --link mysql-server:mysql -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="zabbix" -p 10051:10051 -d zabbix/zabbix-server-mysql:centos-4.0-latest
下载zabbix-web-nginx-mysql镜像
docker pull zabbix/zabbix-web-nginx-mysql:centos-4.0-latest
运行zabbix-web-nginx-mysql容器
docker run --name zabbix-web-nginx-mysql -t --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" -e MYSQL_ROOT_PASSWORD="zabbix" -e PHP_TZ="Asia/Singapore" -p 80:8080 -d zabbix/zabbix-web-nginx-mysql:centos-4.0-latest
备注:
如果需要把数据映射到宿主机中,可以使用如下方案来运行容器
mkdir -p /data/docker/mysql/zabbix/data
mkdir -p /data/docker/zabbix/alertscripts
mkdir -p /data/docker/zabbix/externalscripts
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-v /data/docker/mysql/zabbix/data:/var/lib/mysql \
-p 127.0.0.1:3306:3306 \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
docker run --name zabbix-server-mysql -t \
--link mysql-server:mysql \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
-d \
zabbix/zabbix-server-mysql:centos-4.0-latest
docker run --name zabbix-web-nginx-mysql -t \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-e PHP_TZ="Asia/Singapore" \
-p 80:8080 \
-d \
zabbix/zabbix-web-nginx-mysql:centos-4.0-latest
访问zabbix服务
浏览器打开http://IP地址,登陆用户名为Admin密码为zabbix进行登陆

看到如下界面成功登陆

容器监控可以使用zabbix-docker-monitoring
https://github.com/monitoringartist/zabbix-docker-monitoring
使用docker compose来配置zabbix服务容器
https://github.com/zabbix/zabbix-docker
docker从入门到实践书籍
https://yeasy.gitbook.io/docker_practice/
附录
zabbix容器化后的配置
# 根据 zabbix_server.conf 配置文件内容创建对应的目录和权限
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
StartPollers=500
StartPingers=50
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8G
TrendCacheSize=1G
Timeout=15
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
# Zabbix 容器默认的配置
LogType=console
DBHost=mysql-server
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
Fping6Location=/usr/sbin/fping6
SSHKeyLocation=/var/lib/zabbix/ssh_keys
SSLCertLocation=/var/lib/zabbix/ssl/certs/
SSLKeyLocation=/var/lib/zabbix/ssl/keys/
SSLCALocation=/var/lib/zabbix/ssl/ssl_ca/
LoadModulePath=/var/lib/zabbix/modules/
# 按照规范映射指定卷并做好脚本权限设置
-v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
# Zabbix partition optimization
1. disable Housekeeping
2. mysql_partition
https://www.zabbix.org/wiki/Docs/howto/mysql_partition
# 容器内部的调整
apt-get update
apt-get install lrzsz vim cron -y
mysql -uzabbix -pzabbix zabbix < partition.sql
# 设置定时任务
vim /etc/crontab
01 01 * * * root mysql -uzabbix -pzabbix zabbix -e"CALL partition_maintenance_all('zabbix')"
service cron restart
# 在宿主机上配置定时任务的方法
docker exec $(docker ps -aqf "name=mysql-server") mysql -uzabbix -pzabbix zabbix -e"CALL partition_maintenance_all('zabbix')"
升级容器
升级zabbix容器步骤
- 拉取最新镜像
- 删除当前容器
- 用最新的镜像来创建容器
创建容器的时候最好做数据映射,便于之后的容器升级
# 查找当前系统中使用的镜像
docker images
# 拉取最新镜像
docker pull zabbix/zabbix-web-nginx-mysql
docker pull zabbix/zabbix-server-mysql
# 查找容器 ID
docker ps
# 导出之前的容器配置信息
docker inspect 14fd67405076
# 停止容器
docker stop 14fd67405076
docker kill 14fd67405076
# 删除容器
docker rm 14fd67405076
# 用最新镜像重新创建容器
docker run --name zabbix-server-mysql -t \
--link mysql-server:mysql \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
-d \
zabbix/zabbix-server-mysql
docker run --name zabbix-web-nginx-mysql -t \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-e PHP_TZ="Asia/Singapore" \
-p 80:80 \
-d \
zabbix/zabbix-web-nginx-mysql
如果在遇到不明白的地方可以加QQ群一起来讨论哦
QQ群1:955496382