Vector-aggregator#

Vector-aggregator - это архитектурная роль Vector, при которой Vector разворачивается как централизованный инструмент для обработки и маршрутизации данных телеметрии, поступающих от агентов в частности, от Vector-agent или других источников.

Основные задачи и возможности Vector в режиме aggregator в DropApp:
  • Централизованная обработка данных:

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

  • Масштабируемость и распределенная обработка:

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

  • Поддержка множества протоколов и источников:

    Vector-aggregator может принимать данные из разных источников (например, через TCP, UDP, HTTP, gRPC), что делает его универсальным центром обработки телеметрии в кластере.

  • Резервное копирование и буферизация:

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

  • Интеграция с Kubernetes через Deployment или StatefulSet

    Vector-aggregator в режиме aggregator обычно разворачивается как отдельный компонент кластера, например, с использованием Deployment или StatefulSet, чтобы обеспечить отказоустойчивость и управляемость.

  • Маршрутизация и мультиплексирование данных:

    Позволяет направлять данные в разные системы назначения (Elasticsearch, S3, Loki, Kafka и др.) в зависимости от типа и содержания.

Примечание

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

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

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

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

Параметр

Описание

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

nameOverride

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

""

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

Параметр

Описание

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

fullnameOverride

Переопределение полного имени ресурсов

""

role - роль Vector в кластере#

Параметр

Описание

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

role

Роль для Vector. Возможные значения: "Agent", "Aggregator", "Stateless-Aggregator". Agent = DaemonSet, Aggregator = StatefulSet, Stateless-Aggregator = Deployment

"Aggregator"

rollWorkload - управление checksum ConfigMap#

Параметр

Описание

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

rollWorkload

Добавить checksum ConfigMap к аннотациям workload для автоматического перезапуска подов при изменении конфигурации

true

rollWorkloadSecrets - управление checksum Secret#

Параметр

Описание

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

rollWorkloadSecrets

Добавить checksum Secret к аннотациям workload для автоматического перезапуска pods при изменении секретов

true

rollWorkloadExtraObjects - управление checksum ExtraObjects#

Параметр

Описание

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

rollWorkloadExtraObjects

Добавить checksum ExtraObjects к аннотациям workload для автоматического перезапуска pods при изменении дополнительных объектов

true

image - конфигурация Docker-образа Vector#

Параметр

Описание

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

image.repository

Репозиторий Docker-образа Vector с поддержкой шаблонов Helm

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

image.pullPolicy

Политика загрузки образа. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

image.pullSecrets

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

[]

image.tag

Тег образа Vector

v0.45.0

image.sha

SHA-хэш образа Vector для дополнительной проверки целостности

""

image.base

Базовый дистрибутив для Vector. Заменяет базовый дистрибутив в версии appVersion

""

replicas - количество экземпляров#

Параметр

Описание

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

replicas

Количество pods для создания. Действует для ролей "Aggregator" и "Stateless-Aggregator"

2

hostAliases - дополнительные записи хостов#

Параметр

Описание

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

hostAliases

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

[]

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

Параметр

Описание

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

podManagementPolicy

Политика управления pods для StatefulSet. Возможные значения: OrderedReady (последовательное создание), Parallel (параллельное создание). Действует для роли "Aggregator"

OrderedReady

autoscaling - настройки автомасштабирования#

Параметр

Описание

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

autoscaling.enabled

Включить HorizontalPodAutoscaler для Vector. Действует для ролей "Aggregator" и "Stateless-Aggregator"

false

autoscaling.external

Использовать внешний автомасштабировщик (например, KEDA). Действует для ролей "Aggregator" и "Stateless-Aggregator"

false

autoscaling.minReplicas

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

1

autoscaling.maxReplicas

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

10

autoscaling.targetCPUUtilizationPercentage

Целевая утилизация CPU для автомасштабирования (в процентах)

80

autoscaling.targetMemoryUtilizationPercentage

Целевая утилизация памяти для автомасштабирования (в процентах)

