使用 Docker 安装 Zabbix 实践

栏目: 服务器 · 发布时间: 7年前

内容简介:Zabbix 是目前最为主流的开源监控方案之一,前面的文章主要介绍了传统的安装方式,在 Docker 容器出现后我们也拥有更高效的安装方式,这里就主要分享基于 Docker 安装和配置 Zabbix 的相关心得。使用 Docker 安装 Zabbix 实践2018 年 10 月 30 日 - 初稿

Zabbix 是目前最为主流的开源监控方案之一,前面的文章主要介绍了传统的安装方式,在 Docker 容器出现后我们也拥有更高效的安装方式,这里就主要分享基于 Docker 安装和配置 Zabbix 的相关心得。

使用 Docker 安装 Zabbix 实践

更新历史

2018 年 10 月 30 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/zabbix-docker/

扩展阅读

Zabbix - https://www.zabbix.com/

官方文档

zabbix-server

从容器安装 Zabbix Server 最简单的方式之一,关于数据卷是否需要映射,看实际需求吧

# install docker-ce
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker

# Install mysql, zabbix, nginx in docker 
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-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" \
-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:80 \
-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:80 \
-d \
zabbix/zabbix-web-nginx-mysql:centos-4.0-latest

zabbix-proxy 和 zabbix-agent 也可以用容器安装,不过 agent 就不推荐容器化了,针对容器本身的监控可以使用 zabbix-docker-monitoring,当然 Prometheus 才是监控容器的利刃。

https://github.com/monitoringartist/zabbix-docker-monitoring

zabbix-docker 官方的 GitHub 站点还包含更详细的 docker compose 配置

https://github.com/zabbix/zabbix-docker

关于 Docker 常用命令可以参考 Docker 从入门到实践

https://wsgzao.github.io/post/docker/

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')"

升级容器

  1. 拉取最新镜像
  2. 停止并删除当前运行容器
  3. 用最新镜像重新创建容器
  4. All Done
# 查找当前系统中使用的镜像 
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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Head First Python

Head First Python

Paul Barry / O'Reilly Media / 2010-11-30 / USD 49.99

Are you keen to add Python to your programming skills? Learn quickly and have some fun at the same time with Head First Python. This book takes you beyond typical how-to manuals with engaging images, ......一起来看看 《Head First Python》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具