使用目的?
在公司項目中需要做一個日志監控,最開始選擇的是efk,但是efk的資料相對較少並且之前對這幾個產品都沒接觸過,使用起來難度。於是選擇了zabbix作為項目的運維監控系統。
zabbix能做什么?
zabbix主要是用來網絡監控、系統監控、應用監控等場景。zabbix分為server端和agent端,文章前半部分都是在講server端的安裝操作,后面結尾講解agent的安裝操作。
搭建環境
centos7.0,lnmp集成環境(mysql5.7,php7.2),zabbix4.0版本。zabbix安裝的具體環境要求可參考官網手冊。
手冊給到如下幾種安裝方式:
- 源碼安裝(本文采用的也就是源碼安裝)
- 二進制安裝
- 容器安裝,例如docker安裝
安裝步驟
1.安裝lnmp環境
由於lnmp集成包,安裝非常方便,因此直接安裝官網手冊一鍵安裝即可.官網地址
2.安裝zabbix服務端
# 安裝依賴
yum install net-snmp-devel libxml2-devel libcurl-devel libevent-devel mysql-devel
# 下載安裝包(該安裝包可以直接放在web的程序目錄里面)
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.2.3/zabbix-4.2.3.tar.gz/download
# 解壓
tar zxvf zabbix-4.2.3.tar.gz
# 編譯(這里我使用的是mysql,所以在編譯的時候是用的mysql的依賴,如果是其他的數據庫按照官網手冊編譯的時候編譯其他的數據庫依賴)
cd zabbix-4.2.3
./configure --prefix=/web/data/zabbix-3.4.4/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
# 開始安裝
make && make install
3.創建zabbix用戶
為什么要給zabbix創建一個單獨的用戶,很簡單,是因為安全問題。為了安全考慮zabbix只使用普通用戶運行,假如你當前用戶叫ttlsa,那么你運行他,他便使用ttlsa身份運行。但是如果你在root環境下運行zabbix,那么zabbix將會主動使用zabbix用戶來運行。但是如果你的系統沒有名叫zabbix的用戶,你需要創建一個用戶。
groupadd zabbix
useradd -g zabbix zabbix
4.數據庫相關配置
考慮到安全問題,因此這里我們同樣的給zabbix創建一個單獨的數據庫用戶,數據庫名稱也是zabbix。MySQL創建用戶可以參考之前的一篇文章,MySQL創建用戶傳送門。在本文中創建的MySQL用戶為zabbix,密碼可以根據自己定義。
5.導入zabbix事先准備好的數據。
.查看數據庫文件
cd /home/wwwroot/zabbix-4.2.3/database && ls
drwxr-xr-x 2 mysql mysql 4096 6月 6 02:23 elasticsearch
drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 ibm_db2
-rw-r--r-- 1 root root 21474 6月 13 10:10 Makefile
-rw-r--r-- 1 mysql mysql 155 6月 6 02:23 Makefile.am
-rw-r--r-- 1 mysql mysql 21722 6月 6 02:24 Makefile.in
drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 mysql
drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 oracle
drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 postgresql
drwxr-xr-x 2 mysql mysql 4096 6月 13 10:10 sqlite3
.上面的幾種目錄就是針對不同的數據,zabbix自帶的不同的數據庫文件,我們是使用的MySQL,因此我們只需要關心mysql目錄下面的文件,下面即是我們需要的文件。schema.sql文件數數據表結構,images.sql是相關的圖片數據結構,data.sql則是相關的數據結構。
-rw-r--r-- 1 mysql mysql 4018823 6月 6 02:24 data.sql
-rw-r--r-- 1 mysql mysql 1978341 6月 6 02:23 images.sql
-rw-r--r-- 1 root root 15420 6月 13 10:10 Makefile
-rw-r--r-- 1 mysql mysql 392 6月 6 02:23 Makefile.am
-rw-r--r-- 1 mysql mysql 15711 6月 6 02:24 Makefile.in
-rw-r--r-- 1 mysql mysql 142074 6月 6 02:24 schema.sql
.登錄並導入數據庫
# 登錄數據
mysql -u root -p
# 選擇實現創建好的zabbix數據庫
use zabbix
# 依次導入數據庫文件
source /home/wwwroot/zabbix-4.2.3/database schema.sql
source /home/wwwroot/zabbix-4.2.3/database data.sql
source /home/wwwroot/zabbix-4.2.3/database images.sql
配置虛擬域名
本文搭建的zabbix是在centos7.0的虛擬環境中搭建,為了方便訪問,搭建了一個虛擬域名.只需要配置一個nginx文件即可.環境中使用的是lnmp集成開發環境,則使用lnmp集成開發環境自帶的命令來創建
lnmp vhost add
# 指定root的目錄,應該為
/home/wwwroot/zabbix-4.2.3/frontends/php
# 應該開啟pathinfo模式,
#rwriter 選擇WordPress(不強制要求)
在本地點的hosts文件中添加上述自己配置的虛擬域名(以.dev.zabbix.com為例)
使用zabbix
我們在登錄時候,會提示我們一些安裝信息,我們按照提示填寫即可。在安裝之后會自動跳轉到登錄頁面,可以選擇賓客模式也可以使用管理員模式。
賓客模式就只是簡單的瀏覽操作。系統默認的管理賬號是Admin,密碼是zabbix。
在使用管理員賬號的時候會可能會提示如下信息。如要是因為我們的web服務導致的,如果是使用的Apache則不會出現如下問題。
問題根源是在zabbix php定位問題發現,zabbix是依據php文件名來設置權限,例如index.php、dashboard.php這些,如果cgi.fix_pathinfo設置為0,那么php無法獲取到url請求的文件名稱,例如訪問index.php,獲取不到index.php也定位到權限,於是出現這個錯誤。解決辦法是:修改php.ini文件的配置。
cgi.fix_pathinfo=0
改為
cgi.fix_pathinfo=1
此時我們登錄進去就可以看到如下界面了。
安裝代理端
配置文件目錄:/etc/zabbix/zabbix_agentd.conf
1.在被監控主機上設置防火牆,允許zabbix-agent的10050端口通過
2.執行yum list |grep zabbix,找到zabbix的agent安裝包並安裝,如包名zabbix-agent.x86_64
3.在 /etc/zabbix/zabbix_agentd.conf 中更改:
Server=<zbx-server的ip>
ServerActive=<zbx-server的ip>
Hostname=<本機的主機名>
4.設置zabbix-agent服務自啟動並啟動服務
systemctl enable zabbix-agent.service 開機自啟動
systemctl start zabbix-agent.service 啟動服務
部分文章參考公眾號:浪子編程走四方