昨天用zabbix官方docker镜像 把公司之前老的zabbix服务器从物理机迁移到了云主机上,发现使用官方的zabbix docker镜像安装和使用非常方便。更多的好处是上云主机后,以后要迁移到哪个云服务商变得都很方便了。只要导出两个docker 镜像,然后在新的云主机上安装docker ,导入docker 镜像,迁移mysqlDB,启动两个docker ,迁移完成。迁移工作时间将只决定于迁移的数据量,而不是相关的配置。
具体 使用方法:
- 说明一下老的zabbix
老的zabbix 是1.8.x版本的,这次迁移只迁移模板、主机,不迁移历史数据.模板、主机数据使用导入导出功能迁移。 - 说明一下当前新的云主机情况:
配置:16G 4core 300G SSD
系统:Ubuntu 16.04LTS
应用:- Docker version 17.05.0-ce
- mysqld Ver 5.7.18-0ubuntu0.16.04.1
- Zabbix Agent (daemon) v2.4.7 被监控服务器上安装的zabbix代理
Docker 安装如下:1
2
3
4
5
6
7#!/bin/bash
apt-get update
apt-get install -y apt-transport-https ca-certificates
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install -y docker-engine
mysql5.7.18 安装(mysql 还是不用docker了,不放心,应用可以丢,数据不能丢):1
2
3apt-get install mysql-server
mysqladmin create zabbix
GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'172.17.0.%' WITH GRANT OPTION
- 用zabbix docker 镜像安装zabbix-server 和 zabbix-frontend
先用docker 拉两个官方镜像:
zabbix/zabbix-server-mysql:ubuntu-3.4-latest —基于ubuntu的zabbix-server(zabbix server 后端支持mysql)
zabbix/zabbix-web-nginx-mysql:ubuntu-3.4-latest —基于ubuntu的zabbix-frontend (web 前端 ,后端用mysql)
1 | docker pull zabbix/zabbix-server-mysql:ubuntu-3.4-latest |
start zabbix-server container for mysqldb1
2
3
4
5
6
7
8
9
10
11参数说明 :
-p 10051:10051 端口映射
--name zabbix-server docker 名
-h zabbix-server docker 主机名
-e DB_SERVER_HOST="172.17.0.1" mysql db 主机ip
-e MYSQL_USER="zabbix" mysql db 用户名
MYSQL_PASSWORD="your_db_passwd" mysql db 密码
### start zabbix-server container (可以放/etc/rc.local中)
docker rm zabbix-server
docker run -p 10051:10051 --name zabbix-server -h zabbix-server -e DB_SERVER_HOST="172.17.0.1" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="your_db_passwd" -d zabbix/zabbix-server-mysql:ubuntu-3.4-latest
start zabbix-web container for mysqldb1
2
3
4
5
6
7
8
9
10
11
12-p 80:80 端口映射
--name zabbix-web docker 名
-h zabbix-web docker 主机名
--link zabbix-server:zabbix-server 让zabbix-web 容器可以直接用zabbix-server这个名字访问zabbix-server,而不一定要用ip地址,因为每次启动,zabbix-server的172.17的ip可能会变,要求两个容器要在同一台主机上。
-e DB_SERVER_HOST="172.17.0.1" mysql db 主机ip
-e MYSQL_USER="zabbix" mysql db 用户名
-e MYSQL_PASSWORD="your_db_passwd" mysql db 密码
-e PHP_TZ="Asia/Shanghai" php timezone
### start zabbix-web container (可以放/etc/rc.local中)
docker rm zabbix-web
docker run -p 80:80 --name zabbix-web -h zabbix-web --link zabbix-server:zabbix-server -e DB_SERVER_HOST="172.17.0.1" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="your_db_passwd" -e ZBX_SERVER_HOST="zabbix-server" -e PHP_TZ="Asia/Shanghai" -d zabbix/zabbix-web-nginx-mysql:ubuntu-3.4-latest
更多启动参数,大家可以访问zabbix官方docker镜像 ,点击具体镜像名来查看,讲得非常详细
安装完成后,用chrome在网页上访问,显示效果如下(记得把admin的密码改掉):
- zabbix邮件设置方法如下:
- 在administration–Users–admin用户–Media–add一个Email帐号(我使用的是189邮箱 ,因为它在收到邮件后有短信通知,就不用去搞什么微信了,哈哈),如下图:
- 在Configuration–actions中,把默认的规则设置成enable,没有这个,用admin用户也收不到报警
- 在administration–Media types中设置Email的邮件服务器信息:
上面3点都配置完成,邮件就基本上没有问题了。用189邮箱的话,还是带短息通知的,非常方便。
最后,大家可以用zabbix的导入导出功能,把老的zabbix中的模板和主机导出并导入到新的zabbix中,完成迁移。当然这个工作可能也不会非常顺利,可能需要手动更改导出的xml文件,并多次尝试才能完成。但是,的确,这是一个可以完成的工作。我是一次性把所有老zabbix(1.8.x)上的模板全部导出到一个文件,再全部导入,只要根据出错提示,更改相关出错内容,就可以了。从zabbix1.8.x导入的模板可能没有screen/Discovery/web项,但不影响使用。