57 lines
1.9 KiB
YAML
57 lines
1.9 KiB
YAML
apiVersion: monitoring.grafana.com/v1alpha1
|
|
kind: PodLogs
|
|
metadata:
|
|
name: all-logs-fixed
|
|
labels:
|
|
app.kubernetes.io/name: loki
|
|
app.kubernetes.io/instance: loki
|
|
spec:
|
|
namespaceSelector:
|
|
any: true
|
|
selector:
|
|
matchLabels: {}
|
|
relabelings:
|
|
- action: replace
|
|
sourceLabels:
|
|
- __meta_kubernetes_pod_node_name
|
|
targetLabel: __host__
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_pod_label_(.+)
|
|
- action: replace
|
|
replacement: $1
|
|
separator: '-'
|
|
sourceLabels:
|
|
- __meta_kubernetes_pod_label_app_kubernetes_io_name
|
|
- __meta_kubernetes_pod_label_app_kubernetes_io_component
|
|
targetLabel: __service__
|
|
- action: replace
|
|
replacement: $1
|
|
separator: /
|
|
sourceLabels:
|
|
- __meta_kubernetes_namespace
|
|
- __service__
|
|
targetLabel: job
|
|
- action: replace
|
|
sourceLabels:
|
|
- __meta_kubernetes_pod_container_name
|
|
targetLabel: container
|
|
- action: replace
|
|
sourceLabels:
|
|
- __meta_kubernetes_namespace
|
|
targetLabel: namespace
|
|
- action: replace
|
|
replacement: {{ .Values.clusterName | default "loki" }}
|
|
targetLabel: cluster
|
|
pipelineStages:
|
|
- cri: {}
|
|
- regex:
|
|
# Capture into a temporary variable 'raw_level' to avoid overwriting existing logic
|
|
# Matches: [TIMESTAMP] [LEVEL] Message
|
|
expression: '^\[.+\]\s+\[(?P<raw_level>DEBUG|INFO|WARN|ERROR|LOG|TRACE)\]\s+(?P<message>.*)$'
|
|
- template:
|
|
source: level
|
|
# If raw_level exists (regex matched), map it. Otherwise, default to 'info'.
|
|
template: '{{ "{{" }} if eq .Extraction.raw_level "LOG" {{ "}}" }}info{{ "{{" }} else if eq .Extraction.raw_level "WARN" {{ "}}" }}warn{{ "{{" }} else if eq .Extraction.raw_level "ERROR" {{ "}}" }}error{{ "{{" }} else if eq .Extraction.raw_level "DEBUG" {{ "}}" }}debug{{ "{{" }} else if .Extraction.raw_level {{ "}}" }}{{ "{{" }} .Extraction.raw_level | lower {{ "}}" }}{{ "{{" }} else {{ "}}" }}info{{ "{{" }} end {{ "}}" }}'
|
|
- labels:
|
|
level: level
|