Vector-agent#

Vector-agent - это высокопроизводительный агент для сбора, преобразования и отправки логов, метрик и других данных телеметрии. В режиме agent он развертывается на каждом узле кластера Kubernetes и используется для локального сбора данных с контейнеров и системных компонентов.

Основные задачи и возможности
  • Сбор логов с pod и контейнеров:

    Vector может собирать логи напрямую с контейнеров, фильтровать их и направлять в различные хранилища или системы анализа (например, Loki, Elasticsearch, S3 и др.).

  • Интеграция с Kubernetes API:

    Vector взаимодействует с API Kubernetes для получения метаданных о pods, контейнерах и узлах, что позволяет добавлять контекстную информацию к собранным данным.

  • Обогащение данных и преобразование:

    Поддерживает фильтрацию, парсинг, маскировку и преобразование логов и метрик перед отправкой, обеспечивая гибкость обработки данных.

  • Легковесность и производительность:

    Написан на языке Rust, что делает его очень эффективным по сравнению с другими агентами, такими как Fluentd или Logstash.

  • Развертывание через DaemonSet:

    Для равномерного покрытия всего кластера Vector обычно разворачивается как DaemonSet, чтобы работать на всех узлах и собирать данные локально.

  • Поддержка множества выходных целей:

    Может отправлять данные в разные системы: от централизованных хранилищ (Elasticsearch, Loki) до брокеров сообщений (Kafka, NATS), облачных сервисов и HTTP endpoints.

Примечание

Vector-agent устанавливается по умолчанию с компонентом logging. Для Vector-agent преднастроена интеграция с Vector-aggregator.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем vector-agent и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

nameOverride - переопределение имени ресурсов#

Параметр

Описание

Значение по умолчанию

nameOverride

Переопределяет имя ресурсов Kubernetes

""

fullnameOverride - переопределение полного имени ресурсов#

Параметр

Описание

Значение по умолчанию

fullnameOverride

Переопределяет полное имя всех ресурсов

""

role - роль развертывания Vector#

Параметр

Описание

Значение по умолчанию

role

Роль для данного экземпляра Vector: "Agent", "Aggregator", "Stateless-Aggregator"

"Agent"

rollWorkload - обновление рабочих нагрузок#

Параметр

Описание

Значение по умолчанию

rollWorkload

Добавить контрольную сумму ConfigMap к аннотациям рабочей нагрузки

true

rollWorkloadSecrets - обновление секретов рабочих нагрузок#

Параметр

Описание

Значение по умолчанию

rollWorkloadSecrets

Добавить контрольную сумму Secret к аннотациям рабочей нагрузки

true

rollWorkloadExtraObjects - обновление дополнительных объектов#

Параметр

Описание

Значение по умолчанию

rollWorkloadExtraObjects

Добавить контрольную сумму ExtraObjects к аннотациям рабочей нагрузки

true

commonLabels - общие метки для всех ресурсов#

Параметр

Описание

Значение по умолчанию

commonLabels

Дополнительные метки для всех создаваемых ресурсов

{}

image - настройки Docker образа Vector#

Параметр

Описание

Значение по умолчанию

image.repository

Репозиторий образа Vector

'{{.Values.global.image.registry }}/{{.Values.global.image.repository }}/{{.Values.global.dappVersion }}/dapp-vector/vector'

image.pullPolicy

Политика загрузки образа

IfNotPresent

image.pullSecrets

Секреты для загрузки образов

[]

image.tag

Тег образа Vector

"v0.45.0"

image.sha

SHA образа Vector

""

image.base

Базовое распределение для Vector

""

replicas - количество реплик#

Параметр

Описание

Значение по умолчанию

replicas

Количество pods для ролей "Aggregator" и "Stateless-Aggregator"

1

hostAliases - дополнительные записи в /etc/hosts для подов Vector#

Параметр

Описание

Значение по умолчанию

hostAliases

Дополнительные записи hostAliases для pods

[]

podManagementPolicy - политика управления pods#

Параметр

Описание

Значение по умолчанию

podManagementPolicy

Политика управления pods для StatefulSet роли "Aggregator"

OrderedReady

secrets - секреты для Vector#

Параметр

Описание

Значение по умолчанию

secrets.generic

Произвольные секреты в виде «ключ-значение»

{}

autoscaling - автомасштабирование pods#

Параметр

Описание

Значение по умолчанию

autoscaling.enabled

Создать HorizontalPodAutoscaler для Vector

false

autoscaling.external

Использовать внешний автомасштабировщик типа KEDA

false

autoscaling.annotations

Аннотации для HPA Vector