не задано

podDisruptionBudget - настройки бюджета прерываний pods#

Параметр

Описание

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

podDisruptionBudget.enabled

Включить PodDisruptionBudget для Vector для обеспечения высокой доступности

true

podDisruptionBudget.minAvailable

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

1

podDisruptionBudget.maxUnavailable

Максимальное количество pods, которые могут быть недоступны после eviction

не задано

rbac - настройки RBAC#

Параметр

Описание

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

rbac.create

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

true

psp - настройки Pod Security Policy#

Параметр

Описание

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

psp.create

Создать PodSecurityPolicy (устарело с Kubernetes v1.21, будет удалено в v1.25). Предназначено для роли "Agent"

false

serviceAccount - настройки служебной учетной записи#

Параметр

Описание

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

serviceAccount.create

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

true

serviceAccount.annotations

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

{}

serviceAccount.name

Имя ServiceAccount для Vector. Если не задано и create=true, генерируется автоматически

не задано

podLabels - метки для pods#

Параметр

Описание

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

podLabels

Метки для pods Vector

vector.dev/exclude: "true"

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

Параметр

Описание

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

podPriorityClassName

Класс приоритета для pods Vector для управления планированием

""

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

Параметр

Описание

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

podHostNetwork

Использовать hostNetwork для pods Vector

false

command - переопределение команды#

Параметр

Описание

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

command

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

[]

args - аргументы командной строки#

Параметр

Описание

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

args

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

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

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

Параметр

Описание

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

env

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

[]

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

Параметр

Описание

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

envFrom

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

[]

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

Параметр

Описание

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

containerPorts

Вручную определить containerPorts для Vector, переопределяя автоматическую генерацию

[]

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

Параметр

Описание

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

minReadySeconds

Минимальное количество секунд для нового pod перед тем, как он будет считаться доступным

0

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

Параметр

Описание

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

terminationGracePeriodSeconds

Время ожидания корректного завершения Vector в секундах

60

tolerations - tolerations для планирования#

Параметр

Описание

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

tolerations

Настроить tolerations для планирования pods Vector на узлах с taint

[]

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

Параметр

Описание

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

topologySpreadConstraints

Ограничения топологического распределения для pods Vector. Действует для ролей "Aggregator" и "Stateless-Aggregator"

[]

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

Параметр

Описание

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

service.enabled

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

true

service.type

Тип сервиса. Возможные значения: ClusterIP, NodePort, LoadBalancer, ExternalName

ClusterIP

service.annotations

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

{}

service.topologyKeys

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

[]

service.ports

Вручную задать порты сервиса, переопределяя автоматическую генерацию

[]

service.externalTrafficPolicy

Политика внешнего трафика. Возможные значения: Cluster, Local

""

service.internalTrafficPolicy

Политика внутреннего трафика. Возможные значения: Cluster, Local

""

service.loadBalancerIP

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

""

service.ipFamilyPolicy

Политика IPv4/IPv6 dual-stack. Возможные значения: SingleStack, PreferDualStack, RequireDualStack

""

service.ipFamilies

Семейства IP-адресов для dual-stack конфигурации

[]

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

Параметр

Описание

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

serviceHeadless.enabled

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

true

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

Включить API Vector

true

customConfig.api.address

Адрес API Vector

127.0.0.1:8686

customConfig.api.playground

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

false

customConfig.sources.datadog_agent.address

Адрес для источника datadog_agent

0.0.0.0:8282

customConfig.sources.datadog_agent.type

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

datadog_agent

customConfig.sources.fluent.address

Адрес для источника fluent

0.0.0.0:24224

customConfig.sources.fluent.type

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

fluent

customConfig.sources.internal_metrics.type

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

internal_metrics

customConfig.sources.logstash.address

Адрес для источника logstash

0.0.0.0:5044

customConfig.sources.logstash.type

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

logstash

customConfig.sources.splunk_hec.address

Адрес для источника splunk_hec

0.0.0.0:8080

