Как настроить сбор и перенаправление логов
Общая схема настройки логов
Логи собирает модуль локального сбора логов shturval-log-collector на базе Vector. Модуль устанавливается из чарта shturval-log-collector в неймспейс logging, а его параметры передаются в Helm через customvalues.
Для настройки отправки логов во внешнее хранилище, syslog или SIEM используйте ShturvalServicePatch. ShturvalServicePatch переопределяет customvalues сервиса shturval-log-collector и позволяет добавить новые sinks и transforms без ручной правки системных ClusterVectorPipeline.
Для отправки логов в SIEM используйте инструкцию: Экспорт логов безопасности во внешние системы.
Минимальный порядок настройки:
- Убедитесь, что в кластере установлен CRD-чарт
shturval-log-collector-crdsиshturval-log-collectorв неймспейсеloggingв режиме Авто. - Проверьте базовый сбор логов: на дашборде кластера должна быть доступна вкладка Логи.
- Если учётные данные не должны быть в
ShturvalServicePatchв открытом виде, заранее создайте Secret в неймспейсеloggingи ссылайтесь на него из SSP. Как создать Secret и какие ключи указать — в разделе Пример перенаправления. - Подготовьте манифест
ShturvalServicePatchс нужными параметрами. - Загрузите его через функциональность импорта манифестов в GUI.
- Дождитесь применения изменений и проверьте статус на странице сервиса.
После применения ShturvalServicePatch:
- на вкладке Сервис модуля локального сбора логов статус переходит в
Patched; - на вкладке Применённые ShturvalServicePatch отображается список примененных
ShturvalServicePatch.
Скриншоты загрузки манифеста и статус сервиса



