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。グラフィックを表示する
あなたは右上隅で時間を設定することができます