如何使用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

https://www.cnbugs.com/post-1898.html

centos7安装docker

https://www.cnbugs.com/post-1900.html

下载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

发表评论

后才能评论