{{ define "alloy.config.metricsService" }}
// Metrics Service
remote.kubernetes.secret "metrics_service" {
  name = {{ include "kubernetes_monitoring.metrics_service.secret.name" . | quote }}
  namespace = {{ .Values.externalServices.prometheus.secret.namespace | default .Release.Namespace | quote }}
}

prometheus.relabel "metrics_service" {
  max_cache_size = {{ .Values.metrics.maxCacheSize | int }}
  rule {
    source_labels = ["cluster"]
    regex = ""
    replacement = {{ required ".Values.cluster.name is a required value. Please set it and try again." .Values.cluster.name | quote }}
    target_label = "cluster"
  }

{{- if .Values.metrics.extraMetricRelabelingRules }}
{{ .Values.metrics.extraMetricRelabelingRules | indent 2 }}
{{- end }}

{{- if eq .Values.externalServices.prometheus.protocol "remote_write" }}
  forward_to = [prometheus.remote_write.metrics_service.receiver]
}
{{ include "alloy.config.metricsServiceRemoteWrite" . }}
{{- end }}

{{- if or (eq .Values.externalServices.prometheus.protocol "otlp") (eq .Values.externalServices.prometheus.protocol "otlphttp") }}
  forward_to = [otelcol.receiver.prometheus.metrics_service.receiver]
}
{{ include "alloy.config.metricsServiceOTLP" . }}
{{ end }}
{{- end }}
