zabbixを使用してnginxサービスを監視します(15)

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モニタリングステータス値の詳細な説明

アクティブな接続:1 //現在アクティブな接続の数、現在アクセスしている接続の数

accepts 4 // nginxが開始されてから受信したリクエストの数

処理済み4 // nginxが開始されてから処理されたリクエストの数

リクエスト// httpリクエストの総数

読み取り:0 //現在読み取られている接続要求ヘッダーの数

書き込み:1 //現在クライアントリクエストの数に応答しています

待機中:0 //現在待機中のリクエスト数

書き込み+待機の値は、アクティブな接続の値と等しくなければなりません

3.zabbixを使用してnginxステータス値を監視します

アイデア:

1.最初にスクリプトを記述して値を取得します。これはWebページであるため、curlコマンドで取得できます。

2.スクリプトで関数を定義できます。各値は関数に対応します。最後に、大文字と小文字を区別して、パラメーターとして渡された$ 1がその関数と一致することを確認します。一致が正しければ、関数が実行されます。

3.パラメータを渡す形式で監視項目キーを定義します。これにより、キー値を定義して別の$ 1を書き込むことができます。

3.1。監視値を取得するためのスクリプトを作成する

スクリプト作成のアイデア:最初にcurlコマンドで取得したデータをファイルに保存し、次に現在の時刻とファイルの時刻の変数を定義して比較します。現在の時刻がファイルの時刻より60秒を超える場合は、ファイルを削除します。 curlコマンドとre-curlのデータを取得してファイルにインポートし、最後にさまざまな状態を定義する機能を通じて、主にファイルから状態値を取得し、どのパラメータを通過させるかを判断します。最後に、対応するパラメータのコマンドを実行して、監視値を取得します。

最後に、プロセスが動作しているかどうかを監視するには、psを使用してプロセスを確認し、wc -lを使用して数値を取得し、最後にこの値をエコーし​​て、トリガーを作成します。最新の値は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
1

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。[構成]-[テンプレート]-[テンプレートの作成]をクリックします

ここに画像の説明を挿入

3.3.2。テンプレート情報を入力します

名前:nginxステータステンプレート

ここに画像の説明を挿入

3.3.3。アプリケーションセットの作成

名前:nginxステータス

ここに画像の説明を挿入

3.3.4。監視項目を作成する

名前:Nginxステータスがアクティブ

キー値:nginx_status [active]

スクリプトの判定時間は60秒であるため、更新間隔:60秒

アプリケーションセットの選択:nginxステータス

ここに画像の説明を挿入

他の監視項目の構成は同じですが、パラメータのキー値が異なります

すべての監視項目のキー値

nginx_status[active]
nginx_status[accepts]
nginx_status[handled]
nginx_status[requests]
nginx_status[reading]
nginx_status[writing]
nginx_status[waiting]
nginx_status[check]

すべての監視項目が作成されます

ここに画像の説明を挿入

3.3.5。トリガーを作成する

モニタリングステータス値をトリガーする必要はありませんが、nginxプロセスをトリガーする必要があります

[トリガーの作成]をクリックします

ここに画像の説明を挿入

トリガー情報を入力します

名前:nginxプロセスは存在しません

重大度:重大

式:{nginxステータステンプレート:nginx_status [check] .last()} = 0
ここに画像の説明を挿入

トリガー条件設定

ここに画像の説明を挿入

3.3.6。グラフィックを作成する

クリックしてグラフィックを作成

ここに画像の説明を挿入

名前:nginxステータスモニタリング

すべてのnginx監視項目を選択し、最後に[追加]をクリックします
ここに画像の説明を挿入

3.3.7。テンプレートの作成が完了しました

ここに画像の説明を挿入

4.ホストアプリケーションのnginx監視テンプレートの監視

例として192.168.81.220を取り上げると、192.168.81.230の構成は同じです。

[構成]-[ホスト]-[テンプレート]-[テンプレートの選択]-[追加]をクリックします

ここに画像の説明を挿入

更新をクリックします

ここに画像の説明を挿入

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.最新のデータを表示する

クリックして監視-最新のデータ

すでに価値があります

ここに画像の説明を挿入

ここに画像の説明を挿入

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
坐等报警即可

ダッシュボード表示

ここに画像の説明を挿入

アラームSMS
ここに画像の説明を挿入

7. grafanaを使用して、nginxステータス監視グラフィックを生成します

7.1。グラフィックを作成する

クリックしてグラフィックを作成

ここに画像の説明を挿入

棒グラフを選択

ここに画像の説明を挿入

グラフを選択したら、[編集]を2回クリックして、監視項目を追加します

7.2。監視項目を追加する

[クエリの追加]をクリックし、監視情報を入力します

グループ:ナレッジマネジメントプラットフォーム

ホスト:$ host

アプリケーション:nginxステータス

アイテム:Nginxステータスは受け入れます

すべての監視項目はこの方法で追加されます。[クエリの追加]をクリックするだけです。

ここに画像の説明を挿入

7.3。グラフの名前を設定します

ここに画像の説明を挿入

7.4。グラフィックを保存する

ここに画像の説明を挿入

7.5。グラフィックを表示する

ここに画像の説明を挿入

あなたは右上隅で時間を設定することができます

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44953658/article/details/114686070