mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 02:51:03 +00:00
Added nginx check for upstream access times
This commit is contained in:
parent
ad4d972499
commit
4b83635595
1 changed files with 56 additions and 0 deletions
56
plugins/nginx/nginx_upstream
Normal file
56
plugins/nginx/nginx_upstream
Normal file
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/python
|
||||
#requires log format as below
|
||||
#log_format cache '$remote_addr - $host [$time_local] "$request" $status '
|
||||
# '$body_bytes_sent "$http_referer" '
|
||||
# 'rt=$request_time ut="$upstream_response_time" '
|
||||
# 'cs=$upstream_cache_status';
|
||||
|
||||
#License BSD
|
||||
#Created by Simon Whittaker simon+github@swbh.net
|
||||
#based on nginx_cache_hit_rate
|
||||
|
||||
from __future__ import with_statement
|
||||
import re
|
||||
import sys
|
||||
fname = "/var/log/nginx/access.log" # File to check
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
if sys.argv[1]=="config":
|
||||
print "graph_args --base 1000 -l 0"
|
||||
print "graph_title NGINX Upstream times"
|
||||
print "graph_category nginx"
|
||||
print "graph_vlabel milliseconds"
|
||||
print "upstream.label upstream"
|
||||
print "upstream.warning 5000"
|
||||
print "upstream.critical 10000"
|
||||
print "graph_info Shows the average time of connections to upstream servers for the primary site"
|
||||
sys.exit(0)
|
||||
|
||||
with open(fname, "r") as f:
|
||||
f.seek (0, 2) # Seek @ EOF
|
||||
fsize = f.tell() # Get Size
|
||||
f.seek (max (fsize-20480, 0), 0) # Set pos @ last n chars
|
||||
lines = f.readlines() # Read to end
|
||||
|
||||
lines = lines[-1000:] #last 1000 lines you might want to change this
|
||||
|
||||
re1='.*?' # Non-greedy match on filler
|
||||
re2='(ut)' # Word 1
|
||||
re3='(=)' # Any Single Character 1
|
||||
re4='([+-]?\\d*\\.\\d+)(?![-+0-9\\.])' # Float 1
|
||||
|
||||
rg = re.compile(re1+re2+re3+re4,re.IGNORECASE|re.DOTALL)
|
||||
totaltimeforrequests=0
|
||||
numberofrequests=0
|
||||
for line in lines:
|
||||
m = rg.search(line)
|
||||
if m:
|
||||
word1=m.group(1)
|
||||
c1=m.group(2)
|
||||
float1=m.group(3)
|
||||
numberofrequests=numberofrequests+1
|
||||
totaltimeforrequests=totaltimeforrequests+float(float1)
|
||||
|
||||
upstream=(totaltimeforrequests/numberofrequests)*1000
|
||||
upstream=int(upstream)
|
||||
print "upstream.value "+str(upstream)
|
Loading…
Add table
Add a link
Reference in a new issue