{{ define "agent.config.opencost" }}
// OpenCost
discovery.relabel "opencost" {
  targets = discovery.kubernetes.services.targets
  rule {
    source_labels = ["__meta_kubernetes_service_label_app_kubernetes_io_instance"]
    regex = "{{ .Release.Name }}"
    action = "keep"
  }
  {{- range $k, $v := .Values.metrics.cost.labelMatchers }}
  rule {
    source_labels = ["__meta_kubernetes_service_label_{{ $k | replace "." "_" | replace "/" "_" }}"]
    regex = "{{ $v }}"
    action = "keep"
  }
  {{- end }}
  rule {
    source_labels = ["__meta_kubernetes_service_port_name"]
    regex = "http"
    action = "keep"
  }
}

prometheus.scrape "opencost" {
  job_name   = "integrations/kubernetes/opencost"
  targets    = discovery.relabel.opencost.output
{{- if .Values.metrics.cost.allowList }}
  forward_to = [prometheus.relabel.opencost.receiver]
{{- else }}
  forward_to = [prometheus.remote_write.grafana_cloud_prometheus.receiver]
{{- end }}
}
{{- if .Values.metrics.cost.allowList }}

prometheus.relabel "opencost" {
  rule {
    source_labels = ["__name__"]
    regex = "up|{{ join "|" .Values.metrics.cost.allowList }}"
    action = "keep"
  }
  forward_to = [prometheus.remote_write.grafana_cloud_prometheus.receiver]
}
{{- end }}
{{ end }}
