Files
gitops/argocd-apps/add-ons/alloy.yaml
T
whyredfire 66d63f7217 chore(deps): Update charts and images to latest versions
Charts:
- kube-prometheus-stack 91.8.2 -> 92.3.0
- traefik 41.6.0 -> 41.7.1
- loki 18.13.7 -> 18.15.1
- alloy 1.13.0 -> 1.13.1
- sealed-secrets 2.19.1 -> 2.20.0
- cert-manager v1.21.1 -> v1.21.2
- cloudnative-pg 0.29.0 -> 0.29.1
- garage-ui 0.12.1 -> 0.13.0

Images:
- argo-cd v3.5.2 -> v3.5.5
- jellyfin 12.0 -> 12.2
- qbittorrent 5.2.3_v2.0.15-ls478 -> 5.2.4_v2.0.15-ls480
- busybox (garage init) 1.37.0 -> 1.38.0
2026-10-12 21:50:34 +05:30

135 lines
4.4 KiB
YAML

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
argocd.argoproj.io/client-side-apply-migration-manager: argocd-controller
argocd.argoproj.io/sync-wave: "4"
name: alloy
namespace: argocd
spec:
destination:
namespace: monitoring
server: https://kubernetes.default.svc
project: default
source:
chart: alloy
helm:
values: |
alloy:
configMap:
content: |
discovery.kubernetes "pods" {
role = "pod"
selectors {
role = "pod"
field = "spec.nodeName=" + sys.env("HOSTNAME")
}
}
discovery.relabel "pods" {
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_controller_name"]
target_label = "workload"
}
// A deployment owns its pods through a ReplicaSet named <deployment>-<hash>.
rule {
source_labels = ["__meta_kubernetes_pod_controller_kind", "__meta_kubernetes_pod_controller_name"]
regex = "ReplicaSet;(.+)-[a-z0-9]+"
target_label = "workload"
}
// A cronjob's runs are Jobs named <cronjob>-<timestamp>.
rule {
source_labels = ["__meta_kubernetes_pod_controller_kind", "__meta_kubernetes_pod_controller_name"]
regex = "Job;(.+)-[0-9]+"
target_label = "workload"
}
rule {
source_labels = ["__meta_kubernetes_pod_container_name"]
target_label = "container"
}
rule {
source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name", "__meta_kubernetes_pod_label_app"]
regex = "^;*([^;]+)(;.*)?$"
target_label = "app"
}
rule {
source_labels = ["__meta_kubernetes_pod_node_name"]
target_label = "node"
}
rule {
source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
separator = "/"
replacement = "/var/log/pods/*$1/*.log"
target_label = "__path__"
}
}
local.file_match "pods" {
path_targets = discovery.relabel.pods.output
}
loki.source.file "pods" {
targets = local.file_match.pods.targets
forward_to = [loki.process.pods.receiver]
}
loki.process "pods" {
stage.cri {}
// Changes on every rotation and would start a new stream.
stage.label_drop {
values = ["filename"]
}
forward_to = [loki.write.default.receiver]
}
loki.write "default" {
endpoint {
url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push"
}
}
mounts:
varlog: true
extra:
- name: storage
mountPath: /var/lib/alloy
# Tail positions survive pod restarts, so logs are not shipped twice.
storagePath: /var/lib/alloy
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 50m
memory: 128Mi
configReloader:
resources:
limits:
cpu: 50m
memory: 100Mi
controller:
volumes:
extra:
- name: storage
hostPath:
path: /var/lib/alloy
type: DirectoryOrCreate
repoURL: https://grafana.github.io/helm-charts
targetRevision: 1.13.1
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true