很久沒有寫部落格了,今天遇到個麻煩事,網站的通路量突然加大,監控報警是把我的機房帶寬全部跑滿了,最後把硬體防火牆的政策改動之後才恢複正常。然後負責人要關于nginx網站,和帶寬的狀态,于是就想起要做這個了,主要是監控nginx的一些連結狀态:
1、首先開啟nginx_status子產品監控功能:
1
2
3
4
5
6
7
8
9
10
<code>server {</code>
<code> </code><code>listen </code><code>8067</code><code>;</code>
<code> </code><code>server_name localhost; </code>
<code> </code><code>root html; </code>
<code> </code><code>index index.html;</code>
<code> </code><code>access_log off;</code>
<code> </code><code>location </code><code>/</code><code>status {</code>
<code> </code><code>stub_status on;</code>
<code> </code><code>}</code>
<code>}</code>
2、測試:
<code>[root@WEB_007 vhosts]</code><code># curl http://192.168.10.7:8067/status</code>
<code>Active connections: </code><code>3</code>
<code>server accepts handled requests</code>
<code> </code><code>1305214152</code> <code>1305214152</code> <code>1305204005</code>
<code>Reading: </code><code>0</code> <code>Writing: </code><code>3</code> <code>Waiting: </code><code>0</code>
3、編寫腳本過濾資料:(zabbix主要有資料就能出圖):
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<code>[root@WEB_007 vhosts]</code><code># cat /usr/local/zabbix/scripts/nginx_status </code>
<code>#!/bin/bash </code>
<code># Script to fetch nginx statuses for tribily monitoring systems </code>
<code># Author: xiaoluo</code>
<code># License: GPLv2 </code>
<code> </code>
<code>function active { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| grep </code><code>'Active'</code> <code>| awk </code><code>'{print $NF}'</code>
<code>} </code>
<code>function reading { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| grep </code><code>'Reading'</code> <code>| awk </code><code>'{print $2}'</code>
<code>function writing { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| grep </code><code>'Writing'</code> <code>| awk </code><code>'{print $4}'</code>
<code>function waiting { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| grep </code><code>'Waiting'</code> <code>| awk </code><code>'{print $6}'</code>
<code>function accepts { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| awk NR</code><code>=</code><code>=</code><code>3</code> <code>| awk </code><code>'{print $1}'</code>
<code>function handled { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| awk NR</code><code>=</code><code>=</code><code>3</code> <code>| awk </code><code>'{print $2}'</code>
<code>function requests { </code>
<code>/</code><code>usr</code><code>/</code><code>bin</code><code>/</code><code>curl </code><code>"http://192.168.10.7:8067/status"</code> <code>2</code><code>></code><code>/</code><code>dev</code><code>/</code><code>null| awk NR</code><code>=</code><code>=</code><code>3</code> <code>| awk </code><code>'{print $3}'</code>
<code># Run the requested function </code>
<code>$</code><code>1</code>
4、開啟zabbix腳本功能、我現在是習慣把執行的key,放在另一個路徑下,以後檔案多了好區分,大家應該也建議這麼做:
<code>[root@WEB_007 zabbix_agentd.conf.d]</code><code># vi /usr/local/zabbix/etc/zabbix_agentd.conf </code>
<code>UnsafeUserParameters</code><code>=</code><code>1</code>
<code>Include</code><code>=</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>etc</code><code>/</code><code>zabbix_agentd.conf.d</code><code>/</code>
<code>[root@WEB_007 zabbix_agentd.conf.d]</code><code>#cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/</code>
<code>[root@WEB_007 zabbix_agentd.conf.d]</code><code>#vi nginx</code>
<code>#monitor nginx</code>
<code>UserParameter</code><code>=</code><code>nginx[</code><code>*</code><code>],</code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>scripts</code><code>/</code><code>nginx_status $</code><code>1</code>
5、導入模闆:子產品在我的附件可以自己下載下傳:
這裡示範,在那個時候我第一次制作,是以忘記添加圖形了,大家可以自己根據模闆添加圖形,還有觸發器我也沒有建立,大家根據自己的需要進行建立
6、圖形檢視效果:
<a href="http://down.51cto.com/data/2365647" target="_blank">附件:http://down.51cto.com/data/2365647</a>
本文轉自 小羅ge11 51CTO部落格,原文連結:http://blog.51cto.com/xiaoluoge/1642194,如需轉載請自行聯系原作者