兩臺VMware 虛擬機html
一臺充當zabbix server(安裝docker)ip:192.168.73.133前端
一臺充當zabbix agent(安裝docker)ip:192.168.73.136python
基礎環境mysql
cat /etc/redhat-releaselinux
CentOS Linux release 7.5.1804 (Core)nginx
dcoker安裝git
#關閉防火牆:github
systemctl stop firewalldweb
systemctl disable firewalldsql
#關閉selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker軟件包源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安裝Docker ce
yum install -y docker-ce
# 啓動Docker服務並設置開機啓動
systemctl start docker
systemctl enable docker
# 查看版本號
[root@localhost ~]# docker versionClient: Docker Engine - Community Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89 Built: Thu Jul 25 21:21:07 2019 OS/Arch:
linux/amd64 Experimental: falseServer: Docker Engine - Community Engine:
Version: 19.03.1 API version: 1.40 (minimum version 1.12)
Go version: go1.12.5 Git commit: 74b1e89 Built: Thu Jul 25 21:19:36 2019
OS/Arch: linux/amd64
Experimental: false
containerd: Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init: Version: 0.18.0
GitCommit: fec3683
#配置鏡像加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
#重啓鏡像
systemctl restart docker
docker安裝完畢!
提供兩種不一樣的安裝方式
一、採用zabbix官網中的docker安裝章節內容,在官方鏡像庫中拉取鏡像的方式進行安裝
https://www.zabbix.com/documentation/4.0/zh/manual/installation/containers
本文檔主機的本地目錄結構目錄在/home/zabbix下,設置了用於保存容器的數據,其它目錄根據實際應用狀況可選,如下操做命令須要鏈接外網進行鏡像拉取,沒有外網須要離線下載鏡像包
1)啓動一個單獨的數據庫mysql用於保存zabbix數據
1 docker run --name mysql-server -t \ 2 -p 3306:3306 \ 3 -e MYSQL_DATABASE="zabbix" \ 4 -e MYSQL_USER="zabbix" \ 5 -e MYSQL_PASSWORD="zabbix" \ 6 -e MYSQL_ROOT_PASSWORD="zabbix" \ 7 -v /home/zabbix/data:/var/lib/mysql \ 8 -v /home/zabbix/data/conf:/etc/mysql/conf.d\ 9 -d mysql:5.7 \ 10 --restart: always\ 11 --character-set-server=utf8 \ 12 --collation-server=utf8_bin
定義了數據庫名zabbix,數據庫用戶zabbix,密碼zabbix,在本地目錄/home/zabbix/data中持久化保存mysql容器運行中的數據,確保容器退出運行後,數據不會丟失,最後兩條是定義了數據庫的字符集爲utf8,解決了mysql數據庫保存中文的問題;
2)啓動zabbix server服務,並關聯這個服務到上面已經啓動的mysql數據庫實例上,確保zabbix的數據能夠保存到mysql數據庫中,掛載在本地目錄中的還有其它一些內容,根據生產環境實際狀況靈活決定是否掛載,若是掛載能夠經過容器直接加載本地目錄中的腳本或認證信息,鏡像版本使用的centos版本,便於後續可以使用python腳本,預裝了py環境
1 docker run --name zabbix-server-mysql -t \ 2 -e DB_SERVER_HOST="mysql-server" \ 3 -e MYSQL_DATABASE="zabbix" \ 4 -e MYSQL_USER="zabbix" \ 5 -e MYSQL_PASSWORD="zabbix" \ 6 -e MYSQL_ROOT_PASSWORD="zabbix" \ 7 --link mysql-server:mysql \ 8 -v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \ 9 -v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \ 10 -v /home/zabbix/zabbixconfig:/etc/zabbix \ 11 -v /home/zabbix/modules:/var/lib/zabbix/modules \ 12 -v /home/zabbix/enc:/var/lib/zabbix/enc \ 13 -v /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys \ 14 -v /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs \ 15 -v /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys \ 16 -v /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \ 17 -v /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps \ 18 -v /home/zabbix/mibs:/var/lib/zabbix/mibs \ 19 -p 10051:10051 \ 20 -d zabbix/zabbix-server-mysql:centos-latest \ 21 -restart=always
掛載說明:
/usr/lib/zabbix/alertscripts
該卷用於保存自定義警報腳本,它是AlertScriptsPath參數zabbix_server.conf
/usr/lib/zabbix/externalscripts
外部檢查(項目類型)使用該卷,它是ExternalScripts參數zabbix_server.conf
/usr/lib/zabbix/alertscripts
該卷用於保存zabbix-server端的配置文件
/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
備註:一般會用到的是存放腳本的路徑和配置文件的路徑
3)啓動zabbix前端web界面實例,將web界面實例與前面的mysql數據庫服務實例
1 docker run --name zabbix-web-nginx-mysql -t \ 2 -e DB_SERVER_HOST="mysql-server" \ 3 -e MYSQL_DATABASE="zabbix" \ 4 -e MYSQL_USER="zabbix" \ 5 -e MYSQL_PASSWORD="zabbix" \ 6 -e MYSQL_ROOT_PASSWORD="zabbix" \ 7 -e PHP_TZ="Asia/Shanghai" \ 8 --link mysql-server:mysql \ 9 --link zabbix-server-mysql:zabbix-server \ 10 -p 8080:80 \ 11 -d zabbix/zabbix-web-nginx-mysql:latest
--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"一致
4)檢查安裝的三個容器是否都正常啓動
以上狀態就是三個容器所有正常啓動
#若是有沒有啓動可使用查看全部容器列表
[root@localhost ~]# docker ps -a
#找到未能啓動的容器ID,而後查看日誌
[
5)宿主機上,使用正常的zabbix-agent的安裝,不使用容器
1 #rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.5-1.el7.x86_64.rpm 2 #yum install zabbix-agent 3 #vim /etc/zabbix/zabbix_agentd.conf #修改配置文件 4 Server=172.17.0.3 5 ServerActive=172.17.0.3:10050 6 Hostname=Zabbix server 7 #systemctl restart zabbix-agent 8 #systemctl enable zabbix-agent
注意:若是要對宿主機進行監控,請編輯宿主機的zabbix_agentd.conf
,將Server
地址,默認127.0.0.1
,修改成docker-server
容器地址,不然不通;若是是對其餘主機的監控則使用docker-zabbix-server宿主機的IP
6)驗證登錄主機8080端口,查看是否能正常登錄
使用安裝zabbix server的主機ip加端口8080登陸,帳號Admin,密碼zabbix,默認是英文,白色背景,能夠在右上角的用戶按鈕選項中調整語言和背景顏色
二、使用docker-compose,進行安裝
1)安裝docker-compose
1 # curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2 # chmod +x /usr/local/bin/docker-compose 3 # docker-compose --version 4 docker-compose version 1.23.1, build b02f1306
2)編寫yml編排文件
建立文件夾
1 # mkdir /docker-compose 2 # cd /docker-compose/ 3 # vim docker-compose.yml
編寫docker-compose
1 version: '3' 2 mysql: 3 image: mariadb:latest 4 ports: 5 - "3306:3306" 6 volumes: 7 - ./home/zabbix/data:/var/lib/mysql 8 - ./home/zabbix/data:/etc/mysql 9 - ./home/zabbix/data:/var/log/mysql 10 environment: 11 - MYSQL_USER=zabbix 12 - MYSQL_DATABASE=zabbix 13 - MYSQL_PASSWORD=zabbix 14 - MYSQL_ROOT_PASSWORD=123321 15 - LANG=en_US.utf8 16 - TZ=Asia/Shanghai 17 restart: always 18 services: 19 zabbix-server: 20 container_name: zabbix-server 21 image: zabbix/zabbix-server-mysql:centos-latest 22 restart: always 23 network_mode: host 24 # ports: 25 # - "10051:10051" 26 environment: 27 - DB_SERVER_HOST=192.168.73.133 28 - MYSQL_USER=zabbix 29 - MYSQL_DATABASE=zabbix 30 - MYSQL_PASSWORD=zabbix 31 - DB_SERVER_ROOT_USER=root 32 - DB_SERVER_ROOT_PASS=123321 33 - TZ='Asia/Shanghai' 34 volumes: 35 - /home/zabbix/zabbixconfig:/etc/zabbix 36 - /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts 37 - /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts 38 - /home/zabbix/modules:/var/lib/zabbix/modules 39 - /home/zabbix/enc:/var/lib/zabbix/enc 40 - /home/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys 41 - /home/zabbix/ssl/certs:/var/lib/zabbix/ssl/certs 42 - /home/zabbix/ssl/keys:/var/lib/zabbix/ssl/keys 43 - /home/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca 44 - /home/zabbix/snmptraps:/var/lib/zabbix/snmptraps 45 - /home/zabbix/mibs:/var/lib/zabbix/mibs 46 zabbix-web-nginx: 47 image: zabbix/zabbix-web-nginx-mysql:latest 48 restart: always 49 network_mode: bridge 50 ports: 51 - "8080:80" 52 environment: 53 - DB_SERVER_HOST=192.168.73.133 54 - MYSQL_DATABASE=zabbix 55 - MYSQL_USER=zabbix 56 - MYSQL_PASSWORD=zabbix 57 - MYSQL_ROOT_PASSWORD=123321 58 - ZBX_SERVER_HOST=192.168.73.133 59 - PHP_TZ="Asia/Shanghai" 60 - TZ='Asia/Shanghai' 61 zabbix-agent: 62 image: zabbix/zabbix-agent:latest 63 environment: 64 - ZBX_HOSTNAME=Zabbix server 65 - ZBX_SERVER_HOST=127.0.0.1 66 - ZBX_SERVER_PORT=10051 67 - TZ='Asia/Shanghai' 68 network_mode: host 69 # ports: 70 # - "10050:10050" 71 restart: always 72 privileged: true 73 # links: 74 # - zabbix-server:zabbixhost
3)根據本身主機的ip地址進行修改,主要是修改編排文件docker-compose.yml
53行 - DB_SERVER_HOST=當前主機IP
105行 - DB_SERVER_HOST=當前主機IP
115行 - ZBX_SERVER_HOST=當前主機IP
4)加載yml編排文件(須要等待一些時間,由於須要下載鏡像)
docker-compose -f docker-compose.yml up -d
5)加載完以後查看容器組是否運行
[root@localhost cmp_zabbix_server]# docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------------------------------------- cmp_zabbix_server_zabbix-agent_1_95447af24cfd /sbin/tini -- /usr/bin/doc ... Up cmp_zabbix_server_zabbix-web-nginx_1_aeec36553371 docker-entrypoint.sh Up 443/tcp, 0.0.0.0:8080->80/tcp zabbix-server
1 若是該主機安裝了docker就能夠,同樣可使用docker-compose,編寫編排yml文件安裝,根據主機ip地址修改第8行ip
1 # mkdir /docker-compose 2 # cd /docker-compose/ 3 # vim docerk-compose.yml 4 5 version: '3' 6 version: '3' 7 services: 8 zabbix-agent: 9 image: zabbix/zabbix-agent:latest 10 container_name: zabbix-agent 11 environment: 12 - ZBX_HOSTNAME=192.168.73.136 13 - ZBX_SERVER_HOST=192.168.73.133 14 - ZBX_SERVER_PORT=10051 15 - TZ='Asia/Shanghai' 16 network_mode: bridge 17 ports: 18 - "10050:10050" 19 restart: always 20 privileged: true
加載編排文件
docker-compose -f docker-compose.yml up -d --build
查看容器是否啓動成功
docker-compose ps
若是主機沒有安裝docker,則使用rpm包進行安裝便可,見zabbix-server主機的agent安裝步驟
驗證登錄主機8080端口,查看是否能正常登錄,使用安裝zabbix server的主機ip加端口8080登陸,帳號admin,密碼zabbix,默認是英文,白色背景,能夠在右上角的用戶按鈕選項中調整語言和背景顏色,在配置選項中添加剛纔安裝的agent的主機
能夠關注本人公衆號,若有不對的地方和問題,歡迎指出和交流
參考文檔:
https://www.cnblogs.com/yaun1498078591/p/10181106.html
https://www.cnblogs.com/shuaiyin/p/11070056.html
https://blog.csdn.net/firehadoop/article/details/84642907