Перенаправление логов во внешнее хранилище
Сценарий: нужно перенаправить один или несколько типов логов во внешнее хранилище (например, Elasticsearch/OpenSearch), сохранив при этом локальное хранение в VictoriaLogs.
Общий шаблон ShturvalServicePatch
Учётные данные внешнего хранилища рекомендуется хранить в Secret и подставлять в sink через ${username} и ${password}. Если Secret не используете, не задавайте в SSP блоки vector и aggregator и укажите логин и пароль напрямую в auth.
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: <имя ресурса>
spec:
shturvalServiceConfigName: shturval-log-collector
customvalues:
vector:
agent:
envFrom: # Все ключи Secret — переменные окружения агента
- secretRef:
name: <secret-creds>
volumes: # Тома агента; список полностью заменяет values чарта
- name: var-log
hostPath:
path: /var/log/
type: ""
- name: journal
hostPath:
path: /var/log/journal/
type: ""
- name: var-lib
hostPath:
path: /var/lib/
type: ""
- name: <volume-ca>
secret:
secretName: <secret-ca>
items:
- key: ca.crt
path: ca.crt
volumeMounts: # Монтирование томов в контейнер агента
- name: var-log
mountPath: /var/log/
- name: journal
mountPath: /run/log/journal/
- name: var-lib
mountPath: /var/lib/
- name: <volume-ca>
mountPath: /etc/ssl/external-es
readOnly: true
aggregator:
env: # Переменные окружения агрегатора; список полностью заменяет values чарта
- name: PLATFORM_USERNAME
valueFrom:
secretKeyRef:
name: platform-creds
key: username
- name: PLATFORM_PASSWORD
valueFrom:
secretKeyRef:
name: platform-creds
key: password
- name: username
valueFrom:
secretKeyRef:
name: <secret-creds>
key: username
- name: password
valueFrom:
secretKeyRef:
name: <secret-creds>
key: password
volumes: # Тома агрегатора; список полностью заменяет values чарта
- name: data
emptyDir: {}
- name: <volume-ca>
secret:
secretName: <secret-ca>
items:
- key: ca.crt
path: ca.crt
volumeMounts: # Монтирование томов в контейнер агрегатора
- name: <volume-ca>
mountPath: /etc/ssl/external-es
readOnly: true
shturval:
<тип_логов>: # auditd, journald, k8s_audit, k8s_events, k8s_logs
enable: true # Включает отправку логов
transforms: {} # Преобразование логов (опционально)
sinks: # Конечные точки для отправки данных
elastic_logs: # Имя получателя данных
type: <тип_sink> # например: elasticsearch
auth: # Настройки аутентификации
user: "${username}"
password: "${password}"
strategy: <strategy>
endpoints: # URL-адрес(а) подключения
- <endpoint>
tls: # Настройки TLS-соединения
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: <version>
buffer: # Буфер для хранения логов перед отправкой
max_size: <size>
type: <buffer_type>
- Списки
volumes,volumeMountsиaggregator.envвShturvalServicePatchполностью заменяют соответствующие значения чарта. Если задаёте эти блоки, в agent оставьте hostPath-монтированияvar-log,journal,var-lib. В aggregator оставьтеemptyDirdataи переменныеPLATFORM_USERNAME/PLATFORM_PASSWORDизplatform-creds. Затем добавьте env и volumes для внешнего Elasticsearch. - Оставляйте проверку TLS включённой (
verify_certificate: true) и указывайтеca_file.
Расшифровка ключевых полей:
| Параметр | Описание | Тип данных | Пример |
|---|---|---|---|
metadata.name | Имя ShturvalServicePatch | string | shturval-log-collector-logs |
vector.agent.envFrom | Источники переменных окружения контейнера агента: все пары ключ–значение из Secret становятся переменными окружения | array | secretRef.name: external-es-creds |
vector.agent.volumes | Тома пода агента. Список полностью заменяет values чарта: оставьте hostPath var-log, journal, var-lib и добавьте Secret с CA | array | var-log, journal, var-lib, external-es-ca |
vector.agent.volumeMounts | Монтирование томов в файловую систему контейнера агента | array | mountPath: /etc/ssl/external-es |
aggregator.env | Переменные окружения контейнера агрегатора. Список полностью заменяет values чарта: оставьте PLATFORM_USERNAME / PLATFORM_PASSWORD и добавьте креды внешнего Elasticsearch | array | PLATFORM_USERNAME, username |
aggregator.volumes | Тома пода агрегатора. Список полностью заменяет values чарта: оставьте emptyDir data и добавьте Secret с CA | array | data, external-es-ca |
aggregator.volumeMounts | Монтирование томов в файловую систему контейнера агрегатора | array | mountPath: /etc/ssl/external-es |
elastic_logs.type | Тип sink Vector; для Elasticsearch/OpenSearch — elasticsearch. В примерах ключ получателя назван elastic_logs, в sinks допустимы другие имена | string | elasticsearch |
elastic_logs.auth.user | Имя пользователя для HTTP Basic Authentication | string | ${username} |
elastic_logs.auth.password | Пароль для HTTP Basic Authentication | string | ${password} |
elastic_logs.auth.strategy | Стратегия аутентификации Vector: basic — HTTP Basic Authentication | string | basic |
elastic_logs.endpoints | Список URL для отправки логов. Каждый URL должен содержать HTTP-схему, хост или IP и порт | array | https://external-elastic.address:9200/insert/elasticsearch/ |
elastic_logs.tls.ca_file | Абсолютный путь к CA-сертификату в формате DER или PEM (X.509) | string | /etc/ssl/external-es/ca.crt |
elastic_logs.tls.verify_certificate | Проверка сертификата при TLS-подключении | boolean | true |
elastic_logs.api_version | Версия API внешнего хранилища : v6, v7 (в том числе OpenSearch), v8 или auto | string | v8 |
elastic_logs.buffer.max_size | Максимальный объём буфера для хранения логов перед отправкой. Для type: disk — не меньше ~256 МБ (268435488 байт) | int | 268435488 |
elastic_logs.buffer.type | Тип буфера: disk — на диске, устойчивее к перезапуску; memory — в памяти, данные теряются при сбое | string | disk |
Пример перенаправления
- Создайте в кластере Secret с типом
Opaqueи именемexternal-es-caв неймспейсеlogging. Добавьте ключca.crtи укажите в значении данные CA-сертификата внешнего Elasticsearch.
Пример создания командой:
kubectl create secret generic external-es-ca -n logging \
--from-file=ca.crt=/path/to/external-es-ca.crt
Пример манифеста
apiVersion: v1
kind: Secret
metadata:
name: external-es-ca
namespace: logging
type: Opaque
stringData:
ca.crt: |
-----BEGIN CERTIFICATE-----
<CA-сертификат внешнего Elasticsearch>
-----END CERTIFICATE-----
- Создайте в кластере Secret с типом
Opaqueи именемexternal-es-credsв неймспейсеlogging. Добавьте ключиusernameиpassword: в значенииusernameукажите имя учётной записи внешнего Elasticsearch, в значенииpassword— пароль этой учётной записи.
Пример создания командой:
kubectl create secret generic external-es-creds -n logging \
--from-literal=username='<username>' \
--from-literal=password='<password>'
Пример манифеста
apiVersion: v1
kind: Secret
metadata:
name: external-es-creds
namespace: logging
type: Opaque
stringData:
username: <username>
password: <password>
- Примените
ShturvalServicePatchниже. Он монтирует CA на agent и aggregator, подставляет учётные данные через переменные окружения и настраивает elasticsearch-sinks подshturval.
Объединённый ShturvalServicePatch для всех типов логов. В поставляемых values inputs такие: auditd использует auditd; journald, k8s_audit и k8s_events используют critical_level; k8s_logs использует post_transforms_system_namespaces и post_transforms_user_namespaces.
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: shturval-log-collector-external-es
spec:
shturvalServiceConfigName: shturval-log-collector
customvalues:
vector:
agent:
envFrom:
- secretRef:
name: external-es-creds
volumes:
- name: var-log
hostPath:
path: /var/log/
type: ""
- name: journal
hostPath:
path: /var/log/journal/
type: ""
- name: var-lib
hostPath:
path: /var/lib/
type: ""
- name: external-es-ca
secret:
secretName: external-es-ca
items:
- key: ca.crt
path: ca.crt
volumeMounts:
- name: var-log
mountPath: /var/log/
- name: journal
mountPath: /run/log/journal/
- name: var-lib
mountPath: /var/lib/
- name: external-es-ca
mountPath: /etc/ssl/external-es
readOnly: true
aggregator:
env:
- name: PLATFORM_USERNAME
valueFrom:
secretKeyRef:
name: platform-creds
key: username
- name: PLATFORM_PASSWORD
valueFrom:
secretKeyRef:
name: platform-creds
key: password
- name: username
valueFrom:
secretKeyRef:
name: external-es-creds
key: username
- name: password
valueFrom:
secretKeyRef:
name: external-es-creds
key: password
volumes:
- name: data
emptyDir: {}
- name: external-es-ca
secret:
secretName: external-es-ca
items:
- key: ca.crt
path: ca.crt
volumeMounts:
- name: external-es-ca
mountPath: /etc/ssl/external-es
readOnly: true
shturval:
auditd:
sinks:
elastic_logs:
type: elasticsearch
inputs: [auditd]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_auditd-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
journald:
sinks:
elastic_logs:
type: elasticsearch
inputs: [critical_level]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_journald-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
k8s_audit:
sinks:
elastic_logs:
type: elasticsearch
inputs: [critical_level]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_kaudit-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
k8s_events:
sinks:
elastic_logs:
type: elasticsearch
inputs: [critical_level]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_events-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
k8s_logs:
transforms:
system_namespaces_message_encode:
type: remap
inputs: [post_transforms_system_namespaces]
source: |
.message =
encode_json(.message)
user_namespaces_message_encode:
type: remap
inputs: [post_transforms_user_namespaces]
source: |
.message =
encode_json(.message)
sinks:
elastic_logs:
type: elasticsearch
inputs: [system_namespaces_message_encode]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_logs-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
elastic_user_logs:
type: elasticsearch
inputs: [user_namespaces_message_encode]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_user-logs-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
Если какие-то типы логов не нужны, удалите соответствующие ключи под shturval в этом же манифесте.
auditd:
sinks:
elastic_logs:
type: elasticsearch
inputs: [auditd]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_auditd-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
journald:
sinks:
elastic_logs:
type: elasticsearch
inputs: [critical_level]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_journald-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
k8s_audit:
sinks:
elastic_logs:
type: elasticsearch
inputs: [critical_level]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_kaudit-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
k8s_events:
sinks:
elastic_logs:
type: elasticsearch
inputs: [critical_level]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_events-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
k8s_logs:
transforms:
system_namespaces_message_encode:
type: remap
inputs: [post_transforms_system_namespaces]
source: |
.message =
encode_json(.message)
user_namespaces_message_encode:
type: remap
inputs: [post_transforms_user_namespaces]
source: |
.message =
encode_json(.message)
sinks:
elastic_logs:
type: elasticsearch
inputs: [system_namespaces_message_encode]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_logs-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
elastic_user_logs:
type: elasticsearch
inputs: [user_namespaces_message_encode]
bulk:
index: "{{ .Values.CLUSTER_NAME }}_user-logs-%Y.%m.%d"
auth:
user: "${username}"
password: "${password}"
strategy: basic
endpoints:
- "https://external-elastic.address:9200/insert/elasticsearch/"
tls:
ca_file: /etc/ssl/external-es/ca.crt
verify_certificate: true
api_version: "v8"
buffer:
max_size: 268435488
type: disk
При отправке логов Kubernetes в Elasticsearch/OpenSearch поле message после transform post_transforms_system_namespaces или post_transforms_user_namespaces может содержать структурированный объект. Так бывает, если контейнер пишет JSON, например, логи аутентификации authn с полями username, result, security_event_type. VictoriaLogs индексирует такие поля, и логи аутентификации отображаются на вкладке Логи кластера. Sink Elasticsearch ожидает строку в message. Без encode_json события не попадут в индекс или не найдутся поиском. В блоке k8s_logs выше transforms system_namespaces_message_encode и user_namespaces_message_encode кодируют message. Укажите их в inputs sinks вместо post_transforms_*.
Чтобы не отправлять логи пользовательских неймспейсов, удалите sink elastic_user_logs из манифеста.
После применения SSP проверьте в целевом индексе Elasticsearch/OpenSearch появление новых документов. Для событий входа в GUI ищите записи контейнера authn в неймспейсе shturval-backend с security_event_type: authentication и текстом login / logout внутри message.
Скриншот: импорт ShturvalServicePatch
Иллюстрация: импорт ShturvalServicePatch в кластер

Перенаправление логов в syslog
Для перенаправления логов в syslog-сервер также используется ShturvalServicePatch. В примере ниже перенаправляются логи k8s_audit в syslog через sink типа socket:
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: shturval-log-collector-syslog
spec:
shturvalServiceConfigName: shturval-log-collector
customvalues:
shturval:
k8s_audit:
sinks:
syslog:
type: socket
inputs:
- critical_level
address: "11.12.13.14:5000"
mode: tcp
encoding:
codec: syslog
syslog:
rfc: rfc5424
Параметры syslog-sink:
| Параметр | Описание | Тип данных | Пример |
|---|---|---|---|
k8s_audit.sinks.syslog.inputs | Имя transform в пайплайне k8s-audit; в поставляемых values — critical_level | array | critical_level |
k8s_audit.sinks.syslog.address | Адрес syslog-сервера | string | 11.12.13.14:5000 |
k8s_audit.sinks.syslog.mode | Тип протокола передачи | string | tcp |
k8s_audit.sinks.syslog.encoding.codec | Кодек форматирования: syslog — RFC-формат, json — JSON over socket | string | syslog |
k8s_audit.sinks.syslog.encoding.syslog.rfc | Стандарт RFC: rfc5424 (современный, по умолчанию) или rfc3164 (legacy) | string | rfc5424 |
Скриншот: ShturvalServicePatch syslog
Параметры encoding.syslog соответствуют socket sink в документации Vector.
Отправка в Loki
Подготовьте ShturvalServicePatch для применения к спецификации ssc Модуля локального сбора логов (shturval-log-collector). В customvalues добавьте блок shturval с требуемыми параметрами.
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: shturval-log-collector-logs-to-loki
spec:
shturvalServiceConfigName: shturval-log-collector
customvalues:
shturval:
platform_logs_enable: true
k8s_logs:
enable: true
sinks:
loki_external:
type: loki
inputs:
- post_transforms_system_namespaces
endpoint: <ваше значение параметра>
path: /loki/api/v1/push
compression: snappy
tenant_id: "<ваше значение параметра>"
encoding:
codec: json
tls:
verify_certificate: false
labels:
__tenant_id__: "<ваше значение параметра>"
resourceRealm: "<ваше значение параметра>"
log_type: "kubernetes"
k8s_audit:
enable: true
sinks:
loki_external:
type: loki
inputs:
- critical_level
endpoint: <ваше значение параметра>
path: /loki/api/v1/push
compression: snappy
tenant_id: "<ваше значение параметра>"
encoding:
codec: json
tls:
verify_certificate: false
labels:
__tenant_id__: "<ваше значение параметра>"
resourceRealm: "<ваше значение параметра>"
log_type: "k8s_audit"
k8s_events:
enable: true
sinks:
loki_external:
type: loki
inputs:
- critical_level
endpoint: <ваше значение параметра>
path: /loki/api/v1/push
compression: snappy
tenant_id: "<ваше значение параметра>"
encoding:
codec: json
tls:
verify_certificate: false
labels:
__tenant_id__: "<ваше значение параметра>"
resourceRealm: "<ваше значение параметра>"
log_type: "k8s_events"
journald:
enable: true
sinks:
loki_external:
type: loki
inputs:
- critical_level
endpoint: <ваше значение параметра>
path: /loki/api/v1/push
compression: snappy
tenant_id: "<ваше значение параметра>"
encoding:
codec: json
tls:
verify_certificate: false
labels:
__tenant_id__: "<ваше значение параметра>"
resourceRealm: "<ваше значение параметра>"
log_type: "journald"
auditd:
enable: true
sinks:
loki_external:
type: loki
inputs:
- auditd
endpoint: <ваше значение параметра>
path: /loki/api/v1/push
compression: snappy
tenant_id: "<ваше значение параметра>"
encoding:
codec: json
tls:
verify_certificate: false
labels:
__tenant_id__: "<ваше значение параметра>"
resourceRealm: "<ваше значение параметра>"
log_type: "auditd"
| Параметр | Описание | Тип данных | Пример |
|---|---|---|---|
metadata.name | Имя ShturvalServicePatch | string | shturval-log-collector-logs-to-loki |
platform_logs_enable | Включает отправку логов платформы | boolean | true |
<тип логов>.enable | Включает отправку выбранного типа логов: auditd, journald, k8s_audit, k8s_events, k8s_logs | boolean | true |
loki_external.type | Тип получателя данных | string | loki |
loki_external.inputs | Список источников или преобразований логов для отправки в Loki | array | post_transforms_system_namespaces |
loki_external.endpoint | URL-адрес Loki | string | https://loki.example.com |
loki_external.path | Путь API для отправки логов в Loki | string | /loki/api/v1/push |
loki_external.compression | Алгоритм сжатия данных перед отправкой | string | snappy |
loki_external.tenant_id | Идентификатор тенанта в Loki | string | tenant-example |
loki_external.encoding.codec | Формат кодирования логов | string | json |
loki_external.tls.verify_certificate | Проверка TLS-сертификата при подключении | boolean | false |
loki_external.labels.__tenant_id__ | Лейбл тенанта для записей логов | string | tenant-example |
loki_external.labels.resourceRealm | Лейбл окружения или кластера, из которого отправляются логи | string | cluster-example |
loki_external.labels.log_type | Лейбл типа логов | string | kubernetes |
В примере выше в Loki будут направлены логи: auditd, journald, k8s_audit, k8s_events и k8s_logs. Чтобы изменить перечень направляемых логов, удалите ненужный блок с типом логов из shturval.
Загрузите подготовленный ShturvalServicePatch в кластере через импорт манифестов. После загрузки потребуется некоторое время для применения изменений.
Проверка конфигурации
После применения ShturvalServicePatch убедитесь, что конфигурация корректна и логи доставляются.
Шаг 1. Проверить имена transforms в пайплайне
Имя узла в поле inputs должно совпадать с именем существующего transform в пайплайне. Например, для k8s-audit:
- Перейдите в Администрирование → Кастомные ресурсы.
- Выберите API-группу
observability.kaasops.ioи ресурсClusterVectorPipeline. - Откройте манифест пайплайна (например,
k8s-audit) и в блокеspec.transformsнайдите нужное имя (обычноcritical_level).
Через CLI:
kubectl get clustervectorpipeline k8s-audit -o jsonpath='{.spec.transforms}' | jq 'keys'
Шаг 2. Проверить статус SSP
- Перейдите в Сервисы и репозитории → Установленные сервисы → Модуль локального сбора логов.
- Статус сервиса должен измениться на
Patched. - На вкладке Применённые ShturvalServicePatch должен отображаться ваш SSP.
Шаг 3. Проверить конфигурацию Vector
Проверьте логи подов Vector на наличие ошибок (например, unknown input или inputs references unknown component, если указано неверное имя в inputs):
kubectl logs -n logging -l app.kubernetes.io/name=vector --tail=100
Если доступен файл конфигурации внутри пода, можно запустить встроенную валидацию:
kubectl exec -n logging deploy/vector -- vector validate /etc/vector/vector.yaml
Шаг 4. Проверить доставку на стороне приёмника
Убедитесь, что syslog-сервер получает сообщения. При использовании encoding.codec: syslog сообщения должны приходить в формате RFC 5424 (или RFC 3164, если настроено). Обратите внимание, что при использовании протокола UDP (mode: udp) доставка не гарантируется; для критичных данных в production рекомендуется использовать TCP.