ping_mon/namespace_conntrack_check.py

44 lines
1.6 KiB
Python

from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
import sys, random
import subprocess
from pyroute2 import netns, NSPopen
import socket
import time
hostname=socket.gethostname()
while True:
registry = CollectorRegistry()
g_count = Gauge('test_nf_conntrack_count', 'nf_conntrack_count inside given namespace', ['host','namespace'],registry=registry )
g_max = Gauge('test_nf_conntrack_max', 'nf_conntrack_max inside given namespace', ['host','namespace'],registry=registry )
g_time = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry)
g_time.set_to_current_time()
for _item in netns.listnetns():
if str(_item).startswith("qrouter"):
nsp = NSPopen(_item, ['cat', '/proc/sys/net/netfilter/nf_conntrack_count'], stdout=subprocess.PIPE)
result=nsp.communicate()
nsresult_count=(result[0].decode('ascii').strip())
nsp.wait()
nsp.release()
nsp = NSPopen(_item, ['cat', '/proc/sys/net/netfilter/nf_conntrack_max'], stdout=subprocess.PIPE)
result=nsp.communicate()
nsresult_max=(result[0].decode('ascii').strip())
print(_item + " " + nsresult_count + " " + nsresult_max)
nsp.wait()
nsp.release()
g_count.labels(hostname,_item).set(nsresult_count)
g_max.labels(hostname,_item).set(nsresult_max)
# exit()
push_to_gateway('10.10.110.250:9091', job='cory_test_job2', registry=registry)
time.sleep(30)
# print("Done")
# # curl -X GET http://10.10.110.250:9091/api/v1/metrics | jq