Files
home-network-k3s-impl/platform/monitoring/alloy.yaml
T

96 lines
2.8 KiB
YAML

---
# Grafana Alloy — log-shipping agent (docs/10). Serves R-OBS-01. Runs as a DaemonSet, discovers
# pods on each node, and forwards container logs to Loki. DEV-SCOPED: modest per-node resources,
# in-cluster clustering disabled (not needed for log tailing on a 3-node box).
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: alloy
namespace: monitoring
spec:
interval: 30m
chart:
spec:
chart: alloy
version: ">=1.0.0 <2.0.0" # k8s-1.36 catch-up (1.x line). Renovate maintains
sourceRef:
kind: HelmRepository
name: grafana
namespace: monitoring
install:
remediation:
retries: 3
upgrade:
remediation:
retries: 3
values:
controller:
type: daemonset # one collector per node — tails all pod logs locally
alloy:
clustering:
enabled: false # log tailing needs no cluster ring on a 3-node dev box
resources:
requests:
cpu: 50m
memory: 96Mi
limits:
memory: 256Mi
# Alloy pipeline: discover pods -> relabel identity -> ship to the Loki single binary.
configMap:
content: |-
logging {
level = "info"
format = "logfmt"
}
discovery.kubernetes "pods" {
role = "pod"
}
// Carry useful identity labels; keep cardinality bounded (no per-request labels).
discovery.relabel "pod_logs" {
targets = discovery.kubernetes.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_node_name"]
target_label = "node"
}
rule {
source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"]
target_label = "app"
}
}
loki.source.kubernetes "pods" {
targets = discovery.relabel.pod_logs.output
forward_to = [loki.process.default.receiver]
}
loki.process "default" {
forward_to = [loki.write.default.receiver]
stage.static_labels {
values = {
job = "kubernetes-pods",
}
}
}
loki.write "default" {
endpoint {
// Loki single-binary service (gateway disabled).
url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push"
}
}