Skip to content

Grafana Alloy

sobre

Aqui instalamos o alloy com foco em enviar logs para o Loki.

Instalando

antes de rodar crie o alloy.yaml, configuração no final da wiki.

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm upgrade --install grafana-alloy grafana/alloy -n monitoring -f alloy.yaml

ajustes

Ajuste apenas o endereço do loki-gateway no manifesto.

url = "http://loki-gateway.monitoring.svc.cluster.local/loki/api/v1/push"

alloy.yaml

alloy:
  configMap:
    content: |-
      logging {
        level = "debug"
        format = "logfmt"
      }
      discovery.kubernetes "pods" {
        role = "pod"
      }
      discovery.relabel "pods" {
        targets = discovery.kubernetes.pods.targets

        rule {
          source_labels = ["__meta_kubernetes_namespace"]
          target_label = "namespace"
          action = "replace"
        }

        rule {
          source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"]
          target_label = "app"
          action = "replace"
        }

        rule {
          source_labels = ["__meta_kubernetes_pod_container_name"]
          target_label = "container"
          action = "replace"
        }

        rule {
          source_labels = ["__meta_kubernetes_pod_name"]
          target_label = "pod"
          action = "replace"
        }
      }
      loki.source.kubernetes "pods" {
        targets    = discovery.relabel.pods.output
        forward_to = [loki.process.process.receiver]
      }
      loki.process "process" {
        forward_to = [loki.write.loki.receiver]

        stage.drop {
          older_than          = "1h"
          drop_counter_reason = "too old"
        }
        stage.match {
          selector = "{instance=~\".*\"}"
          stage.json {
            expressions = {
              level = "\"level\"",
            }
          }
          stage.labels {
            values = {
              level = "level",
            }
          }
        }
        stage.label_drop {
          values = [ "service_name" ]
        }
      }
      loki.write "loki" {
        endpoint {
          url = "http://loki-gateway.monitoring.svc.cluster.local/loki/api/v1/push"
        }
      }
  mounts:
    varlog: true
    dockercontainers: true

  resources:
    limits:
      cpu: 256m
      memory: 1000Mi
    requests:
      cpu: 512m
      memory: 1000Mi