customConfig.sources.splunk_hec.type

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

splunk_hec

customConfig.sources.statsd.address

Адрес для источника statsd

0.0.0.0:8125

customConfig.sources.statsd.mode

Режим для источника statsd

tcp

customConfig.sources.statsd.type

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

statsd

customConfig.sources.syslog.address

Адрес для источника syslog

0.0.0.0:9000

customConfig.sources.syslog.mode

Режим для источника syslog

tcp

customConfig.sources.syslog.type

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

syslog

customConfig.sources.vector.address

Адрес для источника vector

0.0.0.0:6000

customConfig.sources.vector.type

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

vector

customConfig.sources.vector.version

Версия протокола источника vector

2

customConfig.sinks.loki.type

Тип назначения loki

loki

customConfig.sinks.loki.inputs

Входы для назначения loki

["logstash", "syslog", "vector"]

customConfig.sinks.loki.endpoint

Endpoint для назначения loki

http://loki.dapp-logging.svc.cluster.local:3100

customConfig.sinks.loki.encoding.codec

Кодек для назначения loki

json

customConfig.sinks.loki.out_of_order_action

Действие при нарушении порядка для loki

accept

customConfig.sinks.loki.labels.job

Метка job для loki

vector-k8s-logs

customConfig.sinks.loki.labels.host

Метка host для loki

{{{{}} kubernetes.node_labels."kubernetes.io/hostname" {{}}}}

customConfig.sinks.loki.labels.source_type

Метка source_type для loki

{{{{}} source_type {{}}}}

customConfig.sinks.loki.labels.pod

Метка pod для loki

{{{{}} kubernetes.pod_name {{}}}}

customConfig.sinks.loki.labels.app

Метка app для loki

{{{{}} kubernetes.pod_labels.app {{}}}}

customConfig.sinks.loki.labels.namespace

Метка namespace для loki

{{{{}} kubernetes.pod_namespace {{}}}}

customConfig.sinks.loki.labels.app_kubernetes_io_name

Метка app.kubernetes.io/name для loki

{{{{}} kubernetes.pod_labels."app.kubernetes.io/name" {{}}}}

customConfig.sinks.loki.labels.app_kubernetes_io_instance

Метка app.kubernetes.io/instance для loki

{{{{}} kubernetes.pod_labels."app.kubernetes.io/instance" {{}}}}

customConfig.sinks.prom_exporter.type

Тип назначения prometheus_exporter

prometheus_exporter

customConfig.sinks.prom_exporter.inputs

Входы для назначения prometheus_exporter

["internal_metrics"]

customConfig.sinks.prom_exporter.address

Адрес для назначения prometheus_exporter

0.0.0.0:9090

defaultVolumes - стандартные тома#

Параметр

Описание

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

defaultVolumes

Стандартные тома, монтируемые в pods. Обычно не должны изменяться

[var-log, var-lib, procfs, sysfs]

defaultVolumeMounts - стандартные монтирования томов#

Параметр

Описание

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

defaultVolumeMounts

Стандартные монтирования томов, соответствующие volumes

[var-log, var-lib, procfs, sysfs]

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

Параметр

Описание

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

extraVolumes

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

[]

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

Параметр

Описание

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

extraVolumeMounts

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

[]

initContainers - инициализирующие контейнеры#

Параметр

Описание

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

initContainers

Инициализирующие контейнеры для pods Vector

[]

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

Параметр

Описание

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

extraContainers

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

[]

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

Параметр

Описание

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

persistence.enabled

Включить использование PersistentVolumeClaim

false

persistence.existingClaim

Имя существующего PersistentVolumeClaim для использования. Действует для роли "Aggregator"

""

persistence.retentionPolicy

Политика сохранения PersistentVolumeClaim. Действует для роли "Aggregator"

{}

persistence.accessModes

Режимы доступа для PersistentVolumeClaim. Действует для роли "Aggregator"

["ReadWriteOnce"]

persistence.size

Размер PersistentVolumeClaim. Действует для роли "Aggregator"

