Сбор и обработка логов (ClusterVectorPipeline)
Пайплайны Vector для сбора и агрегации логов кластера.
ClusterVectorPipeline — кастомный ресурс Kubernetes (API observability.kaasops.io), в котором задаётся пайплайн сбора и обработки логов. В кластере создаются преднастроенные ClusterVectorPipeline вместе с установкой модуля локального сбора логов.
На этой странице — таблица преднастроенных пайплайнов, пример spec и рекомендации для пользовательских конфигураций.
Преднастроенные ClusterVectorPipeline
В кластере по умолчанию развёрнут набор преднастроенных пайплайнов ClusterVectorPipeline, которые собирают основные типы логов. Пайплайны обеспечивают базовое покрытие:
| ClusterVectorPipeline | Описание |
|---|---|
k8s-logs |
Собирает логи контейнеров. При наличии лейбла у неймспейса shturval_tech/system-namespace логи агрегируются в kube system namespaces, без указанного лейбла - в cluster namespace. |
k8s-audit |
Собирает логи Kubernetes auditing. |
k8s-events |
Собирает события из кластера Kubernetes. |
auditd |
Собирает системные логи из журнала с _TRANSPORT = audit. |
journald |
Собирает логи containerd, kubelet, shturvald. |
Эти пайплайны покрывают типовые сценарии: аудит Kubernetes, системные события, события приложений и инфраструктурных сервисов.
Обратите внимание! не изменяйте вручную преднастроенные системные ClusterVectorPipeline — это может нарушить сбор, агрегацию и доставку логов.
Архитектура ClusterVectorPipeline
Спецификация (spec) ресурса ClusterVectorPipeline содержит три базовых блока:
sources- определяет источники данных;transforms- описывает последовательность преобразований и фильтров;sinks- задаёт конечные точки для отправки данных (VictoriaLogs, внешние хранилища, SIEM, syslog и т.д.).
Пример пайплайна для логов Kubernetes
Фрагмент ниже иллюстрирует структуру spec. Имена узлов в вашем кластере смотрите в манифестах ClusterVectorPipeline.
apiVersion: observability.kaasops.io/v1alpha1
kind: ClusterVectorPipeline
metadata:
name: k8s-logs
namespace: monitoring
spec:
# Источник данных - логи Kubernetes
sources:
kubernetes_logs:
type: kubernetes_logs
# Цепочка трансформаций
transforms:
# Разбор поля .message
message_parser:
inputs:
- kubernetes_logs
source: |
.message =
parse_json(.message) ??
parse_klog(.message) ??
.message
type: remap
# Фильтрация системных пространств имён
filter_system_namespaces:
type: filter
inputs: [message_parser]
condition: |
exists(.kubernetes.namespace_labels."shturval_tech/system-namespace")
# Фильтрация пользовательских пространств имён
filter_user_namespaces:
type: filter
inputs: [message_parser]
condition: |
!exists(.kubernetes.namespace_labels."shturval_tech/system-namespace")
Ключевые преобразования
В примере выше используются типовые для платформы преобразования:
-
message_parser:- выполните его разбор если поле
.messageимеет структуруjsonилиklog; - в противном случае оставьте его как есть.
- выполните его разбор если поле
-
filter_system_namespacesиfilter_user_namespaces:- разделяют логи по типу неймспейса;
- ориентируются на лейбл
shturval_tech/system-namespace, которым помечаются системные неймспейсы.
Рекомендации по проектированию пайплайнов
При создании собственных ClusterVectorPipeline рекомендуется:
- Использовать понятные имена для пайплайнов, отражающие источник или назначение логов.
- Следовать единому стилю именования компонентов (sources, transforms, sinks), чтобы упростить сопровождение.
- Выстраивать логичную цепочку преобразований:
- нормализация временных меток и полей;
- фильтрация ненужных данных;
- подготовка структуры под целевое хранилище.
- Использовать входы (
inputs) для явного описания последовательности (какой transform читает данные от какого компонента). - Фильтровать ненужные данные как можно раньше, чтобы снизить нагрузку на последующие шаги и хранилище.
- Минимизировать количество трансформаций, оставляя только необходимые для ваших сценариев.
- Избегать дублирования обработки данных в нескольких пайплайнах, если можно выразить логику в одном месте.
Созданные вами объекты ClusterVectorPipeline можно просматривать и редактировать через раздел Администрирование → Кастомные ресурсы, выбрав API-группу observability.kaasops.io.
Режим управления модулем (Авто / Ручной)
Для штатной установки модуля и добавления получателей логов через ShturvalServicePatch используйте режим Авто. В этом режиме применяется поставляемая с чартом конфигурация, а пользовательские изменения в customvalues накладываются через SSP.
Режим Ручной нужен, если вы создаёте ClusterVectorPipeline вручную и хотите, чтобы эти изменения не перезаписывались базовой конфигурацией. Подробнее — в описании сервиса shturval-log-collector.