Skip to content

Commit

Permalink
reword the commit message
Browse files Browse the repository at this point in the history
  • Loading branch information
Richard Tief committed Sep 28, 2021
1 parent 133dc90 commit bd10e85
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 34 deletions.
19 changes: 10 additions & 9 deletions BaseCollector.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,27 +129,28 @@ def get_alertdefinitions(self):
return self.alertdefinitions

def get_iteration(self):
request = requests.get(url="http://" + os.environ['INVENTORY'] + "/iteration")
self.iteration = request.json() if request else {}
self.iteration = self.do_request(url="http://" + os.environ['INVENTORY'] + "/iteration")
return self.iteration

def get_collection_times(self):
self.wait_for_inventory_data()
request = requests.get(url="http://" + os.environ['INVENTORY'] + "/collection_times")
self.collection_times = request.json() if request else {}
self.collection_times = self.do_request(url="http://" + os.environ['INVENTORY'] + "/collection_times")
return self.collection_times

def get_inventory_api_responses(self):
self.wait_for_inventory_data()
request = requests.get(url="http://" + os.environ['INVENTORY'] + "/api_response_codes")
self.api_responses = request.json() if request else {}
self.api_responses = self.do_request(url="http://" + os.environ['INVENTORY'] + "/api_response_codes")
return self.api_responses

def get_target_tokens(self):
self.target_tokens = self.do_request(url="http://" + os.environ['INVENTORY'] + "/target_tokens")
return self.target_tokens

def do_request(self, url):
try:
request = requests.get(url="http://" + os.environ['INVENTORY'] + "/target_tokens")
self.target_tokens = request.json() if request else {}
return self.target_tokens
request = requests.get(url)
response = request.json() if request else {}
return response
except requests.exceptions.ConnectionError as e:
logger.critical(f'No connection to inventory: {os.environ["INVENTORY"]} - Error: {e}')
return {}
Expand Down
71 changes: 46 additions & 25 deletions collectors/InventoryCollector.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from BaseCollector import BaseCollector

from prometheus_client.core import GaugeMetricFamily, CounterMetricFamily
from prometheus_client.core import GaugeMetricFamily
import logging

logger = logging.getLogger('vrops-exporter')
Expand All @@ -16,39 +16,60 @@ def __init__(self):
def describe(self):
for resourcekind in self.resourcekinds:
yield GaugeMetricFamily(f'vrops_inventory_{resourcekind}', f'Amount of {resourcekind} in inventory')
yield CounterMetricFamily('vrops_inventory_iteration', 'vrops_inventory')
yield GaugeMetricFamily('vrops_inventory_iteration', 'vrops_inventory')
yield GaugeMetricFamily('vrops_inventory_collection_time_seconds', 'vrops_inventory')
yield GaugeMetricFamily('vrops_api_response', 'vrops-exporter')

def collect(self):
logger.info(f'{self.name} starts with collecting the metrics')

for target, token in self.get_target_tokens().items():
for resourcekind in self.resourcekinds:
gauge = GaugeMetricFamily(f'vrops_inventory_{resourcekind}', f'Amount of {resourcekind} in inventory',
labels=["target"])
target_tokens = self.get_target_tokens()
if not target_tokens:
return

type_method = getattr(BaseCollector, f'get_{resourcekind}')
amount = len(type_method(self, target))
gauge.add_metric(labels=[target], value=amount)
yield gauge
for target, token in self.target_tokens.items():
for gauge_metric in self.amount_inventory_resources(target):
yield gauge_metric
yield self.iteration_metric(target)
yield self.api_response_metric(target)
yield self.collection_time_metric(target)

counter = CounterMetricFamily('vrops_inventory_iteration', 'vrops_inventory', labels=["target"])
iteration = self.get_iteration()
counter.add_metric(labels=[target], value=iteration)
def amount_inventory_resources(self, target):
gauges = list()
for resourcekind in self.resourcekinds:
gauge = GaugeMetricFamily(f'vrops_inventory_{resourcekind}', f'Amount of {resourcekind} in inventory',
labels=["target"])

yield counter
type_method = getattr(BaseCollector, f'get_{resourcekind}')
amount = len(type_method(self, target))
gauge.add_metric(labels=[target], value=amount)
gauges.append(gauge)
return gauges

collection_time = self.get_collection_times()[target]
time = GaugeMetricFamily('vrops_inventory_collection_time_seconds', 'vrops_inventory', labels=["target"])
time.add_metric(labels=[target], value=collection_time)
def iteration_metric(self, target):
iteration_gauge = GaugeMetricFamily('vrops_inventory_iteration', 'vrops_inventory', labels=["target"])
iteration = self.get_iteration()
if not iteration:
return iteration_gauge
iteration_gauge.add_metric(labels=[target], value=iteration)
return iteration_gauge

yield time
def api_response_metric(self, target):
api_response_gauge = GaugeMetricFamily('vrops_api_response', 'vrops-exporter',
labels=['target', 'class', 'get_request'])
status_code_dict = self.get_inventory_api_responses()[target]
if not status_code_dict:
return api_response_gauge
for get_request, status_code in status_code_dict.items():
api_response_gauge.add_metric(labels=[target, self.name.lower(), get_request],
value=status_code)
return api_response_gauge

status_code_dict = self.get_inventory_api_responses()[target]
api_response = GaugeMetricFamily('vrops_api_response', 'vrops-exporter',
labels=['target', 'class', 'get_request'])
for get_request, status_code in status_code_dict.items():
api_response.add_metric(labels=[target, self.name.lower(), get_request],
value=status_code)
yield api_response
def collection_time_metric(self, target):
collection_time_gauge = GaugeMetricFamily('vrops_inventory_collection_time_seconds', 'vrops_inventory',
labels=["target"])
collection_time = self.get_collection_times()[target]
if not collection_time:
return collection_time_gauge
collection_time_gauge.add_metric(labels=[target], value=collection_time)
return collection_time_gauge

0 comments on commit bd10e85

Please sign in to comment.