{}

autoscaling.minReplicas

Минимальное количество реплик для HPA

1

autoscaling.maxReplicas

Максимальное количество реплик для HPA

10

autoscaling.targetCPUUtilizationPercentage

Целевая утилизация CPU для HPA

80

autoscaling.targetMemoryUtilizationPercentage

Целевая утилизация памяти для HPA

~

autoscaling.customMetric

Настраиваемые метрики для автомасштабирования

{}

autoscaling.behavior

Настройка поведения масштабирования вверх и вниз

{}

podDisruptionBudget - бюджет прерывания pods#

Параметр

Описание

Значение по умолчанию

podDisruptionBudget.enabled

Создать PodDisruptionBudget для Vector

false

podDisruptionBudget.minAvailable

Минимальное количество доступных pods после прерывания

1

podDisruptionBudget.maxUnavailable

Максимальное количество недоступных pods после прерывания

~

rbac - настройки ролевого доступа#

Параметр

Описание

Значение по умолчанию

rbac.create

Создать и использовать ресурсы RBAC для роли "Agent"

true

psp - политики безопасности pods#

Параметр

Описание

Значение по умолчанию

psp.create

Создать PodSecurityPolicy (устарело с Kubernetes v1.21)

false

serviceAccount - настройки сервисного аккаунта#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создать ServiceAccount для Vector

true

serviceAccount.annotations

Аннотации для ServiceAccount Vector

{}

serviceAccount.name

Имя ServiceAccount для использования

~

serviceAccount.automountToken

Автоматическое монтирование токена API для ServiceAccount

3

podAnnotations - аннотации pods#

Параметр

Описание

Значение по умолчанию

podAnnotations

Аннотации для pods Vector

{}

podLabels - метки pods#

Параметр

Описание

Значение по умолчанию

podLabels

Метки для pods Vector

vector.dev/exclude: "true"

podPriorityClassName - класс приоритета pods#

Параметр

Описание

Значение по умолчанию

podPriorityClassName

Класс приоритета для pods Vector

""

podHostNetwork - использование сети хоста#

Параметр

Описание

Значение по умолчанию

podHostNetwork

Настройка hostNetwork для pods Vector

false

podSecurityContext - контекст безопасности pods#

Параметр

Описание

Значение по умолчанию

podSecurityContext.runAsUser

Пользователь для запуска процессов в pod

0

podSecurityContext.runAsGroup

Группа для запуска процессов в pod

10001

podSecurityContext.seccompProfile.type

Тип профиля seccomp

RuntimeDefault

workloadResourceAnnotations - аннотации ресурсов рабочих нагрузок#

Параметр

Описание

Значение по умолчанию

workloadResourceAnnotations

Аннотации для DaemonSet, Deployment или StatefulSet Vector

{}

securityContext - контекст безопасности контейнеров#

Параметр

Описание

Значение по умолчанию

securityContext.privileged

Запуск контейнера в привилегированном режиме

true

securityContext.allowPrivilegeEscalation

Разрешить повышение привилегий

true

securityContext.readOnlyRootFilesystem

Корневая файловая система только для чтения

true

securityContext.capabilities.drop

Удаляемые capabilities

["ALL"]

command - команда для запуска Vector#

Параметр

Описание

Значение по умолчанию

command

Переопределить команду запуска Vector по умолчанию

[]

args - аргументы для Vector#

Параметр

Описание

Значение по умолчанию

args

Аргументы командной строки для Vector

["--config-dir", "/etc/vector/"]

env - переменные окружения#

Параметр

Описание

Значение по умолчанию

env

Переменные окружения для контейнеров Vector

[]

envFrom - переменные окружения из источников#

Параметр

Описание

Значение по умолчанию

envFrom

Определение переменных окружения из Secrets или ConfigMaps

[]

containerPorts - порты контейнеров#

Параметр

Описание

Значение по умолчанию

containerPorts

Ручное определение портов контейнеров Vector

[]

resources - ресурсы контейнеров#

Параметр

Описание

Значение по умолчанию

resources

Ресурсы (requests/limits) для контейнеров Vector

{}

lifecycle - хуки жизненного цикла#

Параметр

Описание

Значение по умолчанию

lifecycle

Хуки жизненного цикла для контейнеров Vector

{}

minReadySeconds - минимальное время готовности#

Параметр

Описание

Значение по умолчанию

minReadySeconds

Минимальное время ожидания новых pods перед проверкой готовности

0

updateStrategy - стратегия обновления#

Параметр

Описание

Значение по умолчанию

updateStrategy

Стратегия обновления для замены pods Vector

{}

