基于Docker部署Zabbix Server
安装docker
关闭selinux
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config
安装依赖包
[root@localhost ~]# yum install -y yum-utils device-mApper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
安装Docker ce
[root@localhost ~]# yum install -y docker-ce
启动Docker服务
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
查看版本号
安装Zabbix镜像
安装MySQL
启动一个单独的数据库mysql用于保存zabbix数据,定义了数据库名zabbix,数据库用户zabbix,密码zabbix,在本地目录/home/zabbix/data中持久化保存mysql容器运行中的数据,确保容器退出运行后,数据不会丢失,最后两条是定义了数据库的字符集为utf8,解决了mysql数据库保存中文的问题。
[root@localhost ~]# docker run --restart=always --name mysql-server -t
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSword="zabbix"
-e MYSQL_ROOT_PASSWORD="zabbix"
-v /home/zabbix/data:/var/lib/mysql
-v /etc/timezone:/etc/timezone
-v /etc/localtime:/etc/localtime
-d mysql:5.7
--character-set-server=utf8
--collation-server=utf8_bin
2.2. 安装zabbix-JAVA-gateway
[root@localhost ~]# docker run --restart=always --name zabbix-java-gateway -t
-d zabbix/zabbix-java-gateway:centos-4.2.8
2.3. 安装zabbix-server-mysql
启动zabbix server服务,并关联这个服务到上面已经启动的mysql数据库实例上,确保zabbix的数据可以保存到mysql数据库中。
[root@localhost ~]# docker run --restart=always --name zabbix-server-mysql -t
-e php_TZ="Asia/Shanghai"
-e DB_SERVER_HOST="mysql-server"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="zabbix"
-e MYSQL_ROOT_PASSWORD="zabbix"
-e ZBX_JAVAGATEWAY="zabbix-java-gateway"
--link mysql-server:mysql
--link zabbix-java-gateway:zabbix-java-gateway
-v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
-v /etc/timezone:/etc/timezone
-v /etc/localtime:/etc/localtime
-v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
-v /home/zabbix/modules:/var/lib/zabbix/modules
-v /home/zabbix/enc:/var/lib/zabbix/enc
-v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys
-v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs
-v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys
-v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca
-v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps
-v /home/zabbix/mibs:/var/lib/zabbix/mibs
-p 10051:10051
-d zabbix/zabbix-server-mysql:centos-4.2.8
挂载说明:
- /usr/lib/zabbix/alertscripts该卷用于保存自定义警报脚本,它是AlertScriptsPath参数conf
- /usr/lib/zabbix/externalscripts外部检查(项目类型)使用该卷,它是ExternalScripts参数conf
- /var/lib/zabbix/modules该卷允许加载其他模块并使用LoadModule功能扩展Zabbix服务器。
- /var/lib/zabbix/enc该卷用于存储TLS相关文件。这些文件的名称使用规定ZBX_TLSCAFILE,ZBX_TLSCRLFILE,ZBX_TLSKEY_FILE和ZBX_TLSPSKFILE变量。
- /var/lib/zabbix/ssh_keys该卷用作SSH检查和操作的公钥和私钥的位置。它是SSHKeyLocation参数zabbix_server.conf。
- /var/lib/zabbix/ssl/certs该卷用作客户端身份验证的SSL客户端证书文件的位置。它是SSLCertLocation参数zabbix_server.conf。
- /var/lib/zabbix/ssl/keys该卷用作客户端身份验证的SSL私钥文件的位置。它是SSLKeyLocation参数zabbix_server.conf。
- /var/lib/zabbix/ssl/ssl_ca该卷用作SSL服务器证书验证的证书颁发机构(CA)文件的位置。它是SSLCALocation参数zabbix_server.conf。
- /var/lib/zabbix/snmptraps该卷用作snmptraps.log文件的位置。它可以由zabbix-snmptraps容器共享,并volumes_from在创建Zabbix服务器的新实例时使用Docker选项继承。可以使用共享卷和交换ZBX_ENABLE_SNMP_TRAPS环境变量来启用SNMP陷阱处理功能true。
- /var/lib/zabbix/mibs该卷允许添加新的MIB文件。它不支持子目录,必须放置所有MIB /var/lib/zabbix/mibs
2.4. 安装zabbix-web-Nginx-mysql
启动zabbix前端web界面实例,将web界面实例与前面的mysql数据库服务实例
[root@localhost ~]# docker run --restart=always
--name zabbix-web-nginx-mysql -t
-e PHP_TZ="Asia/Shanghai"
-e DB_SERVER_HOST="mysql-server"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="zabbix"
-e MYSQL_ROOT_PASSWORD="zabbix"
--link mysql-server:mysql
--link zabbix-server-mysql:zabbix-server
-v /etc/timezone:/etc/timezone
-v /etc/localtime:/etc/localtime
-p 80:80
-d zabbix/zabbix-web-nginx-mysql:centos-4.2.8
备注:
- --link mysql-server:mysql 连接数据库实例,mysql-server必须要与第一步的--name mysql-server完全一致
- --link zabbix-server-mysql:zabbix-server 连接zabbix服务器实例,zabbix-server-mysql必须要与第二步的--name zabbix-server-mysql完全一致
- DB_SERVER_HOST变量的值要与第二步指定的-e DB_SERVER_HOST="mysql-server"一致
- 3. 检查容器命令
- 3.1. 查看所有容器列表ID及状态
- [root@localhost ~]# docker ps -a
3.2. 查看容器日志
[root@localhost ~]# docker logs 容器ID
3.3. 进入容器
[root@localhost ~]# docker exec -it 容器ID /bin/bash
3.4. 查看容器使用cpu、内存、网络、io情况
[root@localhost ~]# docker stats -a
- 4. Web配置 4.1. 用浏览器访问zabbix http://Zabbix IP账号:Admin 密码:zabbix 4.2.设置中文: 4.3. 图形页面数据字段显示为方框 4.4. 从Window找到相应的字体 控制面板-->字体-->选择一种中文字库例如“楷体”(simkai.ttf),将字体文件simkai.ttf上传进zabbix-web-nginx-mysql容器目录:
- [root@localhost~]# docker cp simkai.ttf 容器ID:/usr/share/zabbix/assets/fonts/
4.5. 进入zabbix/zabbix-web-nginx-mysql容器
[root@localhost ~]# docker exec -it zabbix-web-nginx-mysql /bin/bash
4.6. 进入容器目录/usr/share/zabbix/assets/fonts
[root@fb635f4ee263 zabbix]# cd /usr/share/zabbix/assets/fonts
[root@4a3af4bb1cbf fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.backup
[root@4a3af4bb1cbf fonts]# mv simkai.ttf DejaVuSans.ttf
4.7. 刷新zabbix页面
5. 宿主机安装Zabbix-agent
5.1. 查看 Zabbix-Server容器IP地址
[root@localhost ~]# docker ps
[root@localhost ~]# docker exec -it zabbix-server-mysql /bin/bash
[root@c6b965eea180 ~]# cat /etc/hosts
- 5.2. 使用正常的zabbix-agent的安装 ZBX_SERVER_HOST的值为Zabbix-server的ip,ZBX_HOSTNAME值是唯一的,区分大小写的主机名,-p指定将内部端口10050映射值外部端口10050
[root@localhost ~]# docker run --restart=always
--name zabbix-agent -t
-e "ZBX_SERVER_HOST=192.168.73.233"
-e ZBX_HOSTNAME="Zabbix Server"
-p 10050:10050
-d zabbix/zabbix-agent:centos-4.2.8
[root@localhost ~]# docker exec -it zabbix-agent /bin/bash
[root@2510ebd059d0 zabbix]# cat /etc/hosts
5.3. 在Zabbix的web设置宿主机agent