使用 Docker 安装 Zabbix 实践

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

内容简介: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

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

查看所有标签

猜你喜欢:

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

Java解惑

Java解惑

布洛赫、加夫特 / 陈昊鹏 / 人民邮电出版社 / 2006-1 / 39.00元

本书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用了短程序的方式,这些程序的行为与其看似的大相径庭。在每个谜题之后都给出了详细的解惑方案,这些解惑方案超越了对程序行为的简单解释,向读者展示了如何一劳永逸地避免底层的陷阱与缺陷。 本书趣味十足、寓教于乐,适合于具备Java知识的学习者和有编程经验的Java程序员。一起来看看 《Java解惑》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具