10Gi

persistence.finalizers

Finalizers для PersistentVolumeClaim. Действует для роли "Aggregator"

["kubernetes.io/pvc-protection"]

persistence.selectors

Селекторы для PersistentVolumeClaim. Действует для роли "Aggregator"

{}

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

Параметр

Описание

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

dnsPolicy

Политика DNS для pods Vector. Возможные значения: ClusterFirst, Default, None

ClusterFirst

shareProcessNamespace - общее пространство имен процессов#

Параметр

Описание

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

shareProcessNamespace

Использовать общее пространство имен процессов для pods Vector

false

podMonitor - настройки мониторинга pods#

Параметр

Описание

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

podMonitor.enabled

Создать PodMonitor для Vector (требует CRD PodMonitor)

false

podMonitor.jobLabel

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

app.kubernetes.io/name

podMonitor.port

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

prom-exporter

podMonitor.path

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

/metrics

podMonitor.interval

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

не задано

podMonitor.scrapeTimeout

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

не задано

podMonitor.relabelings

Конфигурация relabeling для метрик

[]

podMonitor.metricRelabelings

Конфигурация metric relabeling для метрик

[]

podMonitor.podTargetLabels

Метки pod для передачи в target

[]

podMonitor.additionalLabels

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

{}

podMonitor.honorLabels

Использовать honor_labels в конфигурации scrape

false

podMonitor.honorTimestamps

Использовать honor_timestamps в конфигурации scrape

true

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

Параметр

Описание

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

logLevel

Уровень логирования для Vector. Возможные значения: error, warn, info, debug, trace

info

haproxy - настройки HAProxy load balancer#

Параметр

Описание

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

haproxy.enabled

Включить HAProxy load balancer

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

Добавить checksum 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

Вручную определить containerPorts для HAProxy

[]

haproxy.service.type

Тип сервиса HAProxy

ClusterIP

haproxy.service.annotations

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

{}

haproxy.service.topologyKeys

Поле topologyKeys для сервиса HAProxy

[]

haproxy.service.ports

Вручную задать порты сервиса HAProxy

[]

haproxy.service.externalTrafficPolicy

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

""

haproxy.service.loadBalancerIP

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

""

haproxy.service.ipFamilyPolicy

Политика IPv4/IPv6 dual-stack для сервиса HAProxy

""

haproxy.service.ipFamilies

Семейства IP-адресов для dual-stack конфигурации HAProxy

[]

haproxy.existingConfigMap

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

""

haproxy.customConfig

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

""

haproxy.extraVolumes

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

[]

haproxy.extraVolumeMounts

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

[]

haproxy.initContainers

Инициализирующие контейнеры для pods HAProxy

[]

haproxy.extraContainers

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

[]

haproxy.autoscaling.enabled

Включить HorizontalPodAutoscaler для HAProxy

false

haproxy.autoscaling.external

Использовать внешний HorizontalPodAutoscaler для HAProxy

false

haproxy.autoscaling.minReplicas

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

1

haproxy.autoscaling.maxReplicas

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

10

haproxy.autoscaling.targetCPUUtilizationPercentage

Целевая утилизация CPU для автомасштабирования HAProxy

80

haproxy.autoscaling.targetMemoryUtilizationPercentage

Целевая утилизация памяти для автомасштабирования HAProxy

не задано

haproxy.autoscaling.customMetric

Пользовательские метрики для автомасштабирования HAProxy

{}

haproxy.resources

Ресурсы для контейнеров HAProxy

{}

haproxy.livenessProbe

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

tcpSocket на порту 1024

haproxy.readinessProbe

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

tcpSocket на порту 1024

haproxy.nodeSelector

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

{}

haproxy.tolerations

Tolerations для планирования pods HAProxy

[]

haproxy.affinity

Правила affinity для pods HAProxy

{}

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

Параметр

Описание

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

extraObjects

Создание дополнительных манифестов через values с поддержкой шаблонов

[]