From e7b559c5d4fd563397b4aefae23efeba8c72fbb7 Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Sat, 16 Jul 2022 09:35:16 +0200 Subject: [PATCH] chg: [pdns-cof-server/feeder] add basic statistics per `sensor_id` --- bin/pdns-cof-server.py | 11 +++++++++++ bin/pdns-import-cof.py | 2 ++ 2 files changed, 13 insertions(+) diff --git a/bin/pdns-cof-server.py b/bin/pdns-cof-server.py index 169cc07..480d163 100644 --- a/bin/pdns-cof-server.py +++ b/bin/pdns-cof-server.py @@ -727,6 +727,7 @@ def getRecord(t=None): if setsize < 200: rs = r.smembers(rec) else: + # TODO: improve with a new API end-point with SSCAN # rs = r.srandmember(rec, number=300) rs = False @@ -784,7 +785,17 @@ def JsonQOF(rrfound=None, RemoveDuplicate=True): class InfoHandler(tornado.web.RequestHandler): def get(self): + stats = int(r.get("stats:processed")) response = {'version': 'git', 'software': 'analyzer-d4-passivedns'} + response['stats'] = stats + sensors = r.zrevrange('stats:sensors', 0, -1, withscores=True) + rsensors = [] + for x in sensors: + d = dict() + d['sensor_id'] = x[0].decode() + d['count'] = int(float(x[1])) + rsensors.append(d) + response['sensors'] = rsensors self.write(response) diff --git a/bin/pdns-import-cof.py b/bin/pdns-import-cof.py index b0a4845..a3dd849 100644 --- a/bin/pdns-import-cof.py +++ b/bin/pdns-import-cof.py @@ -110,6 +110,8 @@ def add_record(rdns=None): if stats: r.incrby('stats:processed', amount=1) + r.sadd('sensors:seen', rdns["sensor_id"]) + r.zincrby('stats:sensors', 1, rdns["sensor_id"]) if not r: logger.info('empty passive dns record') return False