如何在OpenEuler 上快速部署一套Zabbix監控系統
一、環境信息
用途 | 機器IP | 操作系統 | 備注 |
---|---|---|---|
zabbix-server | 172.22.33.180 | openeuler 22.03 LTS SP3 | 7.0 LTS 版本,容器部署 |
zabbix-agent | 172.16.10.182 | openeuler 22.03 LTS SP3 | 7.0 源碼編譯部署 |
二、Docker 部署
2.1 二進制包下載
wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz
2.2 解壓,拷貝至/usr/bin 下
tar -xf docker-19.03.9.tgz
cp docker/* /usr/bin
which docker
2.3 編寫docker.service文件
vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target
備注: 如果想要修改docker
默認存儲路徑
,不推薦此方式,建議保留/var/lib/docker
,使用軟連接
的方式
2.4 添加可執行權限
chmod +x /etc/systemd/system/docker
2.5 啟動,加載,開機自啟動
systemctl daemon-reload
systemctl start docker
systemctl enable docker
2.6 配置鏡像加速器
請自行準備加速地址[2024年6月]
mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxxxxx/"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
三、docker-compose 部署
3.1 docker 和 docker-compose 的版本對應關系
- https://docs.docker.com/compose/compose-file/compose-versioning/#version-1-to-2x
3.2 安裝docker-compose
#從GitHub上 下載docker-compose 二進制包
root@manager:~# wget https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Linux-x86_64#把下載下來的軟件包上傳到/root 路徑下
root@manager:~# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
root@manager:~# chmod +x /usr/bin/docker-compose#安裝后查看下版本
root@manager:~# docker-compose version
docker-compose version 1.29.0, build 07737305
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
四、安裝部署zabbix-server
4.1 zabbix7.0新功能描述
更多內容源于zabbix官網,更多詳情:
https://www.zabbix.com/documentation/current/zh/manual/introduction/whatsnew700
4.2 zabbix7.0安裝要求
更多內容源于zabbix官網,更多詳情:
https://www.zabbix.com/documentation/current/en/manual/installation/requirements
4.3 zabbix7.0容器化安裝方式
更多內容源于zabbix官網,更多詳情:
https://www.zabbix.com/documentation/current/en/manual/installation/containers
Zabbix 提供基于各種操作系統基礎映像的映像。要獲取特定 Zabbix 組件支持的基礎操作系統映像列表,請參閱Docker Hub中的組件描述。所有 Zabbix 映像都配置為在基礎映像更新時重建最新映像。
此外還需要 PostgreSQL 數據庫支持的 Zabbix serve 運行
4.3.1 使用docker-compose運行zabbix-server
這里我沒用創建單獨的容器網絡,直接使用宿主機網絡通信,注意宿主機上的端口,切莫端口沖突
- 創建zabbix工作目錄
mkdir -p /home/application/zabbix
- 創建docker-compose.yaml 文件 **
vim /home/application/zabbix/docker-compose.yaml
**- 注意自定義修改pg數據庫的密碼
- postgres_data 數據庫的數據目錄,單獨掛載在zabbix 的工作目錄的postgres_data 下,也就是,
/home/application/zabbix/postgres_data
- zabbix 的 zabbix_alertscripts 自定義警報腳本,單獨掛載在zabbix 的工作目錄的zabbix_alertscripts 下,也就是,
/home/application/zabbix/zabbix_alertscripts
- 網絡模式,宿主機模式
version: "3"
services:postgres:image: postgres:15.7-alpinecontainer_name: zabbix-postgresenvironment:POSTGRES_DB: zabbixPOSTGRES_USER: zabbixPOSTGRES_PASSWORD: srebro.cncommand: -c max_connections=2000restart: alwaysvolumes:- ./postgres_data:/var/lib/postgresql/datanetwork_mode: hostzabbix-server:image: zabbix/zabbix-server-pgsql:7.0-alpine-latest#image: zabbix/zabbix-server-pgsql:7.0-ubuntu-latest-newcontainer_name: zabbix-serverenvironment:DB_SERVER_HOST: 127.0.0.1POSTGRES_USER: zabbixPOSTGRES_PASSWORD: srebro.cnPOSTGRES_DB: zabbixTZ: Asia/Shanghaivolumes:- ./zabbix_alertscripts:/usr/lib/zabbix/alertscriptsnetwork_mode: hostrestart: alwaysdepends_on:- postgreszabbix-web-nginx:image: zabbix/zabbix-web-nginx-pgsql:7.0-alpine-latestcontainer_name: zabbix-web-nginxenvironment:DB_SERVER_HOST: 127.0.0.1POSTGRES_USER: zabbixPOSTGRES_PASSWORD: srebro.cnPOSTGRES_DB: zabbixZBX_SERVER_HOST: 127.0.0.1PHP_TZ: Asia/Shanghainetwork_mode: hostrestart: alwaysdepends_on:- zabbix-server
- 運行docker-compose
[root@localhost zabbix]# cd /home/application/zabbix
[root@localhost zabbix]# docker-compose up -d
[root@localhost zabbix]# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
zabbix-postgres "docker-entrypoint.s…" postgres running
zabbix-server "/usr/bin/docker-ent…" zabbix-server running
zabbix-web-nginx "docker-entrypoint.sh" zabbix-web-nginx running
4.3.3 登錄zabbix-server web控制臺
WEB登錄地址: http://172.22.33.180:8080
默認密碼: Admin/zabbix
五、安裝部署zabbix-agent
5.1 zabbix7.0 源碼包下載
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.0.tar.gz
5.2 編譯及依賴包環境準備
我這里是openeuler 系統,嘗試使用zabbix 官網提供的7.0 的rpm 包。但是在安裝的時候,總是提示環境有問題,報錯如下:
[root@localhost ~]# yum install ./zabbix-agent-7.0.0-release1.el7.x86_64.rpm - 沒有東西可提供 libcrypto.so.10()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 libcrypto.so.10(OPENSSL_1.0.2)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 libcrypto.so.10(libcrypto.so.10)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 liblber-2.4.so.2()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 libldap-2.4.so.2()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 libssl.so.10()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)- 沒有東西可提供 libssl.so.10(libssl.so.10)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
嘗試著去解決,最終還是放棄了,需要修改系統上的lib庫,太過于復雜,還是索性采用源碼編譯的方式部署zabbix-agent
- openeuler 編譯及依賴包安裝【跟著我安裝下面的軟件包,編譯分分鐘絲毫沒有問題】
yum groupinstall -y "Development Tools"
yum install -y net-snmp net-snmp-devel libevent libevent-devel openssl openssl-devel curl curl-devel fping pcre pcre-devel pkgconfig
- 添加zabbix用戶,用戶組
groupadd --system zabbix
useradd --system -g zabbix -d /usr/local/zabbix -s /sbin/nologin/ zabbix
- 開始編譯zabbix-agent 包
tar -xf zabbix-7.0.0.tar.gz
cd zabbix-7.0.0/
./configure --prefix=/usr/local/zabbix --enable-agent --with-libcurl --with-net-snmp --with-libevent --with-openssl --enable-ipv6
make
make install
5.3 配置zabbix-agent并啟動
- 創建zabbix-agent 日志目錄
mkdir -p /usr/local/zabbix/logs
- 修改zabbix工作目錄權限
chown -Rf zabbix:zabbix /usr/local/zabbix
- 使用systemd管理配置zabbix-agent
[root@localhost home]# vim /etc/systemd/system/zabbix-agent.service
[Unit]
Description = Zabbix Agent
After = syslog.target network.target[Service]
Type = forking
Restart = on-failure
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix[Install]
WantedBy = multi-user.target
- 修改配置文件
/usr/local/zabbix/etc/zabbix_agentd.conf
參數【Server
,ServerActive
,Hostname
,UnsafeUserParameters
,LogFile
】
# 被動模式下的 Zabbix-Server/Proxy 地址
Server=172.22.33.180# 主動模式下的 Zabbix-Server/Proxy 地址
ServerActive=172.22.33.180#主機名,設定 Zabbix-Agent 主機名,確保唯一且在 Zabbix-Server web 中一致
Hostname=172.16.10.182_agent-1# 允許使用不安全的用戶參數,允許創建自定義監控項
UnsafeUserParameters=1# 指定 Zabbix-Agent 的日志文件路徑
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
- reload 并啟動zabbix-agent
[root@k8s-node1 etc]# systemctl daemon-reload[root@k8s-node1 etc]# systemctl enable zabbix-agent[root@k8s-node1 etc]# systemctl start zabbix-agent[root@k8s-node1 etc]# ps -ef | grep zabbix_agent
zabbix 478193 1 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
zabbix 478194 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 478195 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 478196 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 478197 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 478198 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #4 [waiting for connection]
zabbix 478199 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #5 [waiting for connection]
zabbix 478200 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #6 [waiting for connection]
zabbix 478201 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #7 [waiting for connection]
zabbix 478202 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #8 [waiting for connection]
zabbix 478203 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #9 [waiting for connection]
zabbix 478204 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #10 [waiting for connection]
zabbix 478205 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 478329 439035 0 00:48 pts/0 00:00:00 grep --color=auto zabbix_agent[root@k8s-node1 etc]# netstat -ntlup | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 478193/zabbix_agent
tcp6 0 0 :::10050 :::* LISTEN 478193/zabbix_agent
5.4 配置zabbix-server 添加客戶端監控
登錄zabbix-server 控制臺/數據采集/主機/右上角,創建主機
- 填寫主機名稱,【注意必須和zabbix-agent.conf 中的Hostname 保持一致】
- 添加模板,勾選 Linux by Zabbix agent
- 主機群組,Linux servers 【也可以自己創建主機群組】
- 添加接口,類型為Agent,填寫zabbix-agent 客戶端IP,端口
等看到zabbix 可用性,變成綠色 就表示,已經成功添加zabbix-agent
查看最新數據, 監測/最新數據
六、總結
關于使用容器化的方式部署zabbix-server ,采用宿主機網絡的問題
當部署zabbix-server 的時候,單獨創建一個容器網絡bridge,zabbix-server 那臺主機的zabbix-agent【注意說是zabbix-server 本機】 想要和zabbix-server 通訊的時候,zabbix-agent 的配置文件中的Server
,ServerActive
配置成宿主機的IP,發現zabbix-agent 日志一直在報錯,提示 需要連接zabbix-server 的容器IP,比如 10.114.0.2 ; 當然也可以解決,直接寫成容器IP也行,但是我們不能保證容器內的IP不發生變化; 為了解決這個問題,我直接采用了宿主機的通訊方式,在端口不沖突的情況下,完成agent和server 的通訊。
openeuler 系統上,使用zabbix 官網的RPM 包不兼容問題
還是手動編譯安裝吧,zabbix 沒有去做設配openeuler 的RPM包,當然您也可以編譯貢獻RPM 包給社區,哈哈
此文章,講的是如何快速部署一套zabbix環境
拋開我們以往的傳統部署方式,安裝前端環境,apache或者nginx,再去安裝數據庫,mysql 或者 pg;再就是php 環境,一套部署下來也需要不少精力和時間,只能說容器真的太方便了
來源于srebro.cn
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。