tft每日頭條

 > 科技

 > zabbix監控系統概念

zabbix監控系統概念

科技 更新时间:2024-09-07 03:54:46

使用zabbix監控Nginx服務

1.開啟nginx狀态監控

1.安裝nginx

[root@192_168_81_220 ~]# yum -y install nginx

2.開啟狀态監控頁面

[root@192_168_81_220 ~]# vim /etc/nginx/nginx.conf

location /nginx_status {

stub_status;

}

3.重啟nginx

[root@192_168_81_220 ~]# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@192_168_81_220 ~]# systemctl start nginx

4.訪問

[root@192_168_81_220 ~]# curl 192.168.81.220/nginx_status

Active connections: 1

server accepts handled requests

4 4 9

Reading: 0 Writing: 1 Waiting: 0

2.nginx監控狀态值詳解

Active connections: 1 //當前活躍的連接數,當前有多少個連接訪問我

accepts 4 //nginx啟動到現在共接收了多少個請求

handled 4 //nginx啟動到現在共處理了多少個請求

requests //總的http請求數

Reading: 0 //當前讀取的連接請求頭數

Writing: 1 //當前響應客戶端請求數

Waiting: 0 //當前的等待請求數

writing waiting的值要等于Active connections的值

3.利用zabbix監控nginx狀态值

思路:

1.首先編寫獲取值的腳本,由于是web頁面,因此可以通過curl命令來抓取

​ 2.腳本裡面可以定義函數,每一個值對應一個函數,最後在使用case判斷傳參進來的$1與那個函數匹配,匹配正确則執行函數

​ 3.定義傳參形式的監控項key,這樣就可以定義一個key值,寫不同的$1就可以了

3.1.編寫獲取監控值腳本

腳本編寫思路:首先将curl命令獲取的數據保存到一個文件中,然後定義當前時間和文件時間的變量,進行比較,如果當前時間比文件時間大于60s,則把curl命令的文件進行删除,重新curl獲取數據并導入到文件中,最後通過定義各種狀态的函數,函數裡面主要就是通過文件把狀态值獲取到,再通過case進行判斷要傳那個參數,最後執行對應參數的命令獲取監控值

最後監測進程是否存活可以通過ps查到進程然後通過wc -l獲取數量,最後echo這個值,然後創建觸發器,最新值等于0就表示進程不存在

1.編寫腳本

[root@192_168_81_220 ~]# cd /etc/zabbix/scripts/

[root@192_168_81_220 scripts]# vim tcp_zabbix.sh

#!/bin/bash

#這是一個簡單的監控nginx狀态值的腳本

#20201030 ---jxl

comm_para=$1

cachefile=/tmp/nginx_status.txt

port=80

cmd="/usr/bin/curl 127.0.0.1:$port/nginx_status"

file_time=`stat -c %Y $cachefile`

now_time=`date %s`

rm_file=$(($now_time - $file_time))

if [ ! -f $cachefile ];then

$cmd > $cachefile 2>/dev/null

fi

if [ $rm_file -gt 60 ];then

rm -rf $cachefile

fi

if [ ! -f $cachefile ];then

$cmd > $cachefile 2>/dev/null

fi

active() {

cat $cachefile | awk '/Active/{print $NF}'

exit 0;

}

accepts() {

cat /tmp/nginx_status.txt | awk '{if(NR==3){print $1}}'

exit 0;

}

handled(){

cat /tmp/nginx_status.txt | awk '{if(NR==3){print $2}}'

exit 0;

}

requests(){

cat /tmp/nginx_status.txt | awk '{if(NR==3){print $3}}'

exit 0;

}

reading() {

cat /tmp/nginx_status.txt | awk '{if(NR==4){print $2}}'

exit 0;

}

writing() {

cat /tmp/nginx_status.txt | awk '{if(NR==4){print $4}}'

exit 0;

}

waiting() {

cat /tmp/nginx_status.txt | awk '{if(NR==4){print $6}}'

exit 0;

}

check() {

nginx_pro_count=`ps aux | grep nginx | grep -v grep | grep -v nginx_status.sh | wc -l`

echo $nginx_pro_count

}

case "$comm_para" in

active)

active

;;

accepts)

accepts

;;

handled)

handled

;;

requests)

requests

;;

reading)

reading

;;

writing)

writing

;;

waiting)

waiting

;;

check)

check

;;

*)

echo "invalid status"

exit 2;

esac

2.給執行權限并測試

[root@192_168_81_220 scripts]# chmod a x tcp_zabbix.sh

[root@192_168_81_220 scripts]# sh tcp_zabbix.sh active

3.2.編寫自定義監控項配置文件

1.寫配置文件

[root@192_168_81_220 ~]# cd /etc/zabbix/zabbix_agentd.d/

[root@192_168_81_220 zabbix_agentd.d]# vim nginx_status.conf

