Skip to content

Commit

Permalink
Merge pull request #60 from felipevicens/master
Browse files Browse the repository at this point in the history
Process list of metrics in CNF probe
  • Loading branch information
pkarkazis authored Nov 15, 2019
2 parents 98a34af + 9bc48e7 commit 6fb0341
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
2 changes: 2 additions & 0 deletions cnf_mon/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ RUN ls -la /opt/Monitoring/*

RUN chmod -R g+w /opt/Monitoring/

ENV PYTHONUNBUFFERED=TRUE

WORKDIR /opt/Monitoring

CMD ["sh", "/opt/Monitoring/run.sh"]
36 changes: 23 additions & 13 deletions cnf_mon/statscollector.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,21 @@ def is_json(self, myjson):
return False
return True

def sendStats(self, dt, resp, ip, port):
if not 'resource_id' in dt:
self.logger.error('Response does not contains "resource_id":' + str(resp.text))
else:
rsc_id = dt['resource_id']
del dt['resource_id']
ps = Pusher(pw_url_=self.pushgateway, node_name_=rsc_id, id_=rsc_id,
logger_=self.logger)
for mt in dt:
ps.sendGauge(metric=mt.replace('-', '_'),
description='', value=dt[mt],
job='mon_container', labels={'ip': ip, 'port': port})
self.logger.info('Metric '+mt+' Pushed')
print(dt)

def collectStats(self,interval_, stop_):
lastclick = None
while True:
Expand All @@ -76,20 +91,15 @@ def collectStats(self,interval_, stop_):
port = sc.split(':')[1]
if resp.status_code == 200:
try:
dt = resp.json()
if not 'resource_id' in dt:
self.logger.error('Response does not contains "resource_id":' + str(resp.text))
dt_object = resp.json()
if isinstance(dt_object, list):
for dt in dt_object:
if dt:
self.sendStats(dt, resp, ip, port)
elif isinstance(dt_object, dict):
self.sendStats(dt_object, resp, ip, port)
else:
rsc_id = dt['resource_id']
del dt['resource_id']
ps = Pusher(pw_url_=self.pushgateway, node_name_=rsc_id, id_=rsc_id,
logger_=self.logger)
for mt in dt:
ps.sendGauge(metric=mt.replace('-', '_'),
description='', value=dt[mt],
job='mon_container', labels={'ip': ip, 'port': port})
self.logger.info('Metric '+mt+' Pushed')
print(dt)
raise self.logger.error("Invalid data format")
except ValueError:
self.logger.error('Response is not hedjson format:' + str(resp.text))
else:
Expand Down

0 comments on commit 6fb0341

Please sign in to comment.