Prometheus-node-exporter#

Prometheus-node-exporter - это агент, собирающий метрики на уровне операционной системы узлов кластера DropApp. Он предоставляет информацию о состоянии оборудования и системных ресурсах в формате, понятном для инструмента victoria-metrics-k8s-stack.

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

    Экспортирует данные о CPU, памяти, дисковом пространстве, сетевых интерфейсах, файловых системах и других параметрах работы хостовой системы.

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

    Предоставляет HTTP endpoint (/metrics), откуда victoria-metrics-k8s-stack забирает метрики для дальнейшего хранения и анализа.

  • Поддержка мониторинга в Kubernetes:

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

  • Гибкая настройка и расширяемость:

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

Prometheus Node Exporter — это ключевой компонент для системного мониторинга в DropApp, предоставляющий доступ к низкоуровневым метрикам хостов и позволяющий эффективно отслеживать состояние физических и виртуальных машин.

Примечание

Prometheus-node-exporter устанавливается по умолчанию с компонентом Monitoring.

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

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

image - настройки образа контейнера node-exporter#

Параметр

Описание

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

image.repository

Репозиторий Docker образа node-exporter с поддержкой глобальных переменных

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

image.tag

Тег версии образа node-exporter

"v1.9.1"

image.pullPolicy

Политика загрузки образа (Always, IfNotPresent, Never)

IfNotPresent

image.digest

SHA256-хеш образа для дополнительной безопасности

""

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

Параметр

Описание

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

imagePullSecrets

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

[]

nameOverride - переопределение имени чарта#

Параметр

Описание

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

nameOverride

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

""

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

Параметр

Описание

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

fullnameOverride

Полностью переопределяет генерируемые имена ресурсов

""

revisionHistoryLimit - лимит истории ревизий#

Параметр

Описание

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

revisionHistoryLimit

Количество старых ReplicaSet для сохранения истории развертываний

10

kubeRBACProxy - настройки прокси для RBAC авторизации#

Параметр

Описание

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

kubeRBACProxy.enabled

Включить kube-rbac-proxy для защиты HTTP endpoint

false

kubeRBACProxy.env

Переменные окружения для kube-rbac-proxy

{}

kubeRBACProxy.image.repository

Репозиторий образа kube-rbac-proxy

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-kube-rbac-proxy/kube-rbac-proxy'

kubeRBACProxy.image.tag

Версия образа kube-rbac-proxy

v0.18.2

kubeRBACProxy.image.sha

SHA-хеш образа kube-rbac-proxy

""

kubeRBACProxy.image.pullPolicy

Политика загрузки образа kube-rbac-proxy

IfNotPresent

kubeRBACProxy.extraArgs

Дополнительные аргументы командной строки для kube-rbac-proxy

[]

kubeRBACProxy.containerSecurityContext

Контекст безопасности контейнера kube-rbac-proxy

{}

kubeRBACProxy.port

Порт для Node Exporter-контейнера

8100

kubeRBACProxy.portName

Имя порта контейнера

http

kubeRBACProxy.enableHostPort

Включить hostPort для контейнера

false

kubeRBACProxy.proxyEndpointsPort

Порт для проверки готовности прокси

8888

kubeRBACProxy.enableProxyEndpointsHostPort

Включить hostPort для endpoint прокси

false

kubeRBACProxy.resources.requests.cpu

Запрос CPU ресурсов для kube-rbac-proxy

10m

kubeRBACProxy.resources.requests.memory

Запрос памяти для kube-rbac-proxy

32Mi

kubeRBACProxy.extraVolumeMounts

Дополнительные монтирования томов в контейнер kube-rbac-proxy

[]

kubeRBACProxy.tls.enabled

Включить TLS для kube-rbac-proxy

false

kubeRBACProxy.tls.tlsClientAuth

Включить аутентификацию клиента по TLS

false

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

Параметр

Описание

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

service.enabled

Создать сервис Kubernetes

true

service.type

Тип сервиса (ClusterIP, NodePort, LoadBalancer)

ClusterIP

service.clusterIP

IP-адрес для сервиса типа ClusterIP

""

service.port

Порт сервиса и контейнера

9100

service.servicePort

Альтернативный порт сервиса если отличается от порта контейнера

""

service.targetPort

Целевой порт в pod

9100

service.portName

Имя порта сервиса

metrics

service.nodePort

Номер порта для сервиса типа NodePort

null

service.listenOnAllInterfaces

Слушать на всех сетевых интерфейсах

true

service.annotations.prometheus.io/scrape