UserParameter=nginx_status[*],/bin/bash /etc/zabbix/scripts/nginx_status.sh $1

2.重啟

[root@192_168_81_220 zabbix_agentd.d]# systemctl restart zabbix-agent

3.用zabbix_server測試監控key

[root@zabbix-server ~]# zabbix_get -s 192.168.81.220 -k nginx_status[active]

1

[root@zabbix-server ~]# zabbix_get -s 192.168.81.220 -k nginx_status[check]

4

成功

3.3.創建監控模闆

3.3.1.點擊配置—模闆—創建模闆

zabbix監控系統概念(Zabbix監控系統系列之八)1

3.3.2.填寫模闆信息

名稱:nginx status template

zabbix監控系統概念(Zabbix監控系統系列之八)2

3.3.3.創建應用集

名稱:nginx status

zabbix監控系統概念(Zabbix監控系統系列之八)3

3.3.4.創建監控項

名稱:Nginx status active

鍵值:nginx_status[active]

更新間隔:60s,因為腳本裡面的判斷時間就是60s

應用集選擇:nginx status

zabbix監控系統概念(Zabbix監控系統系列之八)4

其他監控項配置一緻,隻是參數key值不一樣

所有監控項key值

nginx_status[active]

nginx_status[accepts]

nginx_status[handled]

nginx_status[requests]

nginx_status[reading]

nginx_status[writing]

nginx_status[waiting]

nginx_status[check]

所有監控項創建完成

zabbix監控系統概念(Zabbix監控系統系列之八)5

3.3.5.創建觸發器

對監控狀态值可以不做觸發器,但是要對nginx進程做觸發器

點擊創建觸發器

zabbix監控系統概念(Zabbix監控系統系列之八)6

填寫觸發器信息

名稱:nginx進程不存在

嚴重性:嚴重

表達式:{nginx status template:nginx_status[check].last()}=0

zabbix監控系統概念(Zabbix監控系統系列之八)7

觸發器條件設置

zabbix監控系統概念(Zabbix監控系統系列之八)8

3.3.6.創建圖形

點擊創建圖形

zabbix監控系統概念(Zabbix監控系統系列之八)9

名稱:nginx狀态監控

把所有nginx監控項都選上,最後點擊添加

zabbix監控系統概念(Zabbix監控系統系列之八)10

3.3.7.模闆創建完成

zabbix監控系統概念(Zabbix監控系統系列之八)11

4.監控主機應用nginx監控模闆

192.168.81.220為例,192.168.81.230配置一樣

點擊配置—主機—模闆—選擇模闆—添加

zabbix監控系統概念(Zabbix監控系統系列之八)12

點擊更新

zabbix監控系統概念(Zabbix監控系統系列之八)13

192.168.81.230在鍊接模闆之前要把腳本和配置文件全部scp過去

[root@192_168_81_220 ~]# scp /etc/zabbix/scripts/nginx_status.sh [email protected]:/etc/zabbix/scripts/nginx_status.sh

[root@192_168_81_220 ~]# scp /etc/zabbix/zabbix_agentd.d/nginx_status.conf [email protected]:/etc/zabbix/zabbix_agentd.d/

[root@192_168_81_220 ~]# ssh [email protected] "systemctl restart zabbix-agent"

5.查看最新數據

點擊監測—最新數據

已經有值

zabbix監控系統概念(Zabbix監控系統系列之八)14

zabbix監控系統概念(Zabbix監控系統系列之八)15

6.觸發nginx進程存在并告警

[root@192_168_81_220 ~]# systemctl stop nginx

[root@192_168_81_220 ~]# ps aux | grep nginx | grep -v grep | grep -v nginx_status.sh | wc -l

0

坐等報警即可

儀表盤顯示

zabbix監控系統概念(Zabbix監控系統系列之八)16

報警短信

zabbix監控系統概念(Zabbix監控系統系列之八)17

7.利用grafana生成nginx狀态監控圖形

7.1.創建圖形

點擊創建圖形

zabbix監控系統概念(Zabbix監控系統系列之八)18

選擇條形圖

zabbix監控系統概念(Zabbix監控系統系列之八)19

選擇完圖形後點擊edit兩次即可添加監控項

7.2.添加監控項

點擊add query—填寫監控信息

Group:知識點管理平台

Host:$host

Application:nginx status

Item:Nginx status accepts

所有監控項都是這麼添加,點擊add query就可以了

zabbix監控系統概念(Zabbix監控系統系列之八)20

7.3.設置圖形名稱

zabbix監控系統概念(Zabbix監控系統系列之八)21

7.4.保存圖形

zabbix監控系統概念(Zabbix監控系統系列之八)22

7.5.查看圖形

zabbix監控系統概念(Zabbix監控系統系列之八)23

在右上角可以設置時間

zabbix監控系統概念(Zabbix監控系統系列之八)24

————————————————

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved