基于Docker部署Zabbix Server
安裝docker
關(guān)閉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服務(wù)
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
查看版本號
安裝Zabbix鏡像
安裝MySQL
啟動一個單獨的數(shù)據(jù)庫mysql用于保存zabbix數(shù)據(jù),定義了數(shù)據(jù)庫名zabbix,數(shù)據(jù)庫用戶zabbix,密碼zabbix,在本地目錄/home/zabbix/data中持久化保存mysql容器運行中的數(shù)據(jù),確保容器退出運行后,數(shù)據(jù)不會丟失,最后兩條是定義了數(shù)據(jù)庫的字符集為utf8,解決了mysql數(shù)據(jù)庫保存中文的問題。
[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服務(wù),并關(guān)聯(lián)這個服務(wù)到上面已經(jīng)啟動的mysql數(shù)據(jù)庫實例上,確保zabbix的數(shù)據(jù)可以保存到mysql數(shù)據(jù)庫中。
[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參數(shù)conf
- /usr/lib/zabbix/externalscripts外部檢查(項目類型)使用該卷,它是ExternalScripts參數(shù)conf
- /var/lib/zabbix/modules該卷允許加載其他模塊并使用LoadModule功能擴展Zabbix服務(wù)器。
- /var/lib/zabbix/enc該卷用于存儲TLS相關(guān)文件。這些文件的名稱使用規(guī)定ZBX_TLSCAFILE,ZBX_TLSCRLFILE,ZBX_TLSKEY_FILE和ZBX_TLSPSKFILE變量。
- /var/lib/zabbix/ssh_keys該卷用作SSH檢查和操作的公鑰和私鑰的位置。它是SSHKeyLocation參數(shù)zabbix_server.conf。
- /var/lib/zabbix/ssl/certs該卷用作客戶端身份驗證的SSL客戶端證書文件的位置。它是SSLCertLocation參數(shù)zabbix_server.conf。
- /var/lib/zabbix/ssl/keys該卷用作客戶端身份驗證的SSL私鑰文件的位置。它是SSLKeyLocation參數(shù)zabbix_server.conf。
- /var/lib/zabbix/ssl/ssl_ca該卷用作SSL服務(wù)器證書驗證的證書頒發(fā)機構(gòu)(CA)文件的位置。它是SSLCALocation參數(shù)zabbix_server.conf。
- /var/lib/zabbix/snmptraps該卷用作snmptraps.log文件的位置。它可以由zabbix-snmptraps容器共享,并volumes_from在創(chuàng)建Zabbix服務(wù)器的新實例時使用Docker選項繼承。可以使用共享卷和交換ZBX_ENABLE_SNMP_TRAPS環(huán)境變量來啟用SNMP陷阱處理功能true。
- /var/lib/zabbix/mibs該卷允許添加新的MIB文件。它不支持子目錄,必須放置所有MIB /var/lib/zabbix/mibs
2.4. 安裝zabbix-web-Nginx-mysql
啟動zabbix前端web界面實例,將web界面實例與前面的mysql數(shù)據(jù)庫服務(wù)實例
[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 連接數(shù)據(jù)庫實例,mysql-server必須要與第一步的--name mysql-server完全一致
- --link zabbix-server-mysql:zabbix-server 連接zabbix服務(wù)器實例,zabbix-server-mysql必須要與第二步的--name zabbix-server-mysql完全一致
- DB_SERVER_HOST變量的值要與第二步指定的-e DB_SERVER_HOST="mysql-server"一致
- 3. 檢查容器命令
- 3.1. 查看所有容器列表ID及狀態(tài)
- [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、內(nèi)存、網(wǎng)絡(luò)、io情況
[root@localhost ~]# docker stats -a
- 4. Web配置 4.1. 用瀏覽器訪問zabbix http://Zabbix IP賬號:Admin 密碼:zabbix 4.2.設(shè)置中文: 4.3. 圖形頁面數(shù)據(jù)字段顯示為方框 4.4. 從Window找到相應(yīng)的字體 控制面板-->字體-->選擇一種中文字庫例如“楷體”(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值是唯一的,區(qū)分大小寫的主機名,-p指定將內(nèi)部端口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設(shè)置宿主機agent






