Compare commits

...

6 Commits

3 changed files with 73 additions and 2 deletions

73
knot_
View File

@ -24,7 +24,7 @@ def responses(stats, config):
if config: if config:
print("graph_title Knot responses") print("graph_title Knot responses")
print("graph_category dns") print("graph_category dns")
print("graph_vlabel responses") print("graph_vlabel responses / ${graph_period}")
print("graph_args --base 1000 --lower-limit 0") print("graph_args --base 1000 --lower-limit 0")
for code in responses_stats: for code in responses_stats:
print(f"{code}.label {code}") print(f"{code}.label {code}")
@ -35,11 +35,78 @@ def responses(stats, config):
print(f"{code}.value {responses_stats[code]}") print(f"{code}.value {responses_stats[code]}")
def proto(stats, config):
'''
This will show if ipv4 or ipv6 and if tcp or udp are used.
'''
proto_stats = {}
if 'request-protocol' not in stats['mod-stats']:
proto_stats.update({'udp4': 0})
else:
for proto in stats['mod-stats']['request-protocol']:
proto_stats.update(
{
proto:
stats['mod-stats']['request-protocol'][proto]
}
)
if config: # Configure the plugin
print("graph_title Knot protocols")
print("graph_category dns")
print("graph_vlabel numbers of requests / ${graph_period}")
print("graph_args --base 1000 --lower-limit 0")
for proto in proto_stats:
print(f"{proto}.label {proto}")
print(f"{proto}.type DERIVE")
print(f"{proto}.min 0")
else: # Send the values
for proto in proto_stats:
print(f"{proto}.value {proto_stats[proto]}")
def bandwith(stats, config):
'''
This will show query and responses used bandwith.
'''
bandwith_stats = {}
if 'request-bytes' not in stats['mod-stats']:
bandwith_stats.update({'received': 0})
else:
bandwith_stats.update({'received':
stats['mod-stats']['request-bytes']['query']})
if 'response-bytes' not in stats['mod-stats']:
bandwith_stats.update({'sent': 0})
else:
bandwith_stats.update({'sent':
stats['mod-stats']['response-bytes']['reply']})
if config: # Configure the plugin
print("graph_title Knot bandwith")
print("graph_category dns")
print("graph_vlabel bits in (-) / out (+) per ${graph_period}")
print("graph_args --base 1000")
print("graph_order down up")
print("down.label received")
print("down.type DERIVE")
print("down.min 0")
print("down.graph no")
print("down.cdef down,8,*")
print("up.label bps")
print("up.type DERIVE")
print("up.min 0")
print("up.negative down")
print("up.cdef up,8,*")
else: # Send the values
print(f"down.value {bandwith_stats['received']}")
print(f"up.value {bandwith_stats['sent']}")
if __name__ == '__main__': if __name__ == '__main__':
# Retrieve datas : # Retrieve datas :
file = getenv('stats_file_path') file = getenv('stats_file_path')
with open(file, "r") as stats_file: with open(file, "r") as stats_file:
stats = yaml.safe_load(stats_file) stats = yaml.safe_load(stats_file)
if "mod-stats" not in stats:
raise Exception("Please configure knot with mod-stats")
if len(argv) > 1 and argv[1] == "config": if len(argv) > 1 and argv[1] == "config":
config = True config = True
else: else:
@ -47,6 +114,8 @@ if __name__ == '__main__':
if "responses" in argv[0]: if "responses" in argv[0]:
responses(stats, config) responses(stats, config)
elif "proto" in argv[0]: elif "proto" in argv[0]:
pass proto(stats, config)
elif "bandwith" in argv[0]:
bandwith(stats, config)
else: else:
pass # Nothing happens if no "munin underscore args" pass # Nothing happens if no "munin underscore args"

1
knot_bandwith Symbolic link
View File

@ -0,0 +1 @@
knot_

1
knot_proto Symbolic link
View File

@ -0,0 +1 @@
knot_