1. 程式人生 > 實用技巧 >zabbix 安裝 監控 nginx php-fpm mysql

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時,就觸發報警

後面新增報警動作, 這裡不再重複了