terminationGracePeriodSeconds - время завершения#

Параметр

Описание

Значение по умолчанию

terminationGracePeriodSeconds

Время ожидания завершения процессов Vector

60

nodeSelector - селектор узлов#

Параметр

Описание

Значение по умолчанию

nodeSelector

Селектор узлов для размещения pods Vector

{}

tolerations - tolerations для размещения на узлах#

Параметр

Описание

Значение по умолчанию

tolerations

Tolerations для размещения pods Vector на узлах с taint

[master, control-plane, ingress tolerations]

affinity - правила сходства#

Параметр

Описание

Значение по умолчанию

affinity

Правила сходства для размещения pods Vector

{}

topologySpreadConstraints - ограничения распределения по топологии#

Параметр

Описание

Значение по умолчанию

topologySpreadConstraints

Ограничения распределения pods по топологии кластера

[]

service - настройки сервиса Vector#

Параметр

Описание

Значение по умолчанию

service.enabled

Создать и предоставить ресурс Service для Vector

true

service.type

Тип сервиса Vector

"ClusterIP»

service.annotations

Аннотации для сервиса Vector

{}

service.topologyKeys

Ключи топологии для сервиса Vector

[]

service.ports

Ручное определение портов сервиса

[]

service.externalTrafficPolicy

Политика внешнего трафика для сервиса

""

service.internalTrafficPolicy

Политика внутреннего трафика для сервиса

""

service.loadBalancerIP

IP-адрес для LoadBalancer сервиса

""

service.ipFamilyPolicy

Настройка IPv4/IPv6 dual-stack

""

service.ipFamilies

Семейства IP-адресов для dual-stack

[]

serviceHeadless - настройки headless сервиса#

Параметр

Описание

Значение по умолчанию

serviceHeadless.enabled

Создать и предоставить Headless Service для Vector

{}

ingress - настройки Ingress#

Параметр

Описание

Значение по умолчанию

ingress.enabled

Создать и использовать ресурс Ingress

false

ingress.className

Класс Ingress для Kubernetes >= 1.18

"nginx"

ingress.annotations

Аннотации для Ingress

{}

ingress.hosts

Настройка хостов и путей для Ingress

[]

ingress.tls

Настройка TLS для Ingress

[]

existingConfigMaps - существующие ConfigMaps#

Параметр

Описание

Значение по умолчанию

existingConfigMaps

Список существующих ConfigMaps для конфигурации Vector

[]

dataDir - директория данных#

Параметр

Описание

Значение по умолчанию

dataDir

Путь для данных Vector (используется только с existingConfigMaps)

""

customConfig - пользовательская конфигурация Vector#

Параметр

Описание

Значение по умолчанию

customConfig.data_dir

Каталог для данных Vector

/vector-data-dir

customConfig.api.enabled

Включить Vector API

true

customConfig.api.address

Адрес для Vector API

127.0.0.1:8686

customConfig.api.playground

Включить playground для API

false

customConfig.sources.journald.type

Тип источника journald

journald

customConfig.sources.kubernetes_logs.type

Тип источника логов Kubernetes

kubernetes_logs

customConfig.sources.host_metrics.filesystem.devices.excludes

Исключения устройств для метрик файловой системы

["binfmt_misc"]

customConfig.sources.host_metrics.filesystem.filesystems.excludes

Исключения файловых систем

["binfmt_misc"]

customConfig.sources.host_metrics.filesystem.mountpoints.excludes

Исключения точек монтирования

["*/proc/sys/fs/binfmt_misc"]

customConfig.sources.host_metrics.type

Тип источника метрик хоста

host_metrics

customConfig.sources.internal_metrics.type

Тип источника внутренних метрик

internal_metrics

customConfig.sinks.aggregator.type

Тип приемника агрегатора

vector

customConfig.sinks.aggregator.inputs

Входы для агрегатора

["journald", "kubernetes_logs"]

customConfig.sinks.aggregator.address

Адрес агрегатора

vector-aggregator.dapp-logging.svc.cluster.local:6000

customConfig.sinks.prom_exporter.type

Тип экспортера Prometheus

prometheus_exporter

customConfig.sinks.prom_exporter.inputs

Входы для экспортера Prometheus

["host_metrics", "internal_metrics"]

customConfig.sinks.prom_exporter.address

Адрес экспортера Prometheus

0.0.0.0:9090

defaultVolumes - тома по умолчанию#

Параметр

Описание

Значение по умолчанию

defaultVolumes.name

Имя тома для /var/log

var-log

defaultVolumes.hostPath.path

Путь хоста для логов

"/var/log/"

defaultVolumes.name

