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

后面添加報警動作, 這里不再重復了

目前已寫完

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM