Prometheus-node-exporter#

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

Параметр

Описание

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

image.repository

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

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

image.tag

Тег версии образа

"v1.10.2"

image.pullPolicy

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

IfNotPresent

image.digest

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

""

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

Параметр

Описание

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

imagePullSecrets

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

- name: "image-pull-secret"

[]

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

Параметр

Описание

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

nameOverride

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

""

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

Параметр

Описание

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

fullnameOverride

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

""

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

Параметр

Описание

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

revisionHistoryLimit

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

10

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

Параметр

Описание

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

kubeRBACProxy.enabled

Включение kube-rbac-proxy для защиты конечной точки HTTP

false

kubeRBACProxy.env

Переменные окружения для kube-rbac-proxy.
Пример конфигурации:

VARIABLE: value

{}

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.21.0

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

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

8100

kubeRBACProxy.portName

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

http

kubeRBACProxy.enableHostPort

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

false

kubeRBACProxy.proxyEndpointsPort

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

8888

kubeRBACProxy.enableProxyEndpointsHostPort

Включение hostPort для конечной точки прокси

false

kubeRBACProxy.resources.request

Лимиты и запросы ресурсов для контейнера kube-rbac-proxy.
Пример конфигурации:

limits:
 cpu: 100m
 memory: 64Mi
requests:
 cpu: 10m
 memory: 32Mi
cpu: 10m
memory: 32Mi

kubeRBACProxy.resources.requests.memory

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

32Mi

kubeRBACProxy.extraVolumeMounts

Дополнительные монтирования Volume в контейнер kube-rbac-proxy.
Пример конфигурации:

- name: extra-volume
  mountPath: /extra
  readOnly: true

[]

kubeRBACProxy.tls.enabled

Включение TLS для kube-rbac-proxy

false

kubeRBACProxy.tls.tlsClientAuth

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

false

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

Параметр

Описание

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

tlsSecret.enabled

Включение использования TLS-ресурсов из Volume на Secret

false

tlsSecret.caItem

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

""

tlsSecret.certItem

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

tls.crt

tlsSecret.keyItem

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

tls.key

tlsSecret.secretName

Имя существующего Secret

prometheus-node-exporter-tls

tlsSecret.volumeName

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

prometheus-node-exporter-tls

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

Параметр

Описание

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

service.enabled

Создание Service

true

service.type

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

ClusterIP

service.clusterIP

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

""

service.port

Порт Service и контейнера

9100

service.servicePort

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

""

service.targetPort

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

9100

service.portName

Имя порта Service

metrics

service.nodePort

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

null

service.listenOnAllInterfaces

Прослушивание на всех сетевых интерфейсах

true

service.annotations.prometheus.io/scrape

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

"true"

service.labels

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

{}

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

""

service.internalTrafficPolicy

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

""

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

Параметр

Описание

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

networkPolicy.enabled

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

false

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

Параметр

Описание

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

env

Дополнительные переменные окружения для контейнера.
Пример конфигурации:

VARIABLE: value

{}

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

Параметр

Описание

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

prometheus.monitor.enabled

Создание ServiceMonitor для Prometheus Operator

false

prometheus.monitor.additionalLabels

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

{}

prometheus.monitor.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

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

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

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

""

prometheus.podMonitor.additionalLabels

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

{}

prometheus.podMonitor.podTargetLabels

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

[]

prometheus.podMonitor.apiVersion

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

""

prometheus.podMonitor.selectorOverride

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

{}

prometheus.podMonitor.attachMetadata.node

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

false

prometheus.podMonitor.jobLabel

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

""

prometheus.podMonitor.scheme

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

"http"

prometheus.podMonitor.path

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

"/metrics"

prometheus.podMonitor.basicAuth

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

{}

prometheus.podMonitor.bearerTokenSecret

Secret с bearer token для scraping-целей

{}

prometheus.podMonitor.tlsConfig

TLS-конфигурация для конечной точки scraping

{}

prometheus.podMonitor.authorization

Секция авторизации для конечной точки

{}

prometheus.podMonitor.oauth2

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

{}

prometheus.podMonitor.proxyUrl

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

""

prometheus.podMonitor.interval

Интервал scraping конечной точки

""

prometheus.podMonitor.scrapeTimeout

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

""

prometheus.podMonitor.honorTimestamps

Учет временных меток в scrape-данных

true

prometheus.podMonitor.honorLabels

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

true

prometheus.podMonitor.enableHttp2

Включение HTTP2 для scraping

""

prometheus.podMonitor.filterRunning

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

""

prometheus.podMonitor.followRedirects

Следование HTTP 3xx переадресации

""

prometheus.podMonitor.params

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

{}

prometheus.podMonitor.relabelings

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

[]

prometheus.podMonitor.metricRelabelings

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

[]

prometheus.podMonitor.sampleLimit

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

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

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

1

resources - ограничения ресурсов#

Параметр

Описание

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

resources

Лимиты и запросы ресурсов для контейнера.
Пример конфигурации:

limits:
  cpu: 200m
  memory: 50Mi
requests:
  cpu: 100m
  memory: 30Mi

{}

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

Параметр

Описание

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

restartPolicy

Политика перезапуска контейнера.
Возможные значения: Always, OnFailure, Never

null

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

Параметр

Описание

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

serviceAccount.create

Создание ServiceAccount

true

serviceAccount.name

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

~

serviceAccount.annotations

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

{}

serviceAccount.imagePullSecrets

Secret для загрузки образов

[]

serviceAccount.automountServiceAccountToken

Автоматическое монтирование токена ServiceAccount

false

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

Параметр

Описание

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

securityContext.fsGroup

ID группы для владения Volume

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

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

Параметр

Описание

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

endpoints

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

[]

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

Параметр

Описание

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

hostNetwork

Подключение Service к сети хоста

true

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

Параметр

Описание

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

hostPID

Использование PID пространства имен хоста

true

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

Параметр

Описание

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

hostIPC

Использование IPC пространства имен хоста

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 на узлах.
Пример конфигурации:

nodeAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
      - matchFields:
          - key: metadata.name
            operator: In
            values:
              - target-host-name

{}

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

Параметр

Описание

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

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

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

"true"

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

Параметр

Описание

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

podLabels

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

{}

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

Параметр

Описание

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

commonLabels

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

{}

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

Параметр

Описание

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

daemonsetAnnotations

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

{}

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

Параметр

Описание

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

releaseLabel

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

false

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

Параметр

Описание

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

dnsConfig

Пользовательская DNS-конфигурация для pod.
Пример конфигурации:

nameservers:
  - 1.2.3.4
searches:
  - ns1.svc.cluster-domain.example
  - my.dns.search.suffix
options:
  - name: ndots
    value: "2"
  - name: edns0

{}

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

Параметр

Описание

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

nodeSelector.kubernetes.io/os

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

linux

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

Параметр

Описание

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

terminationGracePeriodSeconds

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

null

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

Параметр

Описание

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

tolerations

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

- effect: NoSchedule
  operator: Exists

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

Параметр

Описание

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

terminationMessageParams.enabled

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

false

terminationMessageParams.terminationMessagePath

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

/dev/termination-log

terminationMessageParams.terminationMessagePolicy

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

File

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

Параметр

Описание

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

extraArgs

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

- --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\d+n\d+p)\d+$
- --collector.textfile.directory=/run/prometheus

[]

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

Параметр

Описание

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

extraHostVolumeMounts

Дополнительные монтирования с хоста в контейнер.
Пример конфигурации:

- name: <mountName>
  hostPath: <hostPath>
  type: ""
  mountPath: <mountPath>
  readOnly: true|false
  mountPropagation: None|HostToContainer|Bidirectional

[]

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

Параметр

Описание

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

configmaps

Дополнительные ConfigMap для монтирования.
Пример конфигурации:

- name: <configMapName>
  mountPath: <mountPath>

[]

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

Параметр

Описание

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

secrets

Дополнительные Secret для монтирования.
Пример конфигурации:

- name: <secretName>
  mountPath: <mountPath>

[]

namespaceOverride - переопределение пространства имен#

Параметр

Описание

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

namespaceOverride

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

""

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

Параметр

Описание

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

sidecarVolumeMount

Тома для sidecar-контейнеров.
Пример конфигурации:

- name: collector-textfiles
  mountPath: /run/prometheus
  readOnly: false

[]

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

Параметр

Описание

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

sidecarHostVolumeMounts

Дополнительные монтирования с хоста для sidecar-контейнеров.
Пример конфигурации:

- name: <mountName>
  hostPath: <hostPath>
  mountPath: <mountPath>
  readOnly: true
  mountPropagation: None

[]

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 - вертикальное автомасштабирование pod#

Параметр

Описание

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

verticalPodAutoscaler.enabled

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

false

verticalPodAutoscaler.controlledResources

Ресурсы, которые может контролировать VPA.
Пример конфигурации:

- cpu
- memory

[]

verticalPodAutoscaler.maxAllowed

Максимально разрешенные ресурсы для pod.
Пример конфигурации:

cpu: 200m
memory: 100Mi

{}

verticalPodAutoscaler.minAllowed

Минимально разрешенные ресурсы для pod.
Пример конфигурации:

cpu: 200m
memory: 100Mi

{}

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

Параметр

Описание

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

extraManifests

Дополнительные манифесты для развертывания в виде массива.
Пример конфигурации:

  apiVersion: v1
  kind: ConfigMap
  metadata:
    name: prometheus-extra
  data:
    extra-data: "value"

[]

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

Параметр

Описание

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

extraVolumes

Дополнительные Volume для доступа в pod.
Пример конфигурации:

- name: extra-volume
  secret:
    defaultMode: 420
    optional: false
    secretName: node-exporter-secret

[]

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

Параметр

Описание

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

extraVolumeMounts

Дополнительные монтирования Volume в контейнер.
Пример конфигурации:

- name: extra-volume
  mountPath: /extra
  readOnly: true

[]

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

Параметр

Описание

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

version

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

""