Имя тома для /var/lib

var-lib

defaultVolumes.hostPath.path

Путь хоста для библиотек

"/var/lib/"

defaultVolumes.name

Имя тома для procfs

procfs

defaultVolumes.hostPath.path

Путь для procfs

"/proc"

defaultVolumes.name

Имя тома для sysfs

sysfs

defaultVolumes.hostPath.path

Путь для sysfs

"/sys"

defaultVolumeMounts - монтирование томов по умолчанию#

Параметр

Описание

Значение по умолчанию

defaultVolumeMounts.name

Имя монтируемого тома для логов

var-log

defaultVolumeMounts.mountPath

Путь монтирования логов

"/var/log/"

defaultVolumeMounts.readOnly

Режим только для чтения для логов

true

defaultVolumeMounts.name

Имя монтируемого тома для библиотек

var-lib

defaultVolumeMounts.mountPath

Путь монтирования библиотек

"/var/lib"

defaultVolumeMounts.readOnly

Режим только для чтения для библиотек

true

defaultVolumeMounts.name

Имя монтируемого тома procfs

procfs

defaultVolumeMounts.mountPath

Путь монтирования procfs

"/host/proc"

defaultVolumeMounts.readOnly

Режим только для чтения для procfs

true

defaultVolumeMounts.name

Имя монтируемого тома sysfs

sysfs

defaultVolumeMounts.mountPath

Путь монтирования sysfs

"/host/sys"

defaultVolumeMounts.readOnly

Режим только для чтения для sysfs

true

extraVolumes - дополнительные тома#

Параметр

Описание

Значение по умолчанию

extraVolumes

Дополнительные тома для pods Vector

[]

extraVolumeMounts - дополнительные монтирования томов#

Параметр

Описание

Значение по умолчанию

extraVolumeMounts

Дополнительные монтирования томов для контейнеров Vector

[]

initContainers - init контейнеры#

Параметр

Описание

Значение по умолчанию

initContainers

Init контейнеры для pods Vector

[]

extraContainers - дополнительные контейнеры#

Параметр

Описание

Значение по умолчанию

extraContainers

Дополнительные контейнеры для pods Vector

[]

persistence - настройки постоянного хранения#

Параметр

Описание

Значение по умолчанию

persistence.enabled

Создать и использовать PersistentVolumeClaims

false

persistence.existingClaim

Имя существующего PersistentVolumeClaim для роли "Aggregator"

""

persistence.retentionPolicy

Политика сохранения PersistentVolumeClaim

{}

persistence.accessModes

Режимы доступа для PersistentVolumeClaims

["ReadWriteOnce"]

persistence.size

Размер PersistentVolumeClaims для роли "Aggregator"

10Gi

persistence.finalizers

Финализаторы для PersistentVolumeClaims

["kubernetes.io/pvc-protection"]

persistence.selectors

Селекторы для PersistentVolumeClaims

{}

persistence.hostPath.enabled

Использовать hostPath для роли "Agent"

true

persistence.hostPath.path

Путь для hostPath роли "Agent"

"/var/lib/vector"

dnsPolicy - политика DNS#

Параметр

Описание

Значение по умолчанию

dnsPolic

Политика DNS для pods Vector

ClusterFirst

dnsConfig - настройки DNS#

Параметр

Описание

Значение по умолчанию

dnsConfig

Опции настройки DNS pods Vector

{}

shareProcessNamespace - общее namespace процессов#

Параметр

Описание

Значение по умолчанию

shareProcessNamespace

Общее namespace процессов для pods Vector

false

livenessProbe - проба жизнеспособности#

Параметр

Описание

Значение по умолчанию

livenessProbe

Настройки проверки жизнеспособности

{}

readinessProbe - проба готовности#

Параметр

Описание

Значение по умолчанию

readinessProbe

Настройки проверки готовности

{}

podMonitor - мониторинг pods#

Параметр

Описание

Значение по умолчанию

podMonitor.enabled

Создать PodMonitor для Vector

false

podMonitor.jobLabel

Метка для получения имени задания

app.kubernetes.io/name

podMonitor.port

Порт для сбора метрик

prom-exporter

podMonitor.path

Путь для сбора метрик

/metrics

podMonitor.interval

Интервал сбора метрик

~

podMonitor.scrapeTimeout

Время ожидания сбора метрик

~

podMonitor.relabelings

Конфигурации перемаркировки для образцов

[]

podMonitor.metricRelabelings

Конфигурации перемаркировки метрик

[]

podMonitor.podTargetLabels

Метки, передаваемые с подов на цели

[]

podMonitor.additionalLabels

Дополнительные метки для PodMonitor

{}

podMonitor.honorLabels

Уважать метки в конфигурации scrape

false

podMonitor.honorTimestamps

Уважать временные метки в конфигурации scrape

true

logLevel - уровень логирования#

Параметр

Описание

Значение по умолчанию

logLevel

Уровень логирования для Vector

"info"

haproxy - встроенный балансировщик нагрузки HAProxy#

Параметр

Описание

Значение по умолчанию

haproxy.enabled

Создать балансировщик HAProxy

false

haproxy.image.repository

Репозиторий образа HAProxy

haproxytech/haproxy-alpine

haproxy.image.pullPolicy

Политика загрузки образа HAProxy

IfNotPresent

haproxy.image.pullSecrets

Секреты для загрузки образа HAProxy

[]

haproxy.image.tag

Тег образа HAProxy

"2.6.12"

haproxy.rollWorkload

Добавить контрольную сумму ConfigMap к Deployment HAProxy

true

haproxy.replicas

Количество pods HAProxy

1

haproxy.serviceAccount.create

Создать ServiceAccount для HAProxy

true

haproxy.serviceAccount.annotations

Аннотации для ServiceAccount HAProxy

{}

haproxy.serviceAccount.name

Имя ServiceAccount HAProxy

~

haproxy.serviceAccount.automountToken

Автомонтирование токена API для ServiceAccount HAProxy

true

haproxy.strategy

Стратегия обновления pods HAProxy

{}

haproxy.terminationGracePeriodSeconds

Время завершения процессов HAProxy

60

haproxy.podAnnotations

Аннотации для pods HAProxy

{}

haproxy.podLabels

Метки для pods HAProxy

{}

haproxy.podPriorityClassName

Класс приоритета для pods HAProxy

""

haproxy.podSecurityContext

Контекст безопасности для pods HAProxy

{}

haproxy.securityContext

Контекст безопасности для контейнеров HAProxy

{}

haproxy.containerPorts

Порты контейнеров HAProxy

[]

haproxy.service.type

Тип сервиса HAProxy

ClusterIP

haproxy.service.annotations

Аннотации для сервиса HAProxy

{}

haproxy.service.topologyKeys

Ключи топологии для сервиса HAProxy

[]

haproxy.service.ports

Порты сервиса HAProxy

[]

haproxy.service.externalTrafficPolicy

Политика внешнего трафика HAProxy

""

haproxy.service.loadBalancerIP

IP-адрес LoadBalancer для HAProxy

""

haproxy.service.ipFamilyPolicy

Политика семейств IP для HAProxy

""

haproxy.service.ipFamilies

Семейства IP-адресов для HAProxy

[]

haproxy.existingConfigMap

Существующий ConfigMap для конфигурации HAProxy

""

haproxy.customConfig

Пользовательская конфигурация HAProxy

""

haproxy.extraVolumes

Дополнительные тома для pods HAProxy

[]

haproxy.extraVolumeMounts

Дополнительные монтирования томов для HAProxy

[]

haproxy.initContainers

Init-контейнеры для pods HAProxy

[]

haproxy.extraContainers

Дополнительные контейнеры для pods HAProxy

[]

haproxy.autoscaling.enabled

Создать HorizontalPodAutoscaler для HAProxy

false

haproxy.autoscaling.external

Внешний HorizontalPodAutoscaler для HAProxy

false

haproxy.autoscaling.minReplicas

Минимальное количество реплик HPA для HAProxy

1

haproxy.autoscaling.maxReplicas

Максимальное количество реплик HPA для HAProxy

10

haproxy.autoscaling.targetCPUUtilizationPercentage

Целевая утилизация CPU для HPA HAProxy

80

haproxy.autoscaling.targetMemoryUtilizationPercentage

Целевая утилизация памяти для HPA HAProxy

~

haproxy.autoscaling.customMetric

Настраиваемые метрики для автомасштабирования HAProxy

{}

haproxy.resources

Ресурсы (requests/limits) для контейнеров HAProxy

{}

haproxy.livenessProbe

Настройки пробы жизнеспособности HAProxy

tcpSocket port 1024

haproxy.readinessProbe

Настройки пробы готовности HAProxy

tcpSocket port 1024

haproxy.nodeSelector

Селектор узлов для pods HAProxy

{}

haproxy.tolerations

Толерантности для pods HAProxy

[]

haproxy.affinity

Правила сходства для pods HAProxy

{}

extraObjects - дополнительные объекты#

Параметр

Описание

Значение по умолчанию

extraObjects

Создание дополнительных объектов через значения

[]