zabbix 安裝 監控 nginx php-fpm mysql
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/
配製個web專案。把原始碼放進去,在瀏覽上面訪問開啟:有錯誤就解決錯誤
下一步設定好資料庫配製
出現這個錯誤時給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時,就觸發報警
後面新增報警動作, 這裡不再重複了