@@ -60,6 +60,7 @@ prometheus:
6060
6161
6262# Values for Fluent-bit dependency
63+ # TODO: remove fluent-bit dependency
6364fluent-bit :
6465 enabled : true
6566 image :
@@ -167,6 +168,109 @@ loki:
167168 gateway :
168169 enabled : false
169170
171+ # Values for Alloy dependency
172+ alloy :
173+ enabled : false
174+ fullnameOverride : alloy
175+ alloy :
176+ configMap :
177+ content : |-
178+ // Write your Alloy config here:
179+ logging {
180+ level = "info"
181+ format = "logfmt"
182+ }
183+ loki.write "alloy" {
184+ endpoint {
185+ url = "http://loki.monitoring.svc:3100/loki/api/v1/push"
186+ }
187+ }
188+ // discovery.kubernetes allows you to find scrape targets from Kubernetes resources.
189+ // It watches cluster state and ensures targets are continually synced with what is currently running in your cluster.
190+ discovery.kubernetes "pod" {
191+ role = "pod"
192+ }
193+
194+ // discovery.relabel rewrites the label set of the input targets by applying one or more relabeling rules.
195+ // If no rules are defined, then the input targets are exported as-is.
196+ discovery.relabel "pod_logs" {
197+ targets = discovery.kubernetes.pod.targets
198+
199+ // Label creation - "namespace" field from "__meta_kubernetes_namespace"
200+ rule {
201+ source_labels = ["__meta_kubernetes_namespace"]
202+ action = "replace"
203+ target_label = "namespace"
204+ }
205+
206+ // Label creation - "pod" field from "__meta_kubernetes_pod_name"
207+ rule {
208+ source_labels = ["__meta_kubernetes_pod_name"]
209+ action = "replace"
210+ target_label = "pod"
211+ }
212+
213+ // Label creation - "container" field from "__meta_kubernetes_pod_container_name"
214+ rule {
215+ source_labels = ["__meta_kubernetes_pod_container_name"]
216+ action = "replace"
217+ target_label = "container"
218+ }
219+
220+ // Label creation - "app" field from "__meta_kubernetes_pod_label_app_kubernetes_io_name"
221+ rule {
222+ source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"]
223+ action = "replace"
224+ target_label = "app"
225+ }
226+
227+ // Label creation - "job" field from "__meta_kubernetes_namespace" and "__meta_kubernetes_pod_container_name"
228+ // Concatenate values __meta_kubernetes_namespace/__meta_kubernetes_pod_container_name
229+ rule {
230+ source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"]
231+ action = "replace"
232+ target_label = "job"
233+ separator = "/"
234+ replacement = "$1"
235+ }
236+
237+ // Label creation - "container" field from "__meta_kubernetes_pod_uid" and "__meta_kubernetes_pod_container_name"
238+ // Concatenate values __meta_kubernetes_pod_uid/__meta_kubernetes_pod_container_name.log
239+ rule {
240+ source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
241+ action = "replace"
242+ target_label = "__path__"
243+ separator = "/"
244+ replacement = "/var/log/pods/*$1/*.log"
245+ }
246+
247+ // Label creation - "container_runtime" field from "__meta_kubernetes_pod_container_id"
248+ rule {
249+ source_labels = ["__meta_kubernetes_pod_container_id"]
250+ action = "replace"
251+ target_label = "container_runtime"
252+ regex = "^(\\S+):\\/\\/.+$"
253+ replacement = "$1"
254+ }
255+ }
256+
257+ // loki.source.kubernetes tails logs from Kubernetes containers using the Kubernetes API.
258+ loki.source.kubernetes "pod_logs" {
259+ targets = discovery.relabel.pod_logs.output
260+ forward_to = [loki.process.pod_logs.receiver]
261+ }
262+ // loki.process receives log entries from other Loki components, applies one or more processing stages,
263+ // and forwards the results to the list of receivers in the component’s arguments.
264+ loki.process "pod_logs" {
265+ stage.static_labels {
266+ values = {
267+ cluster = "envoy-gateway",
268+ }
269+ }
270+
271+ forward_to = [loki.write.alloy.receiver]
272+ }
273+
170274
171275# Values for Tempo dependency
172276tempo :
0 commit comments