{{ define "alloy.config.metricsServiceRemoteWrite" }}
{{- with .Values.externalServices.prometheus }}
prometheus.remote_write "metrics_service" {
  endpoint {
    url = nonsensitive(remote.kubernetes.secret.metrics_service.data[{{ .hostKey | quote }}]) + "{{ .writeEndpoint }}"
    headers = { "X-Scope-OrgID" = nonsensitive(remote.kubernetes.secret.metrics_service.data[{{ .tenantIdKey | quote }}]) }
{{- if .proxyURL }}
    proxy_url = {{ .proxyURL | quote }}
{{- end }}
{{ if eq .authMode "basic" }}
    basic_auth {
      username = nonsensitive(remote.kubernetes.secret.metrics_service.data[{{ .basicAuth.usernameKey | quote }}])
      password = remote.kubernetes.secret.metrics_service.data[{{ .basicAuth.passwordKey | quote }}]
    }
{{- end }}
{{ if .writeRelabelConfigRules }}
{{ .writeRelabelConfigRules | indent 4 }}
{{- end }}
{{- if .tls }}
    tls_config {
    {{- range $k, $v := .tls }}
      {{ $k }} = {{ $v | toJson }}
    {{- end }}
    }
{{- end }}
    send_native_histograms = {{ .sendNativeHistograms }}

    queue_config {
      capacity = {{ .queue_config.capacity }}
      min_shards = {{ .queue_config.min_shards }}
      max_shards = {{ .queue_config.max_shards }}
      max_samples_per_send = {{ .queue_config.max_samples_per_send }}
      batch_send_deadline = {{ .queue_config.batch_send_deadline | quote }}
      min_backoff = {{ .queue_config.min_backoff | quote }}
      max_backoff = {{ .queue_config.max_backoff | quote }}
      retry_on_http_429 = {{ .queue_config.retry_on_http_429 }}
      sample_age_limit = {{ .queue_config.sample_age_limit | quote }}
    }
  }

  wal {
    truncate_frequency = {{ .wal.truncateFrequency | quote }}
    min_keepalive_time = {{ .wal.minKeepaliveTime | quote }}
    max_keepalive_time = {{ .wal.maxKeepaliveTime | quote }}
  }

  external_labels = {
  {{- range $key, $value := .externalLabels }}
    {{ $key }} = {{ $value | quote }},
  {{- end }}
  {{- range $key, $value := .externalLabelsFrom }}
    {{ $key }} = {{ $value }},
  {{- end }}
{{- end }}
  }
}
{{ end }}
