diff --git a/ansible/roles/prometheus/templates/prometheus.yml b/ansible/roles/prometheus/templates/prometheus.yml index ccd5b006..6b7fd83d 100755 --- a/ansible/roles/prometheus/templates/prometheus.yml +++ b/ansible/roles/prometheus/templates/prometheus.yml @@ -33,22 +33,28 @@ scrape_configs: module: - "{{ bbjob.module }}" static_configs: +{% if bbjob.target_groups is defined %} +{% set bbgroups = bbjob.target_groups %} +{% else %} +{% set bbgroups = [{'targets': bbjob.targets}] %} +{% endif %} +{% for bbgroup in bbgroups %} - targets: -{% for target in (bbjob.targets|sort) %} +{% for target in (bbgroup.targets|sort) %} - "{{ target }}" {% endfor %} -# Adds custom labels to metrics for this job -{% if (bbjob.ignore_instance_down | default(false)) or (bbjob.labels is defined) %} +# Adds custom labels to metrics for this job, and for this group of targets +{% set bblabels = (bbjob.labels | default({})) | combine(bbgroup.labels | default({})) %} +{% if (bbjob.ignore_instance_down | default(false)) or bblabels %} labels: {% if bbjob.ignore_instance_down | default(false) %} ignore_instance_down: "true" {% endif %} -{% if bbjob.labels is defined %} -{% for k, v in bbjob.labels.items() %} +{% for k, v in bblabels.items() %} {{ k }}: "{{ v }}" {% endfor %} {% endif %} -{% endif %} +{% endfor %} relabel_configs: - source_labels: [__address__] regex: (.*)(:80)? diff --git a/ansible/roles/prometheus/vars/main.yml b/ansible/roles/prometheus/vars/main.yml index 1432d135..986950f0 100644 --- a/ansible/roles/prometheus/vars/main.yml +++ b/ansible/roles/prometheus/vars/main.yml @@ -77,36 +77,60 @@ blackbox_jobs: ignore_instance_down: true labels: tier: "tier-1" - targets: - - "https://api.ooni.io/api/v1/measurements" - - "https://api.ooni.org/api/v1/measurements" - # oonimeasurements.* ones bypass cache - - "https://oonimeasurements.prod.ooni.io/api/v1/measurements" - - "https://oonimeasurements.prod.ooni.io/api/v1/aggregation" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/v1/measurements" + - labels: + service: "oonimeasurements" + targets: + - "https://api.ooni.org/api/v1/measurements" + # oonimeasurements.* ones bypass cache + - "https://oonimeasurements.prod.ooni.io/api/v1/measurements" + - "https://oonimeasurements.prod.ooni.io/api/v1/aggregation" - name: "ooni API test-list urls" module: "https_2xx_json_meta" labels: tier: "tier-0" - targets: - - "https://api.ooni.io/api/v1/test-list/urls?country_code=US" - - "https://api.ooni.org/api/v1/test-list/urls?country_code=US" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/v1/test-list/urls?country_code=US" + - labels: + service: "ooniprobe" + targets: + - "https://api.ooni.org/api/v1/test-list/urls?country_code=US" - name: "ooni API test-helpers" module: "https_2xx_json" ignore_instance_down: true labels: tier: "tier-0" - targets: - - "https://api.ooni.io/api/v1/test-helpers" - - "https://api.ooni.org/api/v1/test-helpers" - - "https://ooniprobe.prod.ooni.io/api/v1/test-helpers" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/v1/test-helpers" + - labels: + service: "ooniprobe" + targets: + - "https://api.ooni.org/api/v1/test-helpers" + - "https://ooniprobe.prod.ooni.io/api/v1/test-helpers" - name: "ooni API priv global overview" module: "https_2xx_json" - targets: - - "https://api.ooni.io/api/_/global_overview" - - "https://api.ooni.org/api/_/global_overview" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/_/global_overview" + - labels: + service: "oonimeasurements" + targets: + - "https://api.ooni.org/api/_/global_overview" - name: "ooni API private" module: "https_2xx_json" @@ -115,6 +139,7 @@ blackbox_jobs: scrape_timeout: 30s labels: tier: "tier-1" + service: "oonimeasurements" targets: - "https://api.ooni.org/api/_/asn_by_month" - "https://api.ooni.org/api/_/countries_by_month" @@ -145,6 +170,7 @@ blackbox_jobs: scrape_timeout: 30s labels: tier: "tier-1" + service: "legacy" targets: - "https://api.ooni.io/api/_/asn_by_month" - "https://api.ooni.io/api/_/countries_by_month" @@ -171,31 +197,50 @@ blackbox_jobs: module: "https_2xx_json" labels: tier: "tier-1" - targets: - - "https://api.ooni.io/api/v1/incidents/search" - - "https://api.ooni.org/api/v1/incidents/search" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/v1/incidents/search" + - labels: + service: "oonifindings" + targets: + - "https://api.ooni.org/api/v1/incidents/search" # Note: this always returns true by design - name: "OONI API check_report_id" module: "https_2xx_json" - targets: - - "https://api.ooni.io/api/_/check_report_id?report_id=RANDOM" - - "https://api.ooni.org/api/_/check_report_id?report_id=RANDOM" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/_/check_report_id?report_id=RANDOM" + - labels: + service: "oonimeasurements" + targets: + - "https://api.ooni.org/api/_/check_report_id?report_id=RANDOM" - name: "OONI API raw_measurement" module: "https_2xx_json" ignore_instance_down: true labels: tier: "tier-1" - targets: - - "https://api.ooni.io/api/v1/raw_measurement?measurement_uid=20240924151005.116855_IT_httpinvalidrequestline_f63463817af9eebe" - - "https://api.ooni.org/api/v1/raw_measurement?measurement_uid=20240924151005.116855_IT_httpinvalidrequestline_f63463817af9eebe" - - "https://oonimeasurements.prod.ooni.io/api/v1/raw_measurement?measurement_uid=20240924151005.116855_IT_httpinvalidrequestline_f63463817af9eebe" + target_groups: + - labels: + service: "legacy" + targets: + - "https://api.ooni.io/api/v1/raw_measurement?measurement_uid=20240924151005.116855_IT_httpinvalidrequestline_f63463817af9eebe" + - labels: + service: "oonimeasurements" + targets: + - "https://api.ooni.org/api/v1/raw_measurement?measurement_uid=20240924151005.116855_IT_httpinvalidrequestline_f63463817af9eebe" + - "https://oonimeasurements.prod.ooni.io/api/v1/raw_measurement?measurement_uid=20240924151005.116855_IT_httpinvalidrequestline_f63463817af9eebe" - name: "OONI Run v2 API" module: "https_2xx_json" labels: tier: "tier-1" + service: "oonirun" targets: - "https://api.ooni.org/api/v2/oonirun/links/10009" - "https://api.ooni.org/api/v2/oonirun/links/10009/revisions" @@ -204,6 +249,7 @@ blackbox_jobs: module: "http_2xx" labels: tier: "tier-1" + service: "oonimeasurements" targets: - "https://oonimeasurements.prod.ooni.io/api/v1/detector/changepoints" @@ -212,6 +258,7 @@ blackbox_jobs: ignore_instance_down: true labels: tier: "tier-1" + service: "oonimeasurements" targets: - "https://oonimeasurements.prod.ooni.io/health" @@ -220,15 +267,29 @@ blackbox_jobs: ignore_instance_down: true labels: tier: "tier-0" - targets: - - "https://ooniprobe.prod.ooni.io/health" - - "https://oonirun.prod.ooni.io/health" - - "https://ooniauth.prod.ooni.io/health" - - "https://oonifindings.prod.ooni.io/health" + target_groups: + - labels: + service: "ooniprobe" + targets: + - "https://ooniprobe.prod.ooni.io/health" + - labels: + service: "oonirun" + targets: + - "https://oonirun.prod.ooni.io/health" + - labels: + service: "ooniauth" + targets: + - "https://ooniauth.prod.ooni.io/health" + - labels: + service: "oonifindings" + targets: + - "https://oonifindings.prod.ooni.io/health" - name: "OONI Probe GET" module: "http_2xx" ignore_instance_down: true + labels: + service: "ooniprobe" targets: # Anonymous Credentials - "https://ooniprobe.prod.ooni.io/api/v1/manifest" @@ -236,12 +297,16 @@ blackbox_jobs: - name: "OONI Probe report" module: "ooni_http_post_report" ignore_instance_down: true + labels: + service: "ooniprobe" targets: - "https://ooniprobe.prod.ooni.io/report" - name: "OONI Probe check-in" module: "ooni_http_post_checkin" ignore_instance_down: true + labels: + service: "ooniprobe" targets: - "https://ooniprobe.prod.ooni.io/api/v1/check-in"