基于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