106 lines
3.3 KiB
Django/Jinja
106 lines
3.3 KiB
Django/Jinja
controller:
|
||
type: daemonset
|
||
tolerations:
|
||
- key: node-role.kubernetes.io/control-plane
|
||
operator: Exists
|
||
effect: NoSchedule
|
||
|
||
alloy:
|
||
configMap:
|
||
create: true
|
||
content: |
|
||
// ── Обнаружение подов Kubernetes ─────────────────────────────
|
||
discovery.kubernetes "pods" {
|
||
role = "pod"
|
||
}
|
||
|
||
// ── Relabeling: namespace, pod, container, app ────────────────
|
||
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_label_app"]
|
||
target_label = "app"
|
||
}
|
||
rule {
|
||
source_labels = ["__meta_kubernetes_pod_annotation_filter_debug"]
|
||
regex = "true"
|
||
action = "drop"
|
||
}
|
||
}
|
||
|
||
// ── Чтение файлов логов подов ─────────────────────────────────
|
||
loki.source.kubernetes "pods" {
|
||
targets = discovery.relabel.pod_logs.output
|
||
forward_to = [loki.process.parse.receiver]
|
||
}
|
||
|
||
// ── Парсинг JSON-логов, отброс debug ─────────────────────────
|
||
loki.process "parse" {
|
||
stage.json {
|
||
expressions = {level = "level", msg = "message"}
|
||
}
|
||
stage.labels {
|
||
values = {level = ""}
|
||
}
|
||
stage.drop {
|
||
expression = ".*level=\"debug\".*"
|
||
drop_counter_reason = "debug_dropped"
|
||
}
|
||
forward_to = [loki.write.local.receiver]
|
||
}
|
||
|
||
// ── Сбор journald (kubelet, containerd, sshd) ─────────────────
|
||
discovery.relabel "journal" {
|
||
targets = []
|
||
rule {
|
||
source_labels = ["__journal__systemd_unit"]
|
||
target_label = "unit"
|
||
}
|
||
rule {
|
||
source_labels = ["__journal__hostname"]
|
||
target_label = "node"
|
||
}
|
||
}
|
||
|
||
loki.source.journal "systemd" {
|
||
path = "/var/log/journal"
|
||
max_age = "12h"
|
||
labels = {job = "systemd-journal"}
|
||
forward_to = [loki.write.local.receiver]
|
||
relabel_rules = discovery.relabel.journal.rules
|
||
}
|
||
|
||
// ── Отправка в Loki ───────────────────────────────────────────
|
||
loki.write "local" {
|
||
endpoint {
|
||
url = "http://loki.{{ logging_namespace }}.svc.cluster.local:3100/loki/api/v1/push"
|
||
}
|
||
}
|
||
|
||
mounts:
|
||
varlog: true
|
||
dockercontainers: false
|
||
|
||
extraVolumes:
|
||
- name: journal
|
||
hostPath:
|
||
path: /var/log/journal
|
||
|
||
extraVolumeMounts:
|
||
- name: journal
|
||
mountPath: /var/log/journal
|
||
readOnly: true
|