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