私の名前彼張、貪欲な欲望。資格LINUXの運用・保守エンジニアは、LINUXの勉強と研究に焦点を当て、仏教を愛し、実行している、中小企業のウェブサイトの運用・保守を担当していました。
個人ブログ:チュアンSongzhenの
作者マイクロ手紙:zhanghe15069028807
、あなたは一つです。
nginxの監視
アプリケーション自体に監視することにしたいZABBIX任意のアプリケーションは、nginxのように、サポート情報を表示する必要があるとのhttpd、MySQLのも、経由ステータスページを持っている
mysql –e "show status"
あなたはmysqlのステータス情報を取得することができます。
あなたはそれを監視したい項目nginxの監視?
あなたはいくつかのステータスページがあることを覚えていれば実際には、いくつかのステップは、それのキーを定義し、awkのことで、そのいくつかのモニタリング内部のページを削除し、非常にシンプルであることをステータスページがあり、私は知りませんそれは何を意味するのでしょうか?私はあまりにも内部をまとめる前に、別のブログでは:ポータル、私はここでそれらを繰り返すことはしません。
ZABBIXサーバ(バージョン:3.4) | 192.168.80.22 |
---|---|
ZABBIXエージェント/ nginxの | 192.168.80.23 |
ZABBIXエージェント/ nginxの
//安装并配置nginx
[root@nginx ~]# grep -Ev "^$|#" /etc/nginx/nginx.conf.default > /etc/nginx/nginx.conf
[root@nginx ~]# vim /etc/nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /nginx_status { #加了这一个localtion
stub_status;
allow 192.168.80.0/24;
allow 127.0.0.1/32;
deny all;
}
}
}
//重启nginx之后测试一下是否能访问自己的状态页
[root@nginx ~]# curl 192.168.80.23/nginx_status
Active connections: 1
server accepts handled requests
16 16 16
Reading: 0 Writing: 1 Waiting: 0
さて、ここでは以下のようにページ・アイテムが、それにはawkによって、個別に取り出され、ステータスの内側に置く必要があります。
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==1{print $3}'
1
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==3{print $1}'
9
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==3{print $2}'
10
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==3{print $3}'
11
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==4{print $2}'
0
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==4{print $4}'
1
[root@nginx ~]# curl 127.0.0.1/nginx_status 2>/dev/null | awk 'NR==4{print $6}'
0
最後に、私たちは鍵を書く必要があります、私たちに直接重要な問題となり、ファイルに書き込まれたコマンド上記の場合、この場所は、に注意を払う必要があり、問題は何ですか?私たちのアクセスでこれを見つけるZABBIXサーバの値は、すべてのステータスページ一度訪問しなければならず、このような場合は、いったんnginxのログファイルが記録されますあなた方の多くがあるとき、我々は、ログファイルを分析しますのは、役に立たないログに記録しますこれらのログは、独自のアクセスを覚えている私たちは、ログを分析するために、意味がありません。どのように我々は彼らが行くログファイルにこれらのログをさせないように覚えしようとするのですか?現実には、1回の訪問で、我々はできる、少なくとも一回訪問し、完全に書き込まれ、そのファイルへの情報へのアクセスを書き込みされていない、値後のファイルは、それらを取るしようとしている、そうでないラインはまだですか?しかし、また、常に彼らが続く場合は、ファイルを作成することができますので、我々は、リアルタイムの情報を取得することができなくなります、存在していない文書は、60秒間保持した後、再生成されます私たちは、このタスクを達成するためのスクリプトを書くことができます。
[root@nginx scripts]# pwd
/scripts
[root@nginx scripts]# vim nginx_status.sh
#!/bin/bash
#定义变量
NGINX_COMMAND=$1
NGINX_PORT=80
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1:"$NGINX_PORT"/nginx_status/"
#先判断一下文件是否存在,不存在就创建
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
#60秒之后自动删除,删除之后立马再创建,形成一个循环
TIMEFLM=`stat -c %Y $CACHEFILE` #创建文件的时候距离1970年是多少秒
TIMENOW=`date +%s` #现在距离1970年已经过去了多少秒
if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]
then
rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
#这下面就是各种取值了,不过这里是先定义函数,然后再通过case来调用;
nginx_active () {
grep 'Active' $CACHEFILE | awk '{print $NF}'
exit 0;
}
nginx_reading () {
grep 'Reading' $CACHEFILE | awk '{print $2}'
exit 0;
}
nginx_writing () {
grep 'Writing' $CACHEFILE | awk '{print $4}'
exit 0;
}
nginx_waiting () {
grep 'Waiting' $CACHEFILE | awk '{print $6}'
exit 0;
}
nginx_accepts () {
awk NR==3 $CACHEFILE | awk '{print $1}'
exit 0;
}
nginx_handled () {
awk NR==3 $CACHEFILE | awk '{print $2}'
exit 0;
}
nginx_requests () {
awk NR==3 $CACHEFILE | awk '{print $3}'
exit 0;
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo "Invalied credentials"
exit 2;
esac
//别忘记加权限
[root@nginx scripts]# chmod +x nginx_status.sh
//最后一步,写键值,重启服务
[root@nginx zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@nginx zabbix_agentd.d]# cat nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /scripts/nginx_status.sh $1
[root@nginx zabbix_agentd.d]# systemctl restart zabbix-agent
ZABBIXサーバ
//先验证一下键值
[root@zabbix ~]# zabbix_get -s 192.168.80.23 -k nginx_status[requests]
rm: cannot remove ‘/tmp/nginx_status.txt’: Operation not permitted
20
エラーの理由は、我々が生成されたエージェント/ tmpファイルをテストしない場合は、ルートによって生成され、時間はここで実行するようにZABBIXユーザーが実行していることで、解決策は非常に単純なエージェント削除されたの/ tmp内部があります/ TMP / nginx_status.txtファイル。
ZABBIX-ウェブ