blob: 8040f1faac31b343a0793cf67e286863e1b1e656 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
alloy:
configMap:
content: |-
// Set Alloy logging to INFO
logging {
level = "info"
format = "logfmt"
}
// Discover all Kubernetes pods that are on the current node
// We only want one instance of Alloy to pick up a pod
discovery.kubernetes "pods" {
namespaces {
own_namespace = false
}
role = "pod"
selectors {
role = "pod"
field = "spec.nodeName=" + coalesce(env("HOSTNAME"), constants.hostname)
}
}
// Relabel all __meta labels to labels we want to keep
discovery.relabel "pods" {
targets = discovery.kubernetes.pods.targets
rule {
// namespace label
source_labels = ["__meta_kubernetes_namespace"]
target_label = "namespace"
action = "replace"
}
rule {
// app label
source_labels = ["__meta_kubernetes_pod_label_app"]
target_label = "app"
action = "replace"
}
rule {
// concatenated deployment & container name
source_labels = ["__meta_kubernetes_pod_label_app", "__meta_kubernetes_pod_container_name"]
separator = "/"
target_label = "app_container"
action = "replace"
}
rule {
// boolean for if the container is an init_container
source_labels = ["__meta_kubernetes_pod_container_init"]
target_label = "is_init"
action = "replace"
}
rule {
// service_name is the namespace/pod-name
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_name"]
separator = "/"
target_label = "service_name"
action = "replace"
}
}
// Write all values into the Loki receiver
loki.source.kubernetes "pods" {
targets = discovery.relabel.pods.output
forward_to = [loki.write.local.receiver]
}
loki.write "local" {
// Ship logs off to the load balanced loki-gateway
endpoint {
url = "http://loki-gateway.loki.svc.cluster.local/loki/api/v1/push"
headers = {
"X-Scope-OrgID" = "1",
}
}
}
|