基于Docker部署Zabbix Server

基于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_bin2.2. 安装zabbix-JAVA-gateway[root@localhost ~]# docker run --restart=always --name zabbix-java-gateway -t-d zabbix/zabbix-java-gateway:centos-4.2.82.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 
基于Docker部署Zabbix Server

文章插图
 
【基于Docker部署Zabbix Server】启动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


推荐阅读