zabbix安裝
1 下載源代碼存檔
轉到 Zabbix download page 下載源代碼存檔。待下載完畢后,執行以下命令解壓縮源代碼存檔:
tar -zxvf zabbix-4.0.0.tar.gz
2 創建用戶賬戶
groupadd zabbix
useradd -g zabbix zabbix
4 編譯
進入解壓后的文件夾
cd zabbix-4.0.12/
如果要安裝 Zabbix server 和 Zabbix proxy 和zabbix agent,您可以運行以下內容:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
如果只安裝 Zabbix agent ,您只需要運行以下內容:
./configure --enable-agent
編繹完成之后運行
make install
注意:如果 MySQL 客戶端類庫不處在默認的位置,則需要添加可選的 MySQL 的配置文件 --with-mysql=/<path_to_the_file>/mysql_config ,
比如:
編譯的寫法就為:
./configure --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
5 添加數據庫
如果安裝的是zabbix server就要添加數據庫,如果安裝的是zabbix agent就不需要添加數據庫
添加數據庫方法
找到數據庫文件的位置
進入解壓的文件夾目錄
把schema.sql images.sql data.sql 三個sql文件依次導入zabbix庫,記住,順序不能亂。
如:
6 查看和編輯配置文件
-
在此編輯 Zabbix agent 的配置文件 /usr/local/etc/zabbix_agentd.conf
- 修改配置文件里面的這兩項:
-
Server=[zabbix server ip]
-
ServerActive=[zabbix server ip]
您必須在這個文件中指定 Zabbix server 的 IP 地址 。若從其他主機發起的請求會被拒絕。
-
在此編輯 Zabbix server 的配置文件 /usr/local/etc/zabbix_server.conf
您必須指定數據庫的名稱、用戶和密碼(如果使用的話)。
例如:
DBName-zabbix
DBUser=root
DBPassword=123456
-
如果您安裝了 Zabbix proxy,請在此編輯 proxy 的配置文件 /usr/local/etc/zabbix_proxy.conf
您必須指定 Zabbix server 的 IP 地址和 Zabbix proxy 主機名(必須被 Zabbix server 識別),同時也要指定數據庫的名稱、用戶和密碼(如果使用的話)。
7 啟動或者關閉進程
啟動:
zabbix_server
zabbix_agentd
關閉:

查看進程
8 安裝 Zabbix web 界面
web項目源碼位置在
zabbix-4.0.12/frontends/php/

有錯誤就解決錯誤
下一步設置好數據庫配制
出現這個錯誤時給 conf/ 目錄的寫權限
如果你是Apache用戶,應該不存在此問題,如果是nginx有可能因為配置不當而出現,我們需要修改php.ini
cgi.fix_pathinfo=0 改為等於1
重起php
驗證是否通信成功
首先開啟服務:
zabbix_server
zabbix_agentd
在zabbix server 端運行以下命令
zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg15]"
返回值代表通訊成功
127.0.0.1代表zabbix agent端主機ip地址.
如果失敗,檢測是否服務器開放10050,10051端口。
界面中文設置;
監控:
新建個主機群:
創建一個新的主機
ip 地址填寫zabbix agentd端的主機ip地址
第3步:
設置監控項
點擊監控項列表:
點擊創建監控項
設置監控項。選擇那里有些系統自帶的監控項。
比如鍵值:system.cpu.util[<cpu>,<type>,<mode>],【】括號里面是參數,<>包起來的參數代表可不填。
也可以自定義鍵值。
下面介紹自定義鍵值
如圖:
修改配置文件zabbix_agentd.conf
修改UnsafeUserParameters=1
增加
UserParameter=cpu_id,vmstat | sed -n 3p | awk '{print $(NF-2)}'
那么cpu_id就是鍵值了
鍵值逗后就是linux上面運行的正常命令vmstat | sed -n 3p | awk '{print $(NF-2)}'
就這么簡單
web介紹就可以設置我們自定義的鍵值了;
過一會兒就可以查看圖形數據
設置觸發器
報警媒介設置
這里我們報警方式用郵件通知,
創建個新媒介,類型是sh腳本,用來發信郵件
首先大寫先自行配制linux下面用mail來發送郵件。這里就不多寫了
創建個mail.sh腳本
內容是以下
#!/bin/bash to=$1 subject=$2 context=$3 #url=$4 echo -e "$context" | mail -s "$subject" "$to"
這就是一個簡單的發送郵件的腳本,很明顯,這個腳本要傳三個參數,發送人郵件地址,主題,內容
那這個腳本放在哪個位置呢?
修改配制文件zabbix_server.conf
AlertScriptsPath就是設置sh腳本的目錄
然后新建一個媒介
把參數和腳本名稱寫好,保存
然后設置通知用戶的媒介信息
動作講解:
當你設置好監控一個項時,然后對這個監控項設置了一個觸發項,
比如我設置監控硬盤還剩多少空間,
設置觸發項為:如果監控硬盤的空間小於10%,
我就應該報警,通過媒介發郵件通知到工作人員。
這個作為就是動作應該做的事情了
新建一個動作
名字自定義,
觸發條件,先選擇觸發器,比如我這里就是選擇觸發器 等於 硬盤使用過高
點添加,
還要一個條件就是這個觸發器狀態報問題,我們才執行此動作
再選擇 觸發器示警度 等於 嚴重
這里有個點要注意,到底是等於”嚴重“,或者是其他值,由你填寫的觸發器資料決定
所以我這里是要填寫嚴重
第二步設置
這里就是設置發送郵件的內容了,你可以自定義,也可以就用默認的值
以下是設置發送方式:選擇我們新建的用sh腳本
設置發送的用戶,
然后點添加,(此添加按鈕是只發送者人員設置添加)
這是出現問題了要執行的動作操作,
當這個問題恢復了之后,也可以發送郵件通知
那就是設置恢復操作
設置完成之后,點擊保存
就樣整個流程就設置完成了
當監控的項出現問題時,就會發郵件通知到你了
(注意:如果你用的是騰訊雲服務器,那些需要申請解封25端口,郵件才能發送成功)
zabbix有模板功能,監控,觸發等等功能,你可以直接導入別人現成的模板來用
或者你可以把自己設置好的導出,當成模板給別人用
下面介紹一下,比如實用的監控項
free | awk '{ if ($1=="Mem:"){print $4} }' | awk -FG '{print $1}'
內存還剩多少
可以自定義這個key
cpu的使用率,有自帶的健值
下面監控nginx和php-fpm
首先打開nginx和php-fpm的使用狀態數據
修改nginx.conf配制文件,加入:
重啟nginx
運行
curl http://127.0.0.1/nginx_status
得到
Active connections: 4 表示Nginx正在處理的活動連接數2個。
server 2333333 表示Nginx啟動到現在共處理了2個連接
accepts 233333 表示Nginx啟動到現在共成功創建2次握手
handled requests 1 表示總共處理了 1 次請求
Reading:Nginx 讀取到客戶端的 Header 信息數
Writing:Nginx 返回給客戶端 Header 信息數
Waiting:Nginx 已經處理完正在等候下一次請求指令的駐留鏈接(開啟keep-alive的情況下,這個值等於Active-(Reading+Writing))
如果要zabbix監控這些數據呢
新建一個nginx_status.sh腳本
腳本內容為
#! /bin/bash #date: 2018-05-04 # Description:zabbix監控nginx性能以及進程狀態 #cription:zabbix監控nginx性能以及進程狀態 # Note:此腳本需要配置在被監控端,否則ping檢測將會得到不符合預期的結果 HOST="127.0.0.1" PORT="80" # 檢測nginx進程是否存在 function ping { /sbin/pidof nginx | wc -l } # 檢測nginx性能 function active { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # 執行function $1
里面的http://$HOST:$PORT/nginx_status/地址,是與你nginx.conf配置一一對應的
最后在zabbix_agentd.conf配制文件里面加入自定入鍵值這句話
UserParameter=nginx.status[*],/yavin/sh/nginx_status.sh $1
/yavin/sh/nginx_status.sh這是我sh腳本的路徑,大家改為自己對應的地址
最后就是zabbix web 界面導入模板了
報歉,這里分亨不了模板,大家可以去百度上面自行查下。
導入模板之后就完成了。
下面介紹php-fpm監控
首先修改nginx.conf配制文件,打開php-fpm狀態消息
這里要特別注意
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000
到底用哪個,取決你的php-fpm.conf配置文件用的是哪個
比如我是用的這個

改好之后重起nginx,php-fpm
運命行輸入
curl http://127.0.0.1/status
下面介紹每個參數的作用:
pool:php-fpm池的名稱,一般都是應該是www
process manage:進程的管理方法,php-fpm支持三種管理方法,分別是static,dynamic和ondemand,一般情況下都是dynamic
start time:php-fpm啟動時候的時間,不管是restart或者reload都會更新這里的時間
start since:php-fpm自啟動起來經過的時間,默認為秒
accepted conn:當前接收的連接數
listen queue:在隊列中等待連接的請求個數,如果這個數字為非0,那么最好增加進程的fpm個數
max listen queue:從fpm啟動以來,在隊列中等待連接請求的最大值
listen queue len:等待連接的套接字隊列大小
idle processes:空閑的進程個數
active processes:活動的進程個數
total processes:總共的進程個數
max active processes:從fpm啟動以來,活動進程的最大個數,如果這個值小於當前的max_children,可以調小此值
max children reached:當pm嘗試啟動更多的進程,卻因為max_children的限制,沒有啟動更多進程的次數。如果這個值非0,那么可以適當增加fpm的進程數
slow requests:慢請求的次數,一般如果這個值未非0,那么可能會有慢的php進程,一般一個不好的mysql查詢是最大的禍首。
接下來修改zabbix_agentd.conf配制文件
增加
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" |grep "<$1>" | awk -F '>|<' '{ print $$3}'
這樣就增加了自定義的鍵值,
zabbix web界面導入模板(模板自行百度查找)
完成
mysql數據庫監控
我這里介紹的是用zabbix自帶的obdc對數據庫做監控
首選在zabbix_server服務器上面安裝odbc
yum -y install unixODBC unixODBC-devel
yum install mysql-connector-odbc
然后新增配制文件
vim /etc/odbc.ini
里面輸入:
方框號里面的test很重要,以后都要用到的。其他參數改為對應的的值,database代表哪個庫
如果 你要監控多台數據庫,那就復制多個,填寫對應的消息,[test]取別的名字
test 意思是數據源名稱 (DSN).
保存之后
輸入
isql test
測試是否連接成功
isql test,這個test就是odbc.ini配制文件,你對應設置的值test
重新編譯支持ODBC的zabbix
編繹時,編繹參增加
--with-unixodbc
例如:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc
成功之后,接下來
鍵值的第一參數可以不填,第二個參數,就要填你在odbc.ini設置的源名稱了,比如之前就是為test
sql 查詢的結果為一行一列值
觸發器設置
表達式的條件可以監控它,在周期T內沒有收到數據,結果等於1時,就觸發報警
后面添加報警動作, 這里不再重復了
目前已寫完