Compare commits
6 Commits
8990114eb3
...
master
Author | SHA1 | Date | |
---|---|---|---|
ae7ad63d52
|
|||
cac3225224
|
|||
0f1ac76bcc
|
|||
3e3608960f
|
|||
3a1845d8cd
|
|||
d7f2926222
|
73
knot_
73
knot_
@ -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
1
knot_bandwith
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
knot_
|
1
knot_proto
Symbolic link
1
knot_proto
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
knot_
|
Reference in New Issue
Block a user