# Local Prometheus — scrapes the OTel collector's exporter so app metrics
# sent via OTLP land where hub-api's PROMETHEUS_URL queries expect them.
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: otel-collector
    static_configs:
      - targets: ['otel-collector:8889']

  # External-service health probes (blackbox exporter) — the hosted Probe-CR
  # topology: targets + labels come from file_sd JSON written by the CLI
  # (mesh dev --externals / ExternalService wiring); probe_success/probe_duration
  # land with type/tenant/env/app/external_service labels, exactly what
  # hub-api's health enrichment and uptime views query.
  - job_name: external-services
    metrics_path: /probe
    params:
      module: [http_2xx]
    scrape_interval: 30s
    file_sd_configs:
      - files: ['/etc/prometheus/probes/*.json']
        refresh_interval: 15s
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      # Per-target module override: file_sd entries may carry a
      # __probe_module label (e.g. tcp_connect for databases/SFTP, where an
      # HTTP GET can never succeed); default stays http_2xx from params.
      - source_labels: [__probe_module]
        regex: (.+)
        target_label: __param_module
      - target_label: __address__
        replacement: blackbox-exporter:9115
