1
0
Fork 0
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:
Lars Kruse 2018-12-20 15:06:24 +01:00
parent d5676e9dfa
commit 13bd1599b0

View file

@ -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()