diff --git a/alloy/README.md b/alloy/README.md new file mode 100644 index 0000000..8c92e39 --- /dev/null +++ b/alloy/README.md @@ -0,0 +1,3 @@ +helm repo add grafana https://grafana.github.io/helm-charts +helm repo update +helm install alloy grafana/alloy --namespace alloy -f values.yaml diff --git a/alloy/values.yaml b/alloy/values.yaml new file mode 100644 index 0000000..c7f020b --- /dev/null +++ b/alloy/values.yaml @@ -0,0 +1,107 @@ +alloy: + clustering: + enabled: false # Single node deployment + + configMap: + create: true + content: |- + discovery.kubernetes "all_pods" { + role = "pod" + + selectors { + role = "pod" + field = "spec.nodeName=" + coalesce(env("HOSTNAME"), constants.hostname) + } + } + + discovery.relabel "all_pods" { + targets = discovery.kubernetes.all_pods.targets + + rule { + source_labels = ["__meta_kubernetes_namespace"] + target_label = "namespace" + } + rule { + source_labels = ["__meta_kubernetes_pod_name"] + target_label = "pod" + } + rule { + source_labels = ["__meta_kubernetes_pod_container_name"] + target_label = "container" + } + rule { + source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"] + target_label = "app" + } + } + + loki.source.kubernetes "all_logs" { + targets = discovery.relabel.all_pods.output + forward_to = [loki.write.main.receiver] + } + + discovery.kubernetes "shared_pods" { + role = "pod" + selectors { + role = "pod" + field = "metadata.namespace=chacal" + } + } + + discovery.relabel "shared_pods" { + targets = discovery.kubernetes.shared_pods.targets + + rule { + source_labels = ["__meta_kubernetes_namespace"] + target_label = "namespace" + } + rule { + source_labels = ["__meta_kubernetes_pod_name"] + target_label = "pod" + } + rule { + source_labels = ["__meta_kubernetes_pod_container_name"] + target_label = "container" + } + rule { + source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"] + target_label = "app" + } + } + + loki.source.kubernetes "shared_logs" { + targets = discovery.relabel.shared_pods.output + forward_to = [loki.write.shared.receiver] + } + + loki.write "main" { + endpoint { + url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push" + headers = { + "X-Scope-OrgID" = "main", + } + } + } + + loki.write "shared" { + endpoint { + url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push" + headers = { + "X-Scope-OrgID" = "chacal", + } + } + } + + mounts: + varlog: true # Mount host /var/log for pod logs + + controller: + type: daemonset # Run on every node + + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 200m + memory: 256Mi \ No newline at end of file