從源碼編譯安裝ZABBIX
首先,需要前往Download Zabbix sources 下載所需的源碼包,本文中將使用6.0LTS版本,因為6.2并沒有附帶LTS長期支持的標識,而6.4仍處于開發(fā)中的狀態(tài)。
本文中使用的系統(tǒng)為Debian10 ARM64,請注意替換部分依賴的架構類型
下載
使用Wget下載,并使用tar命令進行解壓
wget -c https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.13.tar.gz
tar -zxvf zabbix-6.0.13.tar.gz?
創(chuàng)建用戶
由于Zabbix官方推薦將守護進程以非特權用戶運行,所以此處我們需要創(chuàng)建兩個非特權用戶zabbix與zabbix-agent
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /home/zabbix zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /home/zabbix-agent zabbix-agent
配置數(shù)據(jù)庫
Zabbix 6.0要求MySQL 8.0.X或MariaDB 10.5.00-10.8.X 本文我們采用MariaDB10.5.10
創(chuàng)建數(shù)據(jù)庫與用戶
mysql -uroot -p<password>
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> quit;
導入數(shù)據(jù)庫
對于寶塔面板用戶,請不要使用面板的導入SQL文件功能
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# 如果您正在為 Zabbix 代理創(chuàng)建數(shù)據(jù)庫,請在此處停止
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> zabbix < data.sql
成功導入schema后,可以禁用 log_bin_trust_function_creators
mysql -uroot -p<password>
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
編譯
編譯Server端
./configure --prefix=/home/zabbix --enable-server? --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
安裝
make install
編譯Agent2端
./configure --prefix=/home/zabbix-agent --enable-agent2 --enable-ipv6
安裝
make install
此處我使用了Agent2,需要提前安裝Go語言環(huán)境
如果按此命令編譯,那么安裝后的所有文件均在/home/zabbix 與/home/zabbix-agent目錄下
安裝Go語言支持
wget -c https://go.dev/dl/go1.20.linux-arm64.tar.gz
tar -C /usr/local -xzf go1.20.linux-arm64.tar.gz
編輯/etc/profile ,最尾端增加下行
export PATH=$PATH:/usr/local/go/bin
重載當前環(huán)境
source ~/.profile
驗證是否安裝成功
root@instance:~# go version
go version go1.20 linux/arm64
雜項配置
配置Server端Systemctl文件
vi /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
User=zabbix
Group=zabbix
Environment="CONFFILE=/home/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/home/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
配置Agent2 Systemctl文件
vi /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
User=zabbix-agent
Group=zabbix
Environment="CONFFILE=/home/zabbix-agent/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=simple
Restart=on-failure
PIDFile=/tmp/zabbix_agent2.pid
KillMode=control-group
ExecStart=/home/zabbix-agent/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
前端控制臺配置
前端控制臺其實是單獨的一個PHP程序,與zabbix的運行相互獨立,你只需要按照正常的PHP網(wǎng)頁安裝步驟即可
從源碼包目錄下的ui文件夾復制全部文件
配置Nginx網(wǎng)站,將文件全部復制到網(wǎng)站根目錄
正常配置SSL等其他Web服務器設置即可
Agent2鏈接到主機配置
編輯/home/zabbix-agent/etc/zabbix_agent2.conf
搜索以下字段,并修改其值
Server=Server端IP地址? ? ? ?#被動模式,表示哪些主機可以到本機取數(shù)據(jù)
ServerActive=Server端IP地址? ?#主動模式的server IP地址(客戶端主動發(fā)送數(shù)據(jù)給服務端)
Hostname=主機名? ? ? ? ? ? ? ?#客戶端的hostname(在web界面上顯示的名字)
此時,被控端設置完成,但我們?nèi)孕枰巴鵚eb端配置一下主機自動注冊規(guī)則
1.點擊配置-動作-自動注冊動作-創(chuàng)建動作
圖片[1]-從源碼編譯安裝ZABBIX-Rain's Blog
2.設置任務名稱,添加一個條件,例如匹配主機名稱中包含的字段
圖片[2]-從源碼編譯安裝ZABBIX-Rain's Blog
添加要執(zhí)行的動作
圖片[3]-從源碼編譯安裝ZABBIX-Rain's Blog
添加完成后
圖片[4]-從源碼編譯安裝ZABBIX-Rain's Blog
然后,啟動客戶端的Agent2,等待一兩分鐘后,新的客戶端將被自動添加到主機列表
如果長時間無反應,請檢查防火墻是否放行端口10050/10051
Grafana簡單配置
Grafana是一個監(jiān)控儀表系統(tǒng),它只負責生成各種各樣的展示圖標與警報功能,并不關心數(shù)據(jù)來源,因為它支持市面上絕大部分的數(shù)據(jù)形式
這里我們使用Docker簡化部署過程
docker run -d \
? -p 3000:3000 \
? --name=grafana \
? -v /home/grafana/lib:/var/lib/grafana \
? -v /home/grafana/etc/grafana.ini:/etc/grafana/grafana.ini \
? -v /home/grafana/log:/var/log/grafana \
? -e "GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app" \
? grafana/grafana-oss
安裝完成后,使用Nginx反向代理,默認地址是127.0.0.1:3000(此處不再贅述反向代理的配置)
首次安裝時的用戶名與密碼均為admin,在第一次登錄成功后會讓你重設密碼
如果你使用的是我上面的命令,那么zabbix的擴展已經(jīng)安裝完畢,進入控制臺后點左下角齒輪圖標-Plugins- 搜索zabbix-點擊進入插件-點擊enable即可正常啟用
一些小問題
configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h
缺少libopenipmi-dev 包,安裝即可
apt install libopenipmi-dev
前端界面未檢測到Zh-CN語言包,即使已經(jīng)正確安裝了語言包與PHP gettext 擴展
重啟PHP即可
[Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
你的MySQL數(shù)據(jù)庫鏈接地址不正確,請查看MySQL配置文件中socket段的路徑,并將其值復制,修改/home/zabbix/etc/zabbix_server.conf 中的DBSocket=字段,刪除前面的#并將路徑粘貼到=后面,保存并重啟即可
大問題:編譯Agent2時出現(xiàn)make[3]: *** [Makefile:633: install-zabbix.com/cmd/zabbix_agent2] Error 1
此問題是由于機器本身通過yum/apt安裝了golang包,請使用下面的命令完全卸載
apt-get remove golang
apt-get remove golang-go
apt-get remove --auto-remove golang-go
再從任意鏡像下載最新版本安裝即可,安裝步驟可見上文
一些總結
ZABBIX的文檔還是很詳細的,有些細節(jié)點講的也很清楚,不過還是有些意外問題會出來,大體來說編譯還算順利
而Grafana這玩意文檔就沒見到有中文,Docker鏡像的持久化配置也很奇怪,總之就是非常的折磨
參考文章
3 從源代碼安裝 (zabbix.com)
Run Grafana Docker image | Grafana documentation
Zabbix agent2 インストール | サーバーレシピ (server-recipe.com)
七牛云 – Goproxy.cn
#オリジナル Untitled – きのこ姫的插畫 – pixiv
完整樣式的文章請前往我的博客
https://blog.im.ci/study-notes/linux-notes/940/