mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 02:51:03 +00:00
nginx_upstream_multi_: migrate to Python3
This commit is contained in:
parent
d5676e9dfa
commit
13bd1599b0
1 changed files with 64 additions and 64 deletions
|
@ -1,6 +1,4 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vim: set fileencoding=utf-8
|
|
||||||
#
|
#
|
||||||
# Munin plugin to monitor requests number, cache statuses, http status codes and average request times of
|
# Munin plugin to monitor requests number, cache statuses, http status codes and average request times of
|
||||||
# specified nginx upstreams.
|
# specified nginx upstreams.
|
||||||
|
@ -39,13 +37,19 @@
|
||||||
#
|
#
|
||||||
#%# family=contrib
|
#%# family=contrib
|
||||||
|
|
||||||
import os, sys, re, copy, math
|
import copy
|
||||||
|
import math
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
|
|
||||||
# How we've been called
|
# How we've been called
|
||||||
progName = sys.argv[0]
|
progName = sys.argv[0]
|
||||||
progName = progName[progName.rfind("/")+1:]
|
progName = progName[progName.rfind("/")+1:]
|
||||||
|
|
||||||
|
|
||||||
# Where to store plugin state
|
# Where to store plugin state
|
||||||
if "MUNIN_PLUGSTATE" in os.environ:
|
if "MUNIN_PLUGSTATE" in os.environ:
|
||||||
stateDir = os.environ["MUNIN_PLUGSTATE"]
|
stateDir = os.environ["MUNIN_PLUGSTATE"]
|
||||||
|
@ -130,62 +134,60 @@ def sanitize(string):
|
||||||
|
|
||||||
if len(sys.argv) == 2 and sys.argv[1] == "config":
|
if len(sys.argv) == 2 and sys.argv[1] == "config":
|
||||||
# Parent graph declaration
|
# Parent graph declaration
|
||||||
print "multigraph nginx_upstream_multi_%s" % siteName.replace(".", "_")
|
print("multigraph nginx_upstream_multi_%s" % siteName.replace(".", "_"))
|
||||||
print "graph_title Requests number"
|
print("graph_title Requests number")
|
||||||
print "graph_vlabel rps"
|
print("graph_vlabel rps")
|
||||||
print "graph_category webserver"
|
print("graph_category webserver")
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print "us%s_requests.label %s" % (sanitize(upstream), upstream)
|
print("us%s_requests.label %s" % (sanitize(upstream), upstream))
|
||||||
|
|
||||||
# Requests graph declaration
|
# Requests graph declaration
|
||||||
if "request" in graphs_enabled:
|
if "request" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_requests" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_requests" % (sanitize(siteName), sanitize(upstream)))
|
||||||
print "graph_title Requests number - %s" % upstream
|
print("graph_title Requests number - %s" % upstream)
|
||||||
print "graph_vlabel rps"
|
print("graph_vlabel rps")
|
||||||
print "graph_category webserver"
|
print("graph_category webserver")
|
||||||
print "us%s_requests.label %s" % (sanitize(upstream), upstream)
|
print("us%s_requests.label %s" % (sanitize(upstream), upstream))
|
||||||
print ""
|
print()
|
||||||
|
|
||||||
# Times graph declaration
|
# Times graph declaration
|
||||||
if "time" in graphs_enabled:
|
if "time" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_times" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_times" % (sanitize(siteName), sanitize(upstream)))
|
||||||
print "graph_title Request time - %s" % upstream
|
print("graph_title Request time - %s" % upstream)
|
||||||
print "graph_vlabel sec."
|
print("graph_vlabel sec.")
|
||||||
print "graph_category webserver"
|
print("graph_category webserver")
|
||||||
print "us%s_times.label average" % (sanitize(upstream))
|
print("us%s_times.label average" % (sanitize(upstream)))
|
||||||
for percentile in percentiles:
|
for percentile in percentiles:
|
||||||
print "us%s_times_percentile_%s.label %s-percentile" % (sanitize(upstream), percentile, percentile)
|
print("us%s_times_percentile_%s.label %s-percentile" % (sanitize(upstream), percentile, percentile))
|
||||||
print ""
|
print()
|
||||||
|
|
||||||
# HTTP Status codes graph declaration
|
# HTTP Status codes graph declaration
|
||||||
if "http" in graphs_enabled:
|
if "http" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_statuses" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_statuses" % (sanitize(siteName), sanitize(upstream)))
|
||||||
print "graph_title HTTP - %s" % upstream
|
print("graph_title HTTP - %s" % upstream)
|
||||||
print "graph_vlabel rps"
|
print("graph_vlabel rps")
|
||||||
print "graph_category webserver"
|
print("graph_category webserver")
|
||||||
keylist = httpStatusList.keys()
|
for status in sorted(httpStatusList.keys()):
|
||||||
keylist.sort()
|
print("http%s_%s_status.label %s - %s" % (status, sanitize(upstream), status, httpStatusList[status]["title"]))
|
||||||
for status in keylist:
|
print()
|
||||||
print "http%s_%s_status.label %s - %s" % (status, sanitize(upstream), status, httpStatusList[status]["title"])
|
|
||||||
print ""
|
|
||||||
|
|
||||||
# Cache status graph declaration
|
# Cache status graph declaration
|
||||||
if "cache" in graphs_enabled:
|
if "cache" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_cache" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_cache" % (sanitize(siteName), sanitize(upstream)))
|
||||||
print "graph_title Cache - %s" % upstream
|
print("graph_title Cache - %s" % upstream)
|
||||||
print "graph_vlabel rps"
|
print("graph_vlabel rps")
|
||||||
print "graph_category webserver"
|
print("graph_category webserver")
|
||||||
for status in cacheStatusList:
|
for status in cacheStatusList:
|
||||||
print "us%s_%s_cache.label %s" % (sanitize(status), sanitize(upstream), status)
|
print("us%s_%s_cache.label %s" % (sanitize(status), sanitize(upstream), status))
|
||||||
print ""
|
print()
|
||||||
else:
|
else:
|
||||||
timeElapsed = now - lastRun
|
timeElapsed = now - lastRun
|
||||||
|
|
||||||
|
@ -203,7 +205,7 @@ else:
|
||||||
try:
|
try:
|
||||||
logHandle = open(logPath, "r")
|
logHandle = open(logPath, "r")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print "Log file %s not readable: %s" % (logPath, e.strerror)
|
print("Log file %s not readable: %s" % (logPath, e.strerror), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -282,7 +284,7 @@ else:
|
||||||
lastByteHandle.write(str(logHandle.tell()))
|
lastByteHandle.write(str(logHandle.tell()))
|
||||||
lastByteHandle.close()
|
lastByteHandle.close()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print e.strerror
|
print("Failed to write status file (%s): %s" % (lastBytePath, e.strerror), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
logHandle.close()
|
logHandle.close()
|
||||||
|
@ -293,20 +295,20 @@ else:
|
||||||
if timeElapsed > 0:
|
if timeElapsed > 0:
|
||||||
value = upstreams[upstream]["requests"] / timeElapsed
|
value = upstreams[upstream]["requests"] / timeElapsed
|
||||||
|
|
||||||
print "us%s_requests.value %s" % (sanitize(upstream), value)
|
print("us%s_requests.value %s" % (sanitize(upstream), value))
|
||||||
|
|
||||||
# Requests graph data
|
# Requests graph data
|
||||||
if "request" in graphs_enabled:
|
if "request" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_requests" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_requests" % (sanitize(siteName), sanitize(upstream)))
|
||||||
|
|
||||||
value = 0
|
value = 0
|
||||||
if timeElapsed > 0:
|
if timeElapsed > 0:
|
||||||
value = upstreams[upstream]["requests"] / timeElapsed
|
value = upstreams[upstream]["requests"] / timeElapsed
|
||||||
|
|
||||||
print "us%s_requests.value %s" % (sanitize(upstream), value)
|
print("us%s_requests.value %s" % (sanitize(upstream), value))
|
||||||
print ""
|
print()
|
||||||
|
|
||||||
# Times graph data
|
# Times graph data
|
||||||
if "time" in graphs_enabled:
|
if "time" in graphs_enabled:
|
||||||
|
@ -315,9 +317,9 @@ else:
|
||||||
if upstreams[upstream]["requests"] > 0:
|
if upstreams[upstream]["requests"] > 0:
|
||||||
uTime = upstreams[upstream]["time"] / upstreams[upstream]["requests"]
|
uTime = upstreams[upstream]["time"] / upstreams[upstream]["requests"]
|
||||||
upstreams[upstream]["times"].sort()
|
upstreams[upstream]["times"].sort()
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_times" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_times" % (sanitize(siteName), sanitize(upstream)))
|
||||||
print "us%s_times.value %s" % (sanitize(upstream), uTime)
|
print("us%s_times.value %s" % (sanitize(upstream), uTime))
|
||||||
for percentile in percentiles:
|
for percentile in percentiles:
|
||||||
percentileValue = 0
|
percentileValue = 0
|
||||||
if upstreams[upstream]["requests"] > 0:
|
if upstreams[upstream]["requests"] > 0:
|
||||||
|
@ -329,33 +331,31 @@ else:
|
||||||
percentileValue = (upstreams[upstream]["times"][low] + upstreams[upstream]["times"][high]) / 2
|
percentileValue = (upstreams[upstream]["times"][low] + upstreams[upstream]["times"][high]) / 2
|
||||||
else:
|
else:
|
||||||
percentileValue = upstreams[upstream]["times"][int(percentileKey)]
|
percentileValue = upstreams[upstream]["times"][int(percentileKey)]
|
||||||
print "us%s_times_percentile_%s.value %s" % (sanitize(upstream), percentile, percentileValue)
|
print("us%s_times_percentile_%s.value %s" % (sanitize(upstream), percentile, percentileValue))
|
||||||
print ""
|
print()
|
||||||
|
|
||||||
# HTTP Status codes graph data
|
# HTTP Status codes graph data
|
||||||
if "http" in graphs_enabled:
|
if "http" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_statuses" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_statuses" % (sanitize(siteName), sanitize(upstream)))
|
||||||
keylist = httpStatusList.keys()
|
for status in sorted(httpStatusList.keys()):
|
||||||
keylist.sort()
|
|
||||||
for status in keylist:
|
|
||||||
value = 0
|
value = 0
|
||||||
if timeElapsed > 0:
|
if timeElapsed > 0:
|
||||||
value = upstreams[upstream]["http"][status]["requests"] / timeElapsed
|
value = upstreams[upstream]["http"][status]["requests"] / timeElapsed
|
||||||
|
|
||||||
print "http%s_%s_status.value %s" % (status, sanitize(upstream), value)
|
print("http%s_%s_status.value %s" % (status, sanitize(upstream), value))
|
||||||
print ""
|
print()
|
||||||
|
|
||||||
# Cache status graph data
|
# Cache status graph data
|
||||||
if "cache" in graphs_enabled:
|
if "cache" in graphs_enabled:
|
||||||
for upstream in upstreams.keys():
|
for upstream in upstreams.keys():
|
||||||
print ""
|
print()
|
||||||
print "multigraph nginx_upstream_multi_%s.%s_cache" % (sanitize(siteName), sanitize(upstream))
|
print("multigraph nginx_upstream_multi_%s.%s_cache" % (sanitize(siteName), sanitize(upstream)))
|
||||||
for status in cacheStatusList:
|
for status in cacheStatusList:
|
||||||
value = 0
|
value = 0
|
||||||
if timeElapsed > 0:
|
if timeElapsed > 0:
|
||||||
value = upstreams[upstream]["cache"][status] / timeElapsed
|
value = upstreams[upstream]["cache"][status] / timeElapsed
|
||||||
|
|
||||||
print "us%s_%s_cache.value %s" % (sanitize(status), sanitize(upstream), value)
|
print("us%s_%s_cache.value %s" % (sanitize(status), sanitize(upstream), value))
|
||||||
print ""
|
print()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue