Add mon-exporter as scrape target in Prometheus
The Prometheus sidecar is expected to generate the scrape targets from
the config map and from the prometheus_jobs in MongoDB. MON is adding
mon-exporter as prometheus_job in MongoDB. There are race conditions in
the start of MON and Prometheus that prevent the sidecar to be aware
of the mon-exporter being added to prometheus_jobs collection in
MongoDB.
This change adds mon-exporter to the default scrape-targets and reconciles
the jobs in Mongo and the jobs in the configmap, prevailing the job in the
configmap if duplicated.
Change-Id: Ib6f1cb89723d7b4942eeb77fd0ea46a0d3493d58
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/docker/Prometheus/src/app.py b/docker/Prometheus/src/app.py
index eb62555..b06f448 100755
--- a/docker/Prometheus/src/app.py
+++ b/docker/Prometheus/src/app.py
@@ -70,9 +70,20 @@
if "scrape_configs" not in config_file_yaml:
config_file_yaml["scrape_configs"] = []
+ prometheus_jobs_to_be_added = []
+
for prometheus_job in prometheus_jobs:
cleaned_up_job = clean_up_job(prometheus_job)
- config_file_yaml["scrape_configs"].append(cleaned_up_job)
+ job_to_be_added = True
+ for sc in config_file_yaml["scrape_configs"]:
+ if sc.get("job_name") == cleaned_up_job.get("job_name"):
+ job_to_be_added = False
+ break
+ if job_to_be_added:
+ prometheus_jobs_to_be_added.append(cleaned_up_job)
+
+ for job in prometheus_jobs_to_be_added:
+ config_file_yaml["scrape_configs"].append(job)
return config_file_yaml
diff --git a/installers/docker/osm_pods/ng-prometheus.yaml b/installers/docker/osm_pods/ng-prometheus.yaml
index 56aca67..ebef7a9 100644
--- a/installers/docker/osm_pods/ng-prometheus.yaml
+++ b/installers/docker/osm_pods/ng-prometheus.yaml
@@ -85,6 +85,9 @@
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
+ - job_name: 'mon_exporter'
+ static_configs:
+ - targets: ['mon:8000']
- job_name: pushgateway
honor_labels: true
scrape_interval: 30s
diff --git a/installers/docker/osm_pods/prometheus.yaml b/installers/docker/osm_pods/prometheus.yaml
index 2610710..241ed72 100644
--- a/installers/docker/osm_pods/prometheus.yaml
+++ b/installers/docker/osm_pods/prometheus.yaml
@@ -73,8 +73,10 @@
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
- scrape_configs: []
- # scrape_configs:
+ scrape_configs:
+ - job_name: 'mon_exporter'
+ static_configs:
+ - targets: ['mon:8000']
# Add here other external targets, e.g. a pushgateway
# - job_name: 'pushgateway'
# static_configs: