TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #188 157
Собираем аудит логи k8s

Собирать аудит логи k8s api будем с помощью vector прямо из подов. ConfigMap под это дело:
apiVersion: v1
kind: ConfigMap
metadata:
name: vector-config-audit-logs
namespace: logging
data:
audit-logs.yaml: |
sources:
kube_apiserver_audit:
type: file
include:
- /var/log/kubernetes/audit/kube-apiserver-audit.log
read_from: end
max_line_bytes: 2097152

transforms:
general_fields:
type: remap
inputs: [kube_apiserver_audit]
source: |-
.cluster_name = "${CLUSTER_NAME}"

sinks:
kube_apiserver_audit_sink:
type: kafka
inputs: [general_fields]
bootstrap_servers: "<bootstrap"
topic: "<topic_name>"
encoding:
codec: json
librdkafka_options:
security.protocol: "SASL_SSL"
enable.ssl.certificate.verification: "false"
sasl:
enabled: true
username: ${VECTOR_KAFKA_LOGIN}
password: ${VECTOR_KAFKA_PASSWORD}
mechanism: "PLAIN"


В моем примере синк (отправка) идет в кафку.
В самом helm release вектора нужно подключить cm и добавить толерантности, чтобы запуститься на мастерах.
values:
existingConfigMaps:
- vector-config-audit-logs
tolerations:
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"
- key: "node-role.kubernetes.io/control-plane"
operator: "Exists"
effect: "NoSchedule"
env:
- name: CLUSTER_NAME
value: <cluster_name>
- name: VECTOR_LOG
value: info
- name: RUST_BACKTRACE
value: "1"
- name: "VECTOR_THREADS"
value: "8"
- name: ALLOCATION_TRACING
value: "false"
- name: VECTOR_REQUIRE_HEALTHY
value: "true"
- name: VECTOR_KAFKA_LOGIN
valueFrom:
secretKeyRef:
name: vector
key: VECTOR_KAFKA_LOGIN
- name: VECTOR_KAFKA_PASSWORD
valueFrom:
secretKeyRef:
name: vector
key: VECTOR_KAFKA_PASSWORD


Этого достаточно. Тут мы также "обогащаем" данные, добавляя в каждый лог поле .cluster_name. /var/log вектор маунтит по дефолту.

#vector
  • 👍 2
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →