add traefik access log level parsing in alloy (status code -> level)
This commit is contained in:
@@ -83,6 +83,30 @@ spec:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse Traefik access logs to derive log level from HTTP status code
|
||||||
|
loki.process "traefik-level" {
|
||||||
|
forward_to = [loki.process.filter.receiver]
|
||||||
|
|
||||||
|
stage.match {
|
||||||
|
selector = "{service=\"traefik\"}"
|
||||||
|
|
||||||
|
stage.regex {
|
||||||
|
expression = `\"\w+ .+ HTTP/[\d.]+\" (?P<status_code>[0-9]{3}) `
|
||||||
|
}
|
||||||
|
|
||||||
|
stage.template {
|
||||||
|
source = "level"
|
||||||
|
template = `{{ if eq (printf "%.1s" .status_code) "5" }}error{{ else if eq (printf "%.1s" .status_code) "4" }}warn{{ else }}info{{ end }}`
|
||||||
|
}
|
||||||
|
|
||||||
|
stage.labels {
|
||||||
|
values = {
|
||||||
|
level = "",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Filter out noisy fsnotify/inotify errors from Loki and ArgoCD
|
// Filter out noisy fsnotify/inotify errors from Loki and ArgoCD
|
||||||
loki.process "filter" {
|
loki.process "filter" {
|
||||||
forward_to = [loki.write.loki.receiver]
|
forward_to = [loki.write.loki.receiver]
|
||||||
@@ -96,7 +120,7 @@ spec:
|
|||||||
// Collect logs from Kubernetes pods using the Kubernetes API
|
// Collect logs from Kubernetes pods using the Kubernetes API
|
||||||
loki.source.kubernetes "pods" {
|
loki.source.kubernetes "pods" {
|
||||||
targets = discovery.relabel.pods.output
|
targets = discovery.relabel.pods.output
|
||||||
forward_to = [loki.process.filter.receiver]
|
forward_to = [loki.process.traefik-level.receiver]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write logs to Loki
|
// Write logs to Loki
|
||||||
|
|||||||
Reference in New Issue
Block a user