cw-infra-apps/grafana/charts/feature-annotation-autodiscovery/templates/_services.alloy.tpl
2025-05-28 10:01:42 +03:00

157 lines
4.3 KiB
Smarty

{{- define "feature.annotationAutodiscovery.services" }}
discovery.kubernetes "services" {
role = "service"
{{- if .Values.namespaces }}
namespaces {
names = {{ .Values.namespaces | toJson }}
}
{{- end }}
{{- $labelSelectors := list }}
{{- range $k, $v := .Values.labelSelectors }}
{{- if kindIs "slice" $v }}
{{- $labelSelectors = append $labelSelectors (printf "%s in (%s)" $k (join "," $v)) }}
{{- else }}
{{- $labelSelectors = append $labelSelectors (printf "%s=%s" $k $v) }}
{{- end }}
{{- end }}
{{- range $k, $v := .Values.services.labelSelectors }}
{{- if kindIs "slice" $v }}
{{- $labelSelectors = append $labelSelectors (printf "%s in (%s)" $k (join "," $v)) }}
{{- else }}
{{- $labelSelectors = append $labelSelectors (printf "%s=%s" $k $v) }}
{{- end }}
{{- end }}
{{- if $labelSelectors }}
selectors {
role = "service"
label = {{ $labelSelectors | join "," | quote }}
}
{{- end }}
}
discovery.relabel "annotation_autodiscovery_services" {
targets = discovery.kubernetes.services.targets
{{- if .Values.excludeNamespaces }}
rule {
source_labels = ["__meta_kubernetes_namespace"]
regex = "{{ join "|" .Values.excludeNamespaces }}"
action = "drop"
}
{{- end }}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.scrape }}"]
regex = "true"
action = "keep"
}
rule {
source_labels = ["__meta_kubernetes_service_name"]
target_label = "service"
}
rule {
source_labels = ["__meta_kubernetes_namespace"]
target_label = "namespace"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.job }}"]
target_label = "job"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.instance }}"]
target_label = "instance"
}
// Set metrics path
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.metricsPath }}"]
target_label = "__metrics_path__"
}
// Set metrics scraping URL parameters
rule {
action = "labelmap"
regex = "{{ include "service_annotation" .Values.annotations.metricsParam }}_(.+)"
replacement = "__param_$1"
}
// Choose the service port
rule {
source_labels = ["__meta_kubernetes_service_port_name"]
target_label = "__tmp_port"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.metricsPortName }}"]
regex = "(.+)"
target_label = "__tmp_port"
}
rule {
source_labels = ["__meta_kubernetes_service_port_name"]
action = "keepequal"
target_label = "__tmp_port"
}
rule {
source_labels = ["__meta_kubernetes_service_port_number"]
target_label = "__tmp_port"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.metricsPortNumber }}"]
regex = "(.+)"
target_label = "__tmp_port"
}
rule {
source_labels = ["__meta_kubernetes_service_port_number"]
action = "keepequal"
target_label = "__tmp_port"
}
rule {
action = "labeldrop"
regex = "__tmp_port"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.metricsScheme }}"]
regex = "(.+)"
target_label = "__scheme__"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.metricsScrapeInterval }}"]
regex = "(.+)"
target_label = "__scrape_interval__"
}
rule {
source_labels = ["__scrape_interval__"]
regex = ""
replacement = {{ .Values.scrapeInterval | default .Values.global.scrapeInterval | quote }}
target_label = "__scrape_interval__"
}
rule {
source_labels = ["{{ include "service_annotation" .Values.annotations.metricsScrapeTimeout }}"]
regex = "(.+)"
target_label = "__scrape_timeout__"
}
rule {
source_labels = ["__scrape_timeout__"]
regex = ""
replacement = {{ .Values.scrapeTimeout | default .Values.global.scrapeTimeout | quote }}
target_label = "__scrape_timeout__"
}
{{- range $metricLabel, $k8sLabel := .Values.services.labels }}
rule {
source_labels = ["{{ include "service_label" $k8sLabel }}"]
target_label = "{{ $metricLabel }}"
}
{{- end }}
{{- if or .Values.pods.staticLabels .Values.pods.staticLabelsFrom }}
rule {
target_label = "temp_source"
replacement = "service"
}
{{- end }}
{{- if .Values.extraDiscoveryRules }}
{{ .Values.extraDiscoveryRules | indent 4 }}
{{- end }}
}
{{- end -}}