Аннотация для автообнаружения Prometheus

"true"

service.labels

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

{}

service.ipDualStack.enabled

Включить поддержку dual stack`` IPv4/IPv6

false

service.ipDualStack.ipFamilies

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

["IPv6", "IPv4"]

service.ipDualStack.ipFamilyPolicy

Политика семейств IP-адресов

"PreferDualStack"

service.externalTrafficPolicy

Политика внешнего трафика (Cluster, Local)

""

networkPolicy - настройки сетевых политик#

Параметр

Описание

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

networkPolicy.enabled

Включить NetworkPolicy для ограничения сетевого трафика

false

env - переменные окружения для контейнера#

Параметр

Описание

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

env

Дополнительные переменные окружения для DaemonSet

{}

prometheus - настройки интеграции с Prometheus#

Параметр

Описание

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

prometheus.monitor.enabled

Создать ServiceMonitor для Prometheus Operator

false

prometheus.monitor.additionalLabels

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

{}

prometheus.monitor.namespace

Namespace для размещения ServiceMonitor

""

prometheus.monitor.jobLabel

Метка для определения job name

""

prometheus.monitor.podTargetLabels

Метки pod для добавления к метрикам

[]

prometheus.monitor.targetLabels

Целевые метки для добавления к метрикам

[]

prometheus.monitor.scheme

Схема для scrape метрик (http/https)

http

prometheus.monitor.basicAuth

Базовая HTTP-аутентификация

{}

prometheus.monitor.bearerTokenFile

Файл с bearer token для аутентификации

~

prometheus.monitor.tlsConfig

Конфигурация TLS для безопасного scraping

{}

prometheus.monitor.proxyUrl

URL-прокси для scraping метрик

""

prometheus.monitor.selectorOverride

Переопределение селектора ServiceMonitor

{}

prometheus.monitor.attachMetadata.node

Прикреплять метаданные узла к целям

false

prometheus.monitor.relabelings

Правила перемаркировки метрик

[]

prometheus.monitor.metricRelabelings

Правила перемаркировки метрик перед приемом

[]

prometheus.monitor.interval

Интервал scraping метрик

""

prometheus.monitor.scrapeTimeout

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

10s

prometheus.monitor.apiVersion

Версия API для ServiceMonitor-ресурса

""

prometheus.monitor.sampleLimit

Лимит образцов метрик на scrap

0

prometheus.monitor.targetLimit

Лимит целей для scraping

0

prometheus.monitor.labelLimit

Лимит меток на образец метрики

0

prometheus.monitor.labelNameLengthLimit

Лимит длины имени метки

0

prometheus.monitor.labelValueLengthLimit

Лимит длины значения метки

0

prometheus.podMonitor.enabled

Создать PodMonitor вместо ServiceMonitor

false

prometheus.podMonitor.namespace

Namespace для размещения PodMonitor

""

prometheus.podMonitor.additionalLabels

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

{}

prometheus.podMonitor.podTargetLabels

Метки pods для передачи на цели

[]

prometheus.podMonitor.apiVersion

Версия API для PodMonitor-ресурса

""

prometheus.podMonitor.selectorOverride

Переопределение селектора pods

{}

prometheus.podMonitor.attachMetadata.node

Прикреплять метаданные узла к обнаруженным целям

false

prometheus.podMonitor.jobLabel

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

""

prometheus.podMonitor.scheme

Схема/протокол для scraping

"http"

prometheus.podMonitor.path

Путь для scraping метрик

"/metrics"

prometheus.podMonitor.basicAuth

Базовая аутентификация для endpoint

{}

prometheus.podMonitor.bearerTokenSecret

Секрет с bearer token для scraping целей

{}

prometheus.podMonitor.tlsConfig

TLS-конфигурация для scraping endpoint

{}

prometheus.podMonitor.authorization

Секция авторизации для endpoint

{}

prometheus.podMonitor.oauth2

OAuth2-конфигурация для URL

{}

prometheus.podMonitor.proxyUrl

Proxy URL для направления scraping через прокси

""

prometheus.podMonitor.interval

Интервал scraping endpoint

""

prometheus.podMonitor.scrapeTimeout

Время ожидания окончания scraping

""

prometheus.podMonitor.honorTimestamps

Учитывать временные метки в scrape данных

true

prometheus.podMonitor.honorLabels

Выбирать метки метрики при коллизиях с целевыми метками

true

prometheus.podMonitor.enableHttp2

Включить HTTP2 для scraping

""

prometheus.podMonitor.filterRunning

Отбрасывать pods, которые не запущены

""

prometheus.podMonitor.followRedirects

Следовать HTTP 3xx редиректам

""

prometheus.podMonitor.params

Дополнительные HTTP URL-параметры

{}

prometheus.podMonitor.relabelings

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

[]

prometheus.podMonitor.metricRelabelings

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

[]

prometheus.podMonitor.sampleLimit

Лимит образцов на scrap

0

prometheus.podMonitor.targetLimit

Лимит целей для scraping

0

prometheus.podMonitor.labelLimit

Лимит меток на образец

0

prometheus.podMonitor.labelNameLengthLimit

Лимит длины имени метки на образец

0

prometheus.podMonitor.labelValueLengthLimit

Лимит длины значения метки на образец

0

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

Параметр

Описание

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

updateStrategy.type

Тип стратегии обновления DaemonSet

RollingUpdate

updateStrategy.rollingUpdate.maxUnavailable

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

1

resources - ресурсные требования контейнера#

Параметр

Описание

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

resources

Ресурсные ограничения и запросы для контейнера

{}

restartPolicy - политика перезапуска контейнера#

Параметр

Описание

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

restartPolicy

Политика перезапуска контейнера (Always, OnFailure, Never)

null

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

Параметр

Описание

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

serviceAccount.create

Создать ServiceAccount

true

serviceAccount.name

Имя ServiceAccount (генерируется автоматически если не указано)

~

serviceAccount.annotations

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

{}

serviceAccount.imagePullSecrets

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

[]

serviceAccount.automountServiceAccountToken

Автоматически монтировать токен сервисного аккаунта

false

securityContext - контекст безопасности pod#

Параметр

Описание

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

securityContext.fsGroup

ID группы для владения томами

65534

securityContext.runAsGroup

ID группы для запуска процессов

65534

securityContext.runAsNonRoot

Запускать как непривилегированный пользователь

true

securityContext.runAsUser

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

65534

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

Параметр

Описание

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

containerSecurityContext.readOnlyRootFilesystem

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

true

containerSecurityContext.allowPrivilegeEscalation

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

false

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

Параметр

Описание

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

rbac.create

Создать RBAC-ресурсы

true

rbac.pspEnabled

Использовать Pod Security Policy

true

rbac.pspAnnotations

Аннотации для Pod Security Policy

{}

endpoints - внешние endpoint для мониторинга#

Параметр

Описание

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

endpoints

Адреса node-exporter развернутых вне кластера

[]

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

Параметр

Описание

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

hostNetwork

Подключить сервис к сети хоста

true

hostPID - использование PID namespace хоста#

Параметр

Описание

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

hostPID

Использовать PID namespace хоста

true

hostIPC - использование IPC namespace хоста#

Параметр

Описание

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

hostIPC

Использовать IPC namespace хоста

false

hostRootFsMount - монтирование корневой файловой системы хоста#

Параметр

Описание

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

hostRootFsMount.enabled

Монтировать корневую файловую систему хоста в /host/root

true

hostRootFsMount.mountPropagation

Режим распространения монтирования (None, HostToContainer, Bidirectional)

HostToContainer

hostProcFsMount - монтирование /proc файловой системы хоста#

Параметр

Описание

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

hostProcFsMount.mountPropagation

Режим распространения монтирования /proc-хоста

""

hostSysFsMount - монтирование /sys файловой системы хоста#

Параметр

Описание

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

hostSysFsMount.mountPropagation

Режим распространения монтирования /sys-хоста

""

affinity - правила размещения pod#

Параметр

Описание

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

affinity

Правила аффинности для размещения pod на узлах

{}

podAnnotations - аннотации для pod#

Параметр

Описание

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

podAnnotations.cluster-autoscaler.kubernetes.io/safe-to-evict

Безопасное вытеснение pods при автомасштабировании кластера

"true"

podLabels - дополнительные метки для pods#

Параметр

Описание

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

podLabels

Дополнительные метки для добавления к pods node exporter

{}

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

Параметр

Описание

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

commonLabels

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

{}

daemonsetAnnotations - аннотации для DaemonSet#

Параметр

Описание

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

daemonsetAnnotations

Аннотации для добавления к DaemonSet node exporter

{}

releaseLabel - метка релиза#

Параметр

Описание

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

releaseLabel

Добавить метку релиза для совместимости с kube-prometheus-stack

false

dnsConfig - конфигурация DNS#

Параметр

Описание

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

dnsConfig

Пользовательская DNS конфигурация для pods Prometheus-node-exporter

{}

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

Параметр

Описание

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

nodeSelector.kubernetes.io/os

Селектор операционной системы узла

linux

terminationGracePeriodSeconds - период корректного завершения#

Параметр

Описание

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

terminationGracePeriodSeconds

Время ожидания корректного завершения pods

null

tolerations - толерантности к taint узлов#

Параметр

Описание

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

tolerations

Толерантности для планирования pods на узлах с taint

[{"effect": "NoSchedule", "operator": "Exists"}]

terminationMessageParams - параметры сообщений завершения#

Параметр

Описание

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

terminationMessageParams.enabled

Включить настройки сообщений завершения контейнера

false

terminationMessageParams.terminationMessagePath

Путь для сообщений завершения

/dev/termination-log

terminationMessageParams.terminationMessagePolicy

Политика сообщений завершения

File

extraArgs - дополнительные аргументы#

Параметр

Описание

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

extraArgs

Дополнительные аргументы командной строки для контейнера

[]

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

Параметр

Описание

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

extraHostVolumeMounts

Дополнительные монтирования с хоста в контейнер node-exporter

[]

configmaps - монтирование ConfigMap#

Параметр

Описание

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

configmaps

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

[]

secrets - монтирование секретов#

Параметр

Описание

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

secrets

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

[]

namespaceOverride - переопределение namespace#

Параметр

Описание

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

namespaceOverride

Переопределить namespace для развертывания

""

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

Параметр

Описание

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

sidecars

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

[]

sidecarVolumeMount - монтирования томов для sidecar контейнеров#

Параметр

Описание

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

sidecarVolumeMount

Тома для sidecar-контейнеров

[]

sidecarHostVolumeMounts - монтирования с хоста для sidecar контейнеров#

Параметр

Описание

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

sidecarHostVolumeMounts

Дополнительные монтирования с хоста для sidecar-контейнеров

[]

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

Параметр

Описание

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

extraInitContainers

Дополнительные InitContainers для инициализации pod

[]

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

Параметр

Описание

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

livenessProbe.failureThreshold

Количество неудачных проверок до перезапуска

3

livenessProbe.httpGet.httpHeaders

HTTP-заголовки для проверки

[]

livenessProbe.httpGet.scheme

Схема для HTTP-проверки

http

livenessProbe.initialDelaySeconds

Задержка перед первой проверкой

0

livenessProbe.periodSeconds

Интервал между проверками

10

livenessProbe.successThreshold

Количество успешных проверок для восстановления

1

livenessProbe.timeoutSeconds

Время ожидания проверки

1

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

Параметр

Описание

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

readinessProbe.failureThreshold

Количество неудачных проверок готовности

3

readinessProbe.httpGet.httpHeaders

HTTP-заголовки для проверки готовности

[]

readinessProbe.httpGet.scheme

Схема для HTTP-проверки готовности

http

readinessProbe.initialDelaySeconds

Задержка перед первой проверкой готовности

0

readinessProbe.periodSeconds

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

10

readinessProbe.successThreshold

Количество успешных проверок для готовности

1

readinessProbe.timeoutSeconds

Время ожидания проверки готовности

1

verticalPodAutoscaler - вертикальное автомасштабирование pods#

Параметр

Описание

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

verticalPodAutoscaler.enabled

Включить поддержку вертикального автомасштабирования pods

false

verticalPodAutoscaler.controlledResources

Ресурсы, которые может контролировать VPA (по умолчанию cpu и memory)

[]

verticalPodAutoscaler.maxAllowed

Максимально разрешенные ресурсы для pod

{}

verticalPodAutoscaler.minAllowed

Минимально разрешенные ресурсы для pod

{}

extraManifests - дополнительные манифесты#

Параметр

Описание

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

extraManifests

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

[]

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

Параметр

Описание

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

extraVolumes

Дополнительные тома для доступа в pod

[]

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

Параметр

Описание

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

extraVolumeMounts

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

[]

version - переопределение версии приложения#

Параметр

Описание

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

version

Переопределить версию приложения, если image.tag определен и не следует semver

""

tlsSecret - настройки TLS секрета#

Параметр

Описание

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

tlsSecret.enabled

Включить использование TLS-ресурсов из тома на секрете

false

tlsSecret.caItem

Ключ с сертификатом клиентского CA

""

tlsSecret.certItem

Ключ с сертификатом

tls.crt

tlsSecret.keyItem

Ключ с приватным ключом

tls.key

tlsSecret.secretName

Имя существующего секрета

prometheus-node-exporter-tls

tlsSecret.volumeName

Имя создаваемого тома

prometheus-node-exporter-tls