Loki#

Loki - это масштабируемая, высокодоступная система агрегации логов. В отличие от традиционных решений, Loki не индексирует содержимое логов, а использует только метаданные (метки), что делает ее более простой и экономичной в эксплуатации.

Основные задачи и возможности
  • Эффективное хранение и индексация логов — обеспечиваются за счет индексирования только меток (например, job, pod, namespace), а также хранения логов сжатыми, что снижает нагрузку на ресурсы и упрощает масштабирование.

  • Глубокая интеграция с:

    • Kubernetes — достигается за счет автоматического сбора и индексирования метаданных pod, что позволяет легко фильтровать логи по контексту кластера.

    • Grafana - можно просматривать, искать и визуализировать логи параллельно с метриками, трассировками и событиями.

  • Использование собственного языка запросов LogQL, похожего на PromQL — позволяет выполнять сложные фильтрации и агрегации логов.

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

Примечание

Loki устанавливается по умолчанию с компонентом Logging. Интеграция с Vector-aggregator и Grafana преднастроена.

Настройка#

Примечание

В инструменте Grafana преднастроена панель audit, в которой можно смотреть события аудита (если аудит был включен в DropAppConfiguration или настроен отдельно после установки кластера). Также в Grafana по умолчанию доступен Datasource loki, по которому можно искать логи аудита (job=k8s-audit), pod (job=k8s-pods) и узлов (job=k8s-nodes).

Постоянное хранение#

Примечание

По умолчанию Loki устанавливается в режиме Monolithic (бывший SingleBinary) без постоянного хранилища.

Для включения постоянного хранилища используйте следующие параметры спецификации Loki (либо компонента Logging) при установке:

values:
  singleBinary:
    persistence:
      enabled: true
      storageClass: nfs-csi # если установлен инструмент csi-driver-nfs
      size: 10Gi # определяется в зависимости от объема логов
    extraVolumes: []
    extraVolumeMounts: []

Режим SimpleScalable#

Для обеспечения высокой доступности используйте режим SimpleScalable:

values:
  deploymentMode: SimpleScalable
  loki:
    storage:
      type: s3
      s3:
        endpoint: "https://s3.example.local"
        region: "us-east-1"
        s3ForcePathStyle: true
        insecure: false
  singleBinary:
    replicas: 0
  gateway:
    enabled: true
    replicas: 2
  lokiCanary:
    enabled: true
  read:
    replicas: 1
  write:
    replicas: 1
    persistence:
      volumeClaimsEnabled: true
      storageClass: nfs-csi
      size: 200Gi
  backend:
    replicas: 1
    persistence:
      volumeClaimsEnabled: true
      storageClass: nfs-csi
      size: 200Gi

Важно

Для режима SimpleScalable требуется внешнее S3-совместимое объектное хранилище.

Режим Distributed#

Для обработки логов объемов более 1 терабайта в день используйте режим Distributed:

values:
  deploymentMode: Distributed
  loki:
    storage:
      type: s3
      s3:
        endpoint: "https://s3.example.local"
        region: "us-east-1"
        s3ForcePathStyle: true
        insecure: false
  singleBinary:
    replicas: 0 # включение основных микросервисов (по умолчанию replicas=0)
  ingester:
    replicas: 3
    persistence:
      enabled: true
      # PVC создаются как список claims (volumeClaimTemplates)
      claims:
        - name: data
          storageClass: nfs-csi
          size: 200Gi
  compactor:
    replicas: 1
    persistence:
      enabled: true
      claims:
        - name: data
          storageClass: nfs-csi
          size: 50Gi
  indexGateway:
    replicas: 2
    persistence:
      enabled: true
      claims:
        - name: data
          storageClass: nfs-csi
          size: 50Gi
  gateway:
    enabled: true
    replicas: 2
  lokiCanary:
    enabled: true

Важно

Для режима Distributed требуется внешнее S3-совместимое объектное хранилище.

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

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

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

Параметр

Описание

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

nameOverride

Переопределение базового имени ресурсов чарта для генерации имен

~

clusterLabelOverride – переопределение метки#

Параметр

Описание

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

clusterLabelOverride

Переопределение значения метки кластера для ресурсов

~

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

Параметр

Описание

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

imagePullSecrets

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

[]

kubectlImage – настройки образа kubectl#

Параметр

Описание

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

kubectlImage.registry

Адрес реестра Docker-образов

'{{ .Values.global.image.registry }}'

kubectlImage.repository

Имя репозитория Docker-образа

'{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-kubernetes/kubectl'

kubectlImage.tag

Тег Docker-образа

v1.27.16

kubectlImage.digest

Контрольная сумма (дайджест) Docker-образа. Если указано, используется вместо тега для точной идентификации образа

null

kubectlImage.pullPolicy

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

IfNotPresent

loki – конфигурация Loki#

Параметр

Описание

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

loki.readinessProbe

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

httpGet:
  path: /ready
  port: http-metrics
initialDelaySeconds: 30
timeoutSeconds: 1

loki.image.registry

Адрес реестра Docker-образов для Loki

'{{ .Values.global.image.registry }}'

loki.image.repository

Имя репозитория Docker-образа Loki

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

loki.image.tag

Тег образа контейнера

2.9.15

loki.image.digest

Контрольная сумма (дайджест) Docker-образа Loki

~

loki.image.pullPolicy

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

IfNotPresent

loki.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

loki.podAnnotations

Аннотации, добавляемые ко всем pod

{}

loki.podLabels

Метки, добавляемые ко всем pod

{}

loki.serviceAnnotations

Аннотации, добавляемые ко всем ресурсам Service

{}

loki.serviceLabels

Метки, добавляемые ко всем ресурсам Service

{}

loki.revisionHistoryLimit

Количество предыдущих версий ресурса, сохраняемых для отката

10

loki.podSecurityContext

Параметры контекста безопасности pod

fsGroup: 10001
runAsGroup: 10001
runAsNonRoot: true
runAsUser: 10001
seccompProfile:
  type: RuntimeDefault

loki.containerSecurityContext

Параметры контекста безопасности контейнера

runAsGroup: 10001
runAsNonRoot: true
runAsUser: 10001
readOnlyRootFilesystem: true
capabilities:
  drop:
    - ALL
allowPrivilegeEscalation: false

loki.enableServiceLinks

Включение переменных окружения сервисов serviceLinks в pod

true

loki.existingSecretForConfig

Имя существующего Secret с конфигурацией Loki. Если указано, используется вместо генерируемого из loki.config

""

loki.configStorageType

Тип объекта для хранения конфигурации: ConfigMap или Secret

ConfigMap

loki.externalConfigSecretName

Имя ресурса (Secret или ConfigMap), содержащего конфигурацию. Используется для именования даже при использовании встроенной конфигурации

'{{ include "loki.name" . }}'

loki.config

Содержимое файла конфигурации Loki

config: |
    {{- if .Values.enterprise.enabled}}
    {{- tpl .Values.enterprise.config . }}
    {{- else }}
    auth_enabled: {{ .Values.loki.auth_enabled }}
    {{- end }}

    {{- with .Values.loki.server }}
    server:
      {{- toYaml . | nindent 2}}
    {{- end}}

    memberlist:
    {{- if .Values.loki.memberlistConfig }}
      {{- toYaml .Values.loki.memberlistConfig | nindent 2 }}
    {{- else }}
    {{- if .Values.loki.extraMemberlistConfig}}
    {{- toYaml .Values.loki.extraMemberlistConfig | nindent 2}}
    {{- end }}
      join_members:
        - {{ include "loki.memberlist" . }}
        {{- with .Values.migrate.fromDistributed }}
        {{- if .enabled }}
        - {{ .memberlistService }}
        {{- end }}
        {{- end }}
    {{- end }}

    {{- with .Values.loki.ingester }}
    ingester:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- if .Values.loki.commonConfig}}
    common:
    {{- toYaml .Values.loki.commonConfig | nindent 2}}
      storage:
      {{- include "loki.commonStorageConfig" . | nindent 4}}
    {{- end}}

    {{- with .Values.loki.limits_config }}
    limits_config:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    runtime_config:
      file: /etc/loki/runtime-config/runtime-config.yaml

    {{- with .Values.loki.memcached.chunk_cache }}
    {{- if and .enabled (or .host .addresses) }}
    chunk_store_config:
      chunk_cache_config:
        memcached:
          batch_size: {{ .batch_size }}
          parallelism: {{ .parallelism }}
        memcached_client:
          {{- if .host }}
          host: {{ .host }}
          {{- end }}
          {{- if .addresses }}
          addresses: {{ .addresses }}
          {{- end }}
          service: {{ .service }}
    {{- end }}
    {{- end }}

    {{- if .Values.loki.schemaConfig }}
    schema_config:
    {{- toYaml .Values.loki.schemaConfig | nindent 2}}
    {{- else }}
    schema_config:
      configs:
        - from: 2022-01-11
          store: boltdb-shipper
          object_store: {{ .Values.loki.storage.type }}
          schema: v12
          index:
            prefix: loki_index_
            period: 24h
    {{- end }}

    {{ include "loki.rulerConfig" . }}

    {{- if or .Values.tableManager.retention_deletes_enabled .Values.tableManager.retention_period }}
    table_manager:
      retention_deletes_enabled: {{ .Values.tableManager.retention_deletes_enabled }}
      retention_period: {{ .Values.tableManager.retention_period }}
    {{- end }}

    {{- with .Values.loki.memcached.results_cache }}
    query_range:
      align_queries_with_step: true
      {{- if and .enabled (or .host .addresses) }}
      cache_results: {{ .enabled }}
      results_cache:
        cache:
          default_validity: {{ .default_validity }}
          memcached_client:
            {{- if .host }}
            host: {{ .host }}
            {{- end }}
            {{- if .addresses }}
            addresses: {{ .addresses }}
            {{- end }}
            service: {{ .service }}
            timeout: {{ .timeout }}
      {{- end }}
    {{- end }}

    {{- with .Values.loki.storage_config }}
    storage_config:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.query_scheduler }}
    query_scheduler:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.compactor }}
    compactor:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.analytics }}
    analytics:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.querier }}
    querier:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.index_gateway }}
    index_gateway:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.frontend }}
    frontend:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.frontend_worker }}
    frontend_worker:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    {{- with .Values.loki.distributor }}
    distributor:
      {{- tpl (. | toYaml) $ | nindent 4 }}
    {{- end }}

    tracing:
      enabled: {{ .Values.loki.tracing.enabled }}

loki.auth_enabled

Включение требования аутентификации для запросов к Loki

false

loki.memberlistConfig

Полная конфигурация memberlist, заменяющая настройки по умолчанию

{}

loki.extraMemberlistConfig

Дополнительные параметры memberlist, объединяемые с основной конфигурацией

{}

loki.tenants

Список tenant для генерации файла аутентификации htpasswd (поля name и password)

[]

loki.server

Сетевые настройки сервера Loki (порты HTTP и gRPC)

http_listen_port: 3100
grpc_listen_port: 9095

loki.limits_config

Параметры ограничений на запросы и хранение данных

enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
max_cache_freshness_per_query: 10m
split_queries_by_interval: 15m
max_entries_limit_per_query: 5000

loki.runtimeConfig

Конфигурация времени выполнения, поддерживающая динамическое обновление без перезапуска сервиса

{}

loki.commonConfig

Общая конфигурация Loki

path_prefix: /var/loki
replication_factor: 1
compactor_address: '{{ include "loki.compactorAddress" . }}'

loki.storage

Конфигурация хранилища. Автоматически формирует необходимые блоки конфигурации для выбранного типа хранилища

bucketNames:
  chunks: chunks
  ruler: ruler
  admin: admin
type: filesystem
s3:
  s3: null
  endpoint: null
  region: null
  secretAccessKey: null
  accessKeyId: null
  signatureVersion: null
  s3ForcePathStyle: false
  insecure: false
  http_config: {}
  backoff_config: {}
gcs:
  chunkBufferSize: 0
  requestTimeout: "0s"
  enableHttp2: true
azure:
  accountName: null
  accountKey: null
  connectionString: null
  useManagedIdentity: false
  useFederatedToken: false
  userAssignedId: null
  requestTimeout: null
  endpointSuffix: null
swift:
  auth_version: null
  auth_url: null
  internal: null
  username: null
  user_domain_name: null
  user_domain_id: null
  user_id: null
  password: null
  domain_id: null
  domain_name: null
  project_id: null
  project_name: null
  project_domain_id: null
  project_domain_name: null
  region_name: null
  container_name: null
  max_retries: null
  connect_timeout: null
  request_timeout: null
filesystem:
  chunks_directory: /var/loki/chunks
  rules_directory: /var/loki/rules

loki.memcached

Параметры использования внешнего кеша Memcached для чанков и результатов запросов. По умолчанию отключено

chunk_cache:
  enabled: false
  host: ""
  service: "memcached-client"
  batch_size: 256
  parallelism: 10
results_cache:
  enabled: false
  host: ""
  service: "memcached-client"
  timeout: "500ms"
  default_validity: "12h"

loki.schemaConfig

Конфигурация схем хранения индексов и чанков

{}

loki.rulerConfig

Параметры Ruler для обработки правил оповещений и recording rules

storage:
  type: local
  local:
    directory: /var/loki/rules/fake
wal:
  dir: /var/loki/ruler-wal
rule_path: /tmp/loki/rules-temp
alertmanager_url: 'http://alertmanager.dapp-alerting.svc:9093'
enable_alertmanager_v2: true
ring:
  kvstore:
    store: inmemory
enable_api: true
remote_write:
  enabled: false
  client:
    url: http://vminsert-victoria-metrics-k8s-stack.dapp-monitoring.svc:8480/insert/0/prometheus/api/v1/write

loki.structuredConfig

Структурированная конфигурация Loki. Имеет высший приоритет над loki.config, loki.schemaConfig и loki.storageConfig

{}

loki.query_scheduler

Параметры планировщика запросов (query scheduler)

max_outstanding_requests_per_tenant: 10000

loki.storage_config

Дополнительные параметры конфигурации хранилища (например, hedging-запросы)

hedging:
  at: "250ms"
  max_per_second: 20
  up_to: 3

loki.compactor

Параметры Compactor для сжатия индексов и управления сроком хранения данных

shared_store: filesystem
working_directory: /var/loki/boltdb-shipper-compactor
retention_enabled: true

loki.analytics

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

{}

loki.querier

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

{}

loki.ingester

Параметры Ingester для приема и буферизации входящих потоков логов

chunk_idle_period: 3m
chunk_block_size: 262144
chunk_retain_period: 1m
max_transfer_retries: 0
wal:
  dir: /var/loki/wal

loki.index_gateway

Параметры Index Gateway для централизованного доступа к метаданным индексов

mode: ring

loki.frontend

Параметры Frontend для оптимизации и маршрутизации запросов

scheduler_address: '{{ include "loki.querySchedulerAddress" . }}'

loki.frontend_worker

Параметры Frontend Worker для взаимодействия с планировщиком запросов

scheduler_address: '{{ include "loki.querySchedulerAddress" . }}'

loki.distributor

Параметры Distributor для приема, валидации и распределения входящих логов

{}

loki.tracing

Параметры включения и настройки распределенной трассировки

enabled: false

enterprise – настройки enterprise-функций#

Параметр

Описание

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

enterprise.enabled

Включение функций Grafana Enterprise Logs. Требует предоставления действующей лицензии

false

enterprise.version

Версия образа Grafana Enterprise Logs по умолчанию

v1.8.6

enterprise.cluster_name

Имя кластера Grafana Enterprise Logs. При пустом значении используется .Release.Name. Должно строго соответствовать имени в лицензии

~

enterprise.license.contents

Содержимое файла лицензии Grafana Enterprise Logs (license.jwt). Рекомендуется передавать через Чекбокс --set-file 'enterprise.license.contents=./license.jwt'

"NOTAVALIDLICENSE"

enterprise.useExternalLicense

Активация использования внешней лицензии, хранящейся в отдельном Secret

false

enterprise.externalLicenseName

Имя существующего Secret, содержащего лицензию

~

enterprise.externalConfigName

Имя существующего Secret, содержащего конфигурацию

""

enterprise.adminApi.enabled

Активация административного API. При отключении в enterprise-режиме необходимо установить auth.type: trust или auth_enabled: false

true

enterprise.config

Специфичные для enterprise-режима параметры конфигурации config.yaml

config: |
  {{- if .Values.enterprise.adminApi.enabled }}
  {{- if or .Values.minio.enabled (eq .Values.loki.storage.type "s3") (eq .Values.loki.storage.type "gcs") (eq .Values.loki.storage.type "azure") }}
  admin_client:
    storage:
      s3:
        bucket_name: {{ .Values.loki.storage.bucketNames.admin }}
  {{- end }}
  {{- end }}
  auth:
    type: {{ .Values.enterprise.adminApi.enabled | ternary "enterprise" "trust" }}
  auth_enabled: {{ .Values.loki.auth_enabled }}
  cluster_name: {{ include "loki.clusterName" . }}
  license:
    path: /etc/loki/license/license.jwt

enterprise.image.registry

Адрес реестра Docker-образов

docker.io

enterprise.image.repository

Имя репозитория Docker-образа

grafana/enterprise-logs

enterprise.image.tag

Тег образа контейнера

~

enterprise.image.digest

Контрольная сумма (дайджест) Docker-образа

~

enterprise.image.pullPolicy

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

IfNotPresent

enterprise.adminToken.secret

Имя пользовательского Secret для Администратор-токена, используемого Job tokengen и provisioner

~

enterprise.adminToken.additionalNamespaces

Список дополнительных пространств имен для создания токенов. Полезно, если Grafana развернута в другом пространстве имен

[]

enterprise.canarySecret

Имя пользовательского Secret для хранения canary-токена

~

enterprise.tokengen.enabled

Активация Job tokengen при развертывании

true

enterprise.tokengen.targetModule

Список модулей Loki, загружаемых Job tokengen (через запятую)

"tokengen"

enterprise.tokengen.extraArgs

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

[]

enterprise.tokengen.env

Переменные окружения контейнера

[]

enterprise.tokengen.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

enterprise.tokengen.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

enterprise.tokengen.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

enterprise.tokengen.extraVolumes

Дополнительные Volume для pod tokengen

[]

enterprise.tokengen.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

enterprise.tokengen.securityContext

Контекст безопасности для pod tokengen (запуск от пользователя enterprise-logs, uid=10001)

runAsNonRoot: true
runAsGroup: 10001
runAsUser: 10001
fsGroup: 10001

enterprise.tokengen.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

enterprise.tokengen.priorityClassName

Имя PriorityClass для pod

""

enterprise.provisioner.enabled

Активация Job provisioner при развертывании

true

enterprise.provisioner.provisionedSecretPrefix

Префикс имени Secret для хранения созданных (provisioned) токенов

~

enterprise.provisioner.additionalTenants

Список дополнительных tenant для создания. Для каждого арендатора создаются политики чтения и записи с соответствующим токеном. Требуется указать name и namespace для Secret с токеном.
Пример конфигурации:

additionalTenants:
 - name: loki
   secretNamespace: grafana

[]

enterprise.provisioner.env

Переменные окружения контейнера

[]

enterprise.provisioner.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

enterprise.provisioner.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

enterprise.provisioner.priorityClassName

Имя PriorityClass для pod

~

enterprise.provisioner.securityContext

Контекст безопасности для pod provisioner (запуск от пользователя enterprise-logs, uid=10001)

runAsNonRoot: true
runAsGroup: 10001
runAsUser: 10001
fsGroup: 10001

enterprise.provisioner.image.registry

Адрес реестра Docker-образов

docker.io

enterprise.provisioner.image.repository

Имя репозитория Docker-образа

grafana/enterprise-logs-provisioner

enterprise.provisioner.image.tag

Тег образа контейнера

~

enterprise.provisioner.image.digest

Контрольная сумма (дайджест) Docker-образа

~

enterprise.provisioner.image.pullPolicy

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

IfNotPresent

enterprise.provisioner.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

migrate – параметры миграции с другого Helm-чарта#

Параметр

Описание

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

migrate.fromDistributed.enabled

Включение режим миграции с распределенного Helm-чарта (например, loki-distributed или enterprise-logs)

false

migrate.fromDistributed.memberlistService

DNS-адрес службы memberlist существующего распределенного развертывания для подключения нового кластера

""

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

Параметр

Описание

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

serviceAccount.create

Включение автоматического создания ServiceAccount

true

serviceAccount.name

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

~

serviceAccount.imagePullSecrets

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

[]

serviceAccount.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

serviceAccount.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

serviceAccount.automountServiceAccountToken

Включение автоматического монтирования токена API в pod. Установите false для отключения

true

rbac – настройки RBAC (управление доступом на основе ролей)#

Параметр

Описание

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

rbac.pspEnabled

Активация создания PodSecurityPolicy (для кластеров Kubernetes с поддержкой PSP)

false

rbac.sccEnabled

Активация создания SecurityContextConstraints (SCC)

false

rbac.pspAnnotations

Аннотации, добавляемые к ресурсу PodSecurityPolicy

{}

rbac.namespaced

Включение ограничения области действия правил RBAC текущим пространством имен (вместо кластера). Полезно при необходимости глобального наблюдения за ConfigMap

false

test – параметры опционального Helm-теста#

Параметр

Описание

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

test.enabled

Активация выполнения опционального теста Helm (helm test)

false

test.prometheusAddress

URL сервера Prometheus, используемый для выполнения тестовых запросов

"http://prometheus:9090"

test.timeout

Максимальное время выполнения теста (тайм-аут) перед завершением с ошибкой

1m

test.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

test.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

test.image.registry

Адрес реестра Docker-образов для canary-образа, используемого в тесте

docker.io

test.image.repository

Имя репозитория Docker-образа для canary-образа

grafana/loki-helm-test

test.image.tag

Тег образа контейнера

~

test.image.digest

Контрольная сумма (дайджест) Docker-образа

~

test.image.pullPolicy

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

IfNotPresent

monitoring – параметры мониторинга Loki#

Параметр

Описание

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

monitoring.dashboards.enabled

Включение создания ConfigMap с дашбордами для мониторинга Loki

true

monitoring.dashboards.namespace

Пространство имен для создания ConfigMap с дашбордами (если отличается от целевого)

~

monitoring.dashboards.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.dashboards.labels

Метки, добавляемые ко всем создаваемым ресурсам

grafana_dashboard: "1"

monitoring.rules.enabled

Активация создания ресурса PrometheusRule с правилами агрегации для Loki

true

monitoring.rules.alerting

Активация правил оповещения

true

monitoring.rules.disabled

Список отключаемых оповещений. Для полного отключения рекомендуется использовать monitoring.rules.alerting: false

{}

monitoring.rules.namespace

Пространство имен для создания ресурса PrometheusRule

~

monitoring.rules.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.rules.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.rules.additionalRuleLabels

Дополнительные метки, применяемые ко всем оповещениям в PrometheusRule

{}

monitoring.rules.additionalGroups

Дополнительные группы правил, добавляемые в конфигурацию

[]

monitoring.serviceMonitor.enabled

Активация создания ServiceMonitor для Prometheus Operator

true

monitoring.serviceMonitor.namespaceSelector

Селектор пространства имен для ресурса ServiceMonitor

{}

monitoring.serviceMonitor.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.serviceMonitor.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.serviceMonitor.interval

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

15s

monitoring.serviceMonitor.scrapeTimeout

Тайм-аут сбора метрик

~

monitoring.serviceMonitor.relabelings

Правила фильтрации и преобразования меток, применяемые к целям сбора до начала сбора метрик

[]

monitoring.serviceMonitor.metricRelabelings

Правила фильтрации и преобразования меток, применяемые к собранным метрикам

[]

monitoring.serviceMonitor.scheme

Схема подключения.
Возможные значения: http или https

http

monitoring.serviceMonitor.tlsConfig

Настройки TLS-параметров для безопасного сбора метрик Prometheus по протоколу HTTP

~

monitoring.serviceMonitor.metricsInstance.enabled

Активация создания ресурса MetricsInstance для Grafana Agent Operator

true

monitoring.serviceMonitor.metricsInstance.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.serviceMonitor.metricsInstance.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.serviceMonitor.metricsInstance.remoteWrite

Конфигурация удаленной записи (remote write) для MetricsInstance. При указании создается соответствующий ресурс

~

monitoring.selfMonitoring.enabled

Активация самодиагностики: Loki собирает собственные логи. Требует наличия Grafana Agent Operator

false

monitoring.selfMonitoring.tenant.name

Имя tenant, используемого для самодиагностики

"self-monitoring"

monitoring.selfMonitoring.tenant.secretNamespace

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

"{{ .Release.Namespace }}"

monitoring.selfMonitoring.grafanaAgent.installOperator

Включение управления установкой Grafana Agent Operator и его CRD. Примечание: при helm upgrade CRD не обновляются автоматически

true

monitoring.selfMonitoring.grafanaAgent.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.selfMonitoring.grafanaAgent.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.selfMonitoring.grafanaAgent.enableConfigReadAPI

Активация API чтения конфигурации на порту 8080 агента

false

monitoring.selfMonitoring.grafanaAgent.priorityClassName

Имя PriorityClass для pod

~

monitoring.selfMonitoring.grafanaAgent.resources

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

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

{}

monitoring.selfMonitoring.grafanaAgent.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

monitoring.selfMonitoring.podLogs.apiVersion

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

monitoring.grafana.com/v1alpha1

monitoring.selfMonitoring.podLogs.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.selfMonitoring.podLogs.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.selfMonitoring.podLogs.relabelings

Правила фильтрации и преобразования меток, применяемые к целям сбора до начала сбора метрик

[]

monitoring.selfMonitoring.podLogs.additionalPipelineStages

Дополнительные этапы конвейера (pipeline stages) для обработки логов после сбора

[]

monitoring.selfMonitoring.logsInstance.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.selfMonitoring.logsInstance.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.selfMonitoring.logsInstance.clients

Конфигурация дополнительных клиентов для удаленной записи логов

~

monitoring.lokiCanary.enabled

Активация компонента loki-canary для проверки операций записи и чтения логов

false

monitoring.lokiCanary.labelname

Имя метки, используемой для поиска в Loki при выполнении проверок

pod

monitoring.lokiCanary.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.lokiCanary.podLabels

Метки, добавляемые к pod loki-canary

{}

monitoring.lokiCanary.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

monitoring.lokiCanary.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

monitoring.lokiCanary.extraArgs

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

[]

monitoring.lokiCanary.extraEnv

Дополнительные переменные окружения для pod loki-canary

[]

monitoring.lokiCanary.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

monitoring.lokiCanary.resources

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

{}

monitoring.lokiCanary.dnsConfig

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

{}

monitoring.lokiCanary.nodeSelector

Селектор узлов для планирования pod

{}

monitoring.lokiCanary.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

monitoring.lokiCanary.priorityClassName

Имя PriorityClass для pod

~

monitoring.lokiCanary.image.registry

Адрес реестра Docker-образов для loki-canary

docker.io

monitoring.lokiCanary.image.repository

Имя репозитория Docker-образа для loki-canary

grafana/loki-canary

monitoring.lokiCanary.image.tag

Тег образа контейнера

~

monitoring.lokiCanary.image.digest

Контрольная сумма (дайджест) Docker-образа для loki-canary

~

monitoring.lokiCanary.image.pullPolicy

Политика загрузки Docker-образа для loki-canary

IfNotPresent

monitoring.lokiCanary.updateStrategy

Стратегия обновления ресурса

type: RollingUpdate
rollingUpdate:
  maxUnavailable: 1

write – настройки write-компонента для Simple Scalable Deployment#

Параметр

Описание

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

write.replicas

Количество реплик pod

3

write.autoscaling.enabled

Активация автоматического масштабирования (HPA) для write

false

write.autoscaling.minReplicas

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

1

write.autoscaling.maxReplicas

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

3

write.autoscaling.targetCPUUtilizationPercentage

Целевая нагрузка CPU в процентах для write

60

write.autoscaling.targetMemoryUtilizationPercentage

Целевая нагрузка памяти в процентах для write

~

write.autoscaling.behavior

Политики поведения при масштабировании (скорость добавления/удаления реплик)

scaleUp:
  policies:
    - type: Pods
      value: 1
      periodSeconds: 900
scaleDown:
  policies:
    - type: Pods
      value: 1
      periodSeconds: 1800
  stabilizationWindowSeconds: 3600

write.image.registry

Адрес реестра Docker-образов. Переопределяет значение loki.image.registry

~

write.image.repository

Имя репозитория Docker-образа. Переопределяет значение loki.image.repository

~

write.image.tag

Тег образа контейнера

~

write.priorityClassName

Имя PriorityClass для pod

~

write.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

write.podAnnotations

Аннотации, добавляемые к pod write

{}

write.podLabels

Метки, добавляемые к pod write

{}

write.selectorLabels

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

{}

write.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

write.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

write.targetModule

Список модулей Loki, загружаемых write (через запятую)

"write"

write.extraArgs

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

[]

write.extraEnv

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

[]

write.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

write.lifecycle

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

{}

write.initContainers

Список init-контейнеров, запускаемых перед основными

[]

write.extraContainers

Дополнительные контейнеры sidecar в pod write

[]

write.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

write.extraVolumes

Дополнительные Volumes для pod write

[]

write.extraVolumeClaimTemplates

Дополнительные VolumeClaimTemplates для StatefulSet

[]

write.resources

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

{}

write.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

300

write.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

affinity: |
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            {{- include "loki.writeSelectorLabels" . | nindent 10 }}
        topologyKey: kubernetes.io/hostname

write.dnsConfig

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

{}

write.nodeSelector

Селектор узлов для планирования pod

{}

write.topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

write.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

write.podManagementPolicy

Политика управления pod в StatefulSet. По умолчанию используется параллельное развертывание

"Parallel"

write.persistence.volumeClaimsEnabled

Активация создания VolumeClaimTemplates в спецификации pod

true

write.persistence.dataVolumeParameters

Параметры данных Volume, используемые при отключенном VolumeClaimsEnabled (например, emptyDir)

emptyDir: {}

write.persistence.enableStatefulSetAutoDeletePVC

Активация автоматического удаления PVC при удалении ресурса StatefulSet

false

write.persistence.enabled

Активация использования Volume (Persistent Volume)

false

write.persistence.size

Запрашиваемый размер Volume (Persistent Volume)

10Gi

write.persistence.storageClass

Имя StorageClass для динамического выделения Volume

~

write.persistence.selector

Селектор меток для выбора существующего Volume

~

tableManager – настройки устаревшего компонента table-manager#

Параметр

Описание

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

tableManager.enabled

Активация устаревшего table-manager

false

tableManager.image.registry

Адрес реестра Docker-образов. Переопределяет значение loki.image.registry

~

tableManager.image.repository

Имя репозитория Docker-образа. Переопределяет значение loki.image.repository

~

tableManager.image.tag

Тег образа контейнера

~

tableManager.command

Команда запуска контейнера, переопределяющая стандартный entrypoint образа контейнера

~

tableManager.priorityClassName

Имя PriorityClass для pod

~

tableManager.podLabels

Метки, добавляемые к pod table-manager

{}

tableManager.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

tableManager.podAnnotations

Аннотации, добавляемые к pod table-manager

{}

tableManager.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

tableManager.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

tableManager.extraArgs

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

[]

tableManager.extraEnv

Дополнительные переменные окружения для pod table-manager

[]

tableManager.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

tableManager.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

tableManager.extraVolumes

Дополнительные Volume для pod table-manager

[]

tableManager.resources

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

{}

tableManager.extraContainers

Дополнительные контейнеры sidecars в pod table-manager

[]

tableManager.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

30

tableManager.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

affinity: |
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            {{- include "loki.tableManagerSelectorLabels" . | nindent 10 }}
        topologyKey: kubernetes.io/hostname
    preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchLabels:
              {{- include "loki.tableManagerSelectorLabels" . | nindent 12 }}
          topologyKey: failure-domain.beta.kubernetes.io/zone

tableManager.dnsConfig

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

{}

tableManager.nodeSelector

Селектор узлов для планирования pod

{}

tableManager.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

tableManager.retention_deletes_enabled

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

false

tableManager.retention_period

Длительность периода хранения данных (в часах), после которого данные удаляются

0

read – настройки pod read для Simple Scalable Deployment#

Параметр

Описание

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

read.replicas

Количество реплик pod

3

read.autoscaling.enabled

Активация автоматического масштабирования (HPA) для read. Используется только при queryIndex.enabled: true

false

read.autoscaling.minReplicas

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

1

read.autoscaling.maxReplicas

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

3

read.autoscaling.targetCPUUtilizationPercentage

Целевая нагрузка CPU в процентах для read

60

read.autoscaling.targetMemoryUtilizationPercentage

Целевая нагрузка памяти в процентах для read

~

read.autoscaling.behavior

Политики поведения при масштабировании (скорость добавления и удаления реплик).
Пример конфигурации:

scaleUp:
 stabilizationWindowSeconds: 300
 policies:
 - type: Pods
   value: 1
   periodSeconds: 60
scaleDown:
 stabilizationWindowSeconds: 300
 policies:
 - type: Pods
   value: 1
   periodSeconds: 180

{}

read.image.registry

Адрес реестра Docker-образов. Переопределяет значение loki.image.registry

~

read.image.repository

Имя репозитория Docker-образа. Переопределяет значение loki.image.repository

~

read.image.tag

Тег образа контейнера

~

read.priorityClassName

Имя PriorityClass для pod

~

read.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

read.podAnnotations

Аннотации, добавляемые к pod read

{}

read.podLabels

Метки, добавляемые к pod read

{}

read.selectorLabels

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

{}

read.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

read.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

read.targetModule

Список модулей Loki, загружаемых компонентом read (через запятую)

"read"

read.legacyReadTarget

Определяет архитектуру масштабируемого развертывания. Позволяет использовать устаревшую (legacy) схему с двумя целевыми направлениями вместо актуальной схемы с тремя направлениями.
Возможные значения:
- true – используется двухкомпонентное развертывание: только для чтения и записи (read, write).
- false – используется актуальное трехкомпонентное развертывание: для чтения, записи и бэкенда (read, write, backend).

false

read.extraArgs

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

[]

read.extraContainers

Дополнительные контейнеры sidecars в pod read

[]

read.extraEnv

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

[]

read.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

read.lifecycle

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

{}

read.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

read.extraVolumes

Дополнительные Volume для pod read

[]

read.resources

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

{}

read.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

30

read.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

affinity: |
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            {{- include "loki.readSelectorLabels" . | nindent 10 }}
        topologyKey: kubernetes.io/hostname

read.dnsConfig

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

{}

read.nodeSelector

Селектор узлов для планирования pod

{}

read.topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

read.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

read.podManagementPolicy

Политика управления pod. По умолчанию используется параллельное развертывание

"Parallel"

read.persistence.enableStatefulSetAutoDeletePVC

Активация автоматического удаления PVC при удалении ресурса StatefulSet (если применимо)

true

read.persistence.size

Запрашиваемый размер Volume (Persistent Volume)

10Gi

read.persistence.storageClass

Имя StorageClass для динамического выделения Volume

~

read.persistence.selector

Селектор меток для выбора существующего Volume

~

backend – параметры pod для Simple Scalable Deployment#

Параметр

Описание

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

backend.replicas

Количество реплик pod

3

backend.autoscaling.enabled

Активация автоматического масштабирования (HPA) для backend

false

backend.autoscaling.minReplicas

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

1

backend.autoscaling.maxReplicas

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

3

backend.autoscaling.targetCPUUtilizationPercentage

Целевая нагрузка CPU в процентах для backend

60

backend.autoscaling.targetMemoryUtilizationPercentage

Целевая нагрузка памяти в процентах для backend

~

backend.autoscaling.behavior

Политики поведения при масштабировании (скорость добавления и удаления реплик).
Пример конфигурации:

scaleUp:
 stabilizationWindowSeconds: 300
 policies:
 - type: Pods
   value: 1
   periodSeconds: 60
scaleDown:
 stabilizationWindowSeconds: 300
 policies:
 - type: Pods
   value: 1
   periodSeconds: 180

{}

backend.image.registry

Адрес реестра Docker-образов. Переопределяет значение loki.image.registry

~

backend.image.repository

Имя репозитория Docker-образа. Переопределяет значение loki.image.repository

~

backend.image.tag

Тег образа контейнера

~

backend.priorityClassName

Имя PriorityClass для pod

~

backend.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

backend.podAnnotations

Аннотации, добавляемые к pod backend

{}

backend.podLabels

Метки, добавляемые к pod backend

{}

backend.selectorLabels

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

{}

backend.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

backend.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

backend.targetModule

Список модулей Loki, загружаемых компонентом backend (через запятую)

"backend"

backend.extraArgs

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

[]

backend.extraEnv

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

[]

backend.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

backend.initContainers

Список init-контейнеров, запускаемых перед основными

[]

backend.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

backend.extraVolumes

Дополнительные Volume для pod backend

[]

backend.resources

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

{}

backend.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

300

backend.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

affinity: |
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            {{- include "loki.backendSelectorLabels" . | nindent 10 }}
        topologyKey: kubernetes.io/hostname

backend.dnsConfig

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

{}

backend.nodeSelector

Селектор узлов для планирования pod

{}

backend.topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

backend.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

backend.podManagementPolicy

Политика управления pod в StatefulSet. По умолчанию используется параллельное развертывание

"Parallel"

backend.persistence.volumeClaimsEnabled

Активация создания VolumeClaimTemplates в спецификации pod

false

backend.persistence.dataVolumeParameters

Параметры данных Volume, используемые при отключенном VolumeClaimsEnabled (например, emptyDir)

emptyDir: {}

backend.persistence.enableStatefulSetAutoDeletePVC

Активация автоматического удаления PVC при удалении ресурса StatefulSet

true

backend.persistence.size

Запрашиваемый размер Volume (Persistent Volume)

10Gi

backend.persistence.storageClass

Имя StorageClass для динамического выделения Volume

~

backend.persistence.selector

Селектор меток для выбора существующего Volume

~

singleBinary – настройки развертывания Loki в режиме single binary#

Параметр

Описание

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

singleBinary.replicas

Количество реплик pod

1

singleBinary.autoscaling.enabled

Активация автоматического масштабирования (HPA) для singleBinary

false

singleBinary.autoscaling.minReplicas

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

1

singleBinary.autoscaling.maxReplicas

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

3

singleBinary.autoscaling.targetCPUUtilizationPercentage

Целевая нагрузка CPU в процентах для singleBinary

60

singleBinary.autoscaling.targetMemoryUtilizationPercentage

Целевая нагрузка памяти в процентах для singleBinary

~

singleBinary.image.registry

Адрес реестра Docker-образов. Переопределяет значение loki.image.registry

~

singleBinary.image.repository

Имя репозитория Docker-образа. Переопределяет значение loki.image.repository

~

singleBinary.image.tag

Тег образа контейнера

~

singleBinary.priorityClassName

Имя PriorityClass для pod

~

singleBinary.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

singleBinary.podAnnotations

Аннотации, добавляемые к pod singleBinary

{}

singleBinary.podLabels

Метки, добавляемые к pod singleBinary

{}

singleBinary.selectorLabels

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

{}

singleBinary.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

singleBinary.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

singleBinary.targetModule

Список модулей Loki, загружаемых компонентом singleBinary (через запятую)

"all"

singleBinary.extraArgs

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

[]

singleBinary.extraEnv

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

[]

singleBinary.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

singleBinary.extraContainers

Дополнительные контейнеры sidecars в pod singleBinary

[]

singleBinary.initContainers

Список init-контейнеров, запускаемых перед основными

[]

singleBinary.extraVolumes

Дополнительные Volume для pod singleBinary

- name: loki-alerting-rules
  configMap:
    name: loki-alerting-rules
- name: loki-rules-generated
  emptyDir: {}
- name: data
  emptyDir: {}

singleBinary.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

- name: data
  mountPath: /var/loki
- name: loki-alerting-rules
  mountPath: /var/loki/rules/fake

singleBinary.resources

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

limits:
  cpu: 4
  memory: 12Gi
requests:
  cpu: 100m
  memory: 128Mi

singleBinary.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

30

singleBinary.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

affinity: |
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            {{- include "loki.singleBinarySelectorLabels" . | nindent 10 }}
        topologyKey: kubernetes.io/hostname

singleBinary.dnsConfig

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

{}

singleBinary.nodeSelector

Селектор узлов для планирования pod

{}

singleBinary.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

singleBinary.persistence.enableStatefulSetAutoDeletePVC

Активация автоматического удаления PVC при удалении ресурса StatefulSet

true

singleBinary.persistence.enabled

Активация использования Volume (Persistent Volume)

false

singleBinary.persistence.size

Запрашиваемый размер Volume (Persistent Volume)

10Gi

singleBinary.persistence.storageClass

Имя StorageClass для динамического выделения Volume

~

singleBinary.persistence.selector

Селектор меток для выбора существующего Volume

~

ingress – настройки Ingress для маршрутизации внешнего трафика#

Параметр

Описание

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

ingress.enabled

Включение Ingress для компонента сервера

false

ingress.ingressClassName

Имя класса контроллера Ingress

""

ingress.annotations

Аннотации Ingress.
Пример конфигурации:

nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: loki-distributed-basic-auth
nginx.ingress.kubernetes.io/auth-secret-type: auth-map
nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header X-Scope-OrgID $remote_user;

{}

ingress.labels

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

blackbox.monitoring.exclude: "true"

{}

ingress.paths.write

Пути для маршрутизации write-трафика

- /api/prom/push
- /loki/api/v1/push

ingress.paths.read

Пути для маршрутизации read-трафика

- /api/prom/tail
- /loki/api/v1/tail
- /loki/api
- /api/prom/rules
- /loki/api/v1/rules
- /prometheus/api/v1/rules
- /prometheus/api/v1/alerts

ingress.paths.singleBinary

Пути для маршрутизации трафика в режиме singleBinary

- /api/prom/push
- /loki/api/v1/push
- /api/prom/tail
- /loki/api/v1/tail
- /loki/api
- /api/prom/rules
- /loki/api/v1/rules
- /prometheus/api/v1/rules
- /prometheus/api/v1/alerts

ingress.hosts

Массив хостов Ingress

- loki.example.com

ingress.tls

Массив объектов TLS для Ingress.
Пример конфигурации:

- hosts:
   - loki.example.com
  secretName: loki-distributed-tls

[]

memberlist – настройки службы memberlist#

Параметр

Описание

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

memberlist.service.publishNotReadyAddresses

Публикация адресов неготовых pod в службе memberlist

false

gateway – настройки nginx gateway для маршрутизации трафика к Loki#

Параметр

Описание

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

gateway.enabled

Активация gateway

false

gateway.replicas

Количество реплик pod

1

gateway.verboseLogging

Активация логирования HTTP-запросов с кодами состояния 2xx и 3xx

true

gateway.autoscaling.enabled

Активация автоматического масштабирования (HPA) для gateway

false

gateway.autoscaling.minReplicas

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

1

gateway.autoscaling.maxReplicas

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

3

gateway.autoscaling.targetCPUUtilizationPercentage

Целевая нагрузка CPU в процентах для gateway

60

gateway.autoscaling.targetMemoryUtilizationPercentage

Целевая нагрузка памяти в процентах для gateway

~

gateway.autoscaling.behavior

Политики поведения при масштабировании (скорость добавления и удаления реплик).
Пример конфигурации:

scaleUp:
 stabilizationWindowSeconds: 300
 policies:
 - type: Pods
   value: 1
   periodSeconds: 60
scaleDown:
 stabilizationWindowSeconds: 300
 policies:
 - type: Pods
   value: 1
   periodSeconds: 180

{}

gateway.deploymentStrategy.type

Стратегия обновления ресурса Deployment gateway

RollingUpdate

gateway.image.registry

Адрес реестра Docker-образов для gateway

docker.io

gateway.image.repository

Имя репозитория Docker-образа для gateway

nginxinc/nginx-unprivileged

gateway.image.tag

Тег образа контейнера

1.24-alpine

gateway.image.digest

Контрольная сумма (дайджест) Docker-образа для gateway

~

gateway.image.pullPolicy

Политика загрузки Docker-образа для gateway

IfNotPresent

gateway.priorityClassName

Имя PriorityClass для pod

~

gateway.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

gateway.podAnnotations

Аннотации, добавляемые к pod gateway

{}

gateway.podLabels

Метки, добавляемые к pod gateway

{}

gateway.extraArgs

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

[]

gateway.extraEnv

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

[]

gateway.extraEnvFrom

Источники переменных окружения (Secret или ConfigMap) для pod

[]

gateway.lifecycle

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

{}

gateway.extraVolumes

Дополнительные Volume для pod gateway

[]

gateway.extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]

gateway.podSecurityContext

Параметры контекста безопасности pod

fsGroup: 101
runAsGroup: 101
runAsNonRoot: true
runAsUser: 101

gateway.containerSecurityContext

Параметры контекста безопасности контейнера

readOnlyRootFilesystem: true
capabilities:
  drop:
    - ALL
allowPrivilegeEscalation: false

gateway.resources

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

{}

gateway.extraContainers

Дополнительные контейнеры sidecars в pod gateway

[]

gateway.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

30

gateway.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

affinity: |
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchLabels:
            {{- include "loki.gatewaySelectorLabels" . | nindent 10 }}
        topologyKey: kubernetes.io/hostname

gateway.dnsConfig

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

{}

gateway.nodeSelector

Селектор узлов для планирования pod

{}

gateway.topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам

[]

gateway.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

gateway.service.port

Порт ресурса Service gateway

80

gateway.service.type

Тип Service

ClusterIP

gateway.service.clusterIP

Статический ClusterIP для ресурса Service gateway

~

gateway.service.nodePort

NodePort для HTTP-порта Service. При пустом значении порт выделяется автоматически

~

gateway.service.loadBalancerIP

Статический IP-адрес для ресурса Service при типе LoadBalancer

~

gateway.service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

gateway.service.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

gateway.ingress.enabled

Включение Ingress для компонента сервера

false

gateway.ingress.ingressClassName

Имя класса контроллера Ingress

""

gateway.ingress.annotations

Аннотации Ingress

{}

gateway.ingress.labels

Дополнительные метки Ingress

{}

gateway.ingress.hosts

Массив хостов Ingress

- host: gateway.loki.example.com
  paths:
    - path: /

gateway.ingress.tls

Массив объектов TLS для Ingress

- secretName: loki-gateway-tls
  hosts:
    - gateway.loki.example.com

gateway.basicAuth.enabled

Активация базовой аутентификации для gateway

false

gateway.basicAuth.username

Имя пользователя для базовой аутентификации gateway

~

gateway.basicAuth.password

Пароль для базовой аутентификации gateway

~

gateway.basicAuth.htpasswd

Генерация файла htpasswd на основе списка loki.tenants. Если loki.tenants не задан, используются значения gateway.basicAuth.username и gateway.basicAuth.password

htpasswd: >-
  {{ if .Values.loki.tenants }}

    {{- range $t := .Values.loki.tenants }}
  {{ htpasswd (required "All tenants must have a 'name' set" $t.name) (required "All tenants must have a 'password' set" $t.password) }}

    {{- end }}
  {{ else }} {{ htpasswd (required "'gateway.basicAuth.username' is required" .Values.gateway.basicAuth.username) (required "'gateway.basicAuth.password' is required" .Values.gateway.basicAuth.password) }} {{ end }}

gateway.basicAuth.existingSecret

Имя существующего Secret, содержащего данные для базовой аутентификации. Должен содержать ключ .htpasswd

~

gateway.readinessProbe

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

httpGet:
  path: /
  port: http
initialDelaySeconds: 15
timeoutSeconds: 1

gateway.nginxConfig.enableIPv6

Активация прослушивания IPv6-адресов. Отключите в средах, использующих только IPv4

false

gateway.nginxConfig.logFormat

Формат логов Nginx

logFormat: |-
  main '$remote_addr - $remote_user [$time_local]  $status '
          '"$request" $body_bytes_sent "$http_referer" '
          '"$http_user_agent" "$http_x_forwarded_for"';

gateway.nginxConfig.serverSnippet

Пользовательская конфигурация, добавляемая в блок server Nginx

""

gateway.nginxConfig.httpSnippet

Пользовательская конфигурация, добавляемая в блок http Nginx. Поддерживает шаблонизацию через функцию tpl

httpSnippet: >-
   {{ if .Values.loki.tenants }}proxy_set_header X-Scope-OrgID $remote_user;{{ end }}

gateway.nginxConfig.customReadUrl

Переопределение URL-адреса для маршрутизации read-трафика

~

gateway.nginxConfig.customWriteUrl

Переопределение URL-адреса для маршрутизации write-трафика

~

gateway.nginxConfig.customBackendUrl

Переопределение URL-адреса для маршрутизации backend-трафика

~

gateway.nginxConfig.resolver

Переопределение адреса DNS-резолвера в конфигурации Nginx

""

gateway.nginxConfig.file

Содержимое основного конфигурационного файла Nginx. Поддерживает шаблонизацию через функцию tpl

file: |
  {{- include "loki.nginxFile" . | indent 2 -}}

networkPolicy – настройки NetworkPolicy для ограничения сетевого доступа#

Параметр

Описание

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

networkPolicy.enabled

Активация создания ресурсов NetworkPolicy

false

networkPolicy.flavor

Тип создаваемых политик: стандартные NetworkPolicy (kubernetes) или политики Cilium (cilium)

kubernetes

networkPolicy.metrics.podSelector

Селектор pod, которым разрешен доступ к порту метрик. Также требуется указания namespaceSelector

{}

networkPolicy.metrics.namespaceSelector

Селектор пространств имен, которым разрешен доступ к порту метрик

{}

networkPolicy.metrics.cidrs

CIDR-диапазоны, которым разрешен доступ к порту метрик. Включает сети kubelet при использовании namespaceSelector

[]

networkPolicy.ingress.podSelector

Селектор pod, которым разрешен доступ к HTTP-порту. Требует также указания namespaceSelector

{}

networkPolicy.ingress.namespaceSelector

Селектор пространств имен, которым разрешен доступ к HTTP-порту

{}

networkPolicy.alertmanager.port

Порт Alertmanager для отправки оповещений

9093

networkPolicy.alertmanager.podSelector

Селектор pod alertmanager. Требует также указания namespaceSelector

{}

networkPolicy.alertmanager.namespaceSelector

Пространство имен, в котором развернут Alertmanager

{}

networkPolicy.externalStorage.ports

Порты внешнего хранилища (например, AWS S3), к которым требуется доступ

[]

networkPolicy.externalStorage.cidrs

CIDR-диапазоны для ограничения доступа к внешнему хранилищу

[]

networkPolicy.discovery.port

Порт, используемый для discovery-запросов

~

networkPolicy.discovery.podSelector

Селектор pod для discovery-запросов. Требует также указания namespaceSelector

{}

networkPolicy.discovery.namespaceSelector

Пространство имен, в котором развернуты pod для discovery-запросов

{}

networkPolicy.egressWorld.enabled

Включение дополнительных правил исходящего трафика (egress) во внешние сети для компонентов write, read и backend с использованием Cilium

false

networkPolicy.egressKubeApiserver.enabled

Активация дополнительных правил исходящего трафика к kube-apiserver для backend через Cilium

false

minio – параметры minio subchart#

Параметр

Описание

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

minio.enabled

Включение subchart MinIO

false

minio.replicas

Количество реплик pod

1

minio.drivesPerNode

Количество дисков на узле MinIO. Минимальное значение – 2 диска для erasure-кодирования (общее число дисков: drivesPerNode * replicas)

2

minio.rootUser

Имя корневого пользователя MinIO

enterprise-logs

minio.rootPassword

Пароль корневого пользователя MinIO

supersecret

minio.buckets

Список бакетов MinIO

- name: chunks
  policy: none
  purge: false
- name: ruler
  policy: none
  purge: false
- name: admin
  policy: none
  purge: false

minio.persistence.size

Размер Volume MinIO

5Gi

minio.resources

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

requests:
  cpu: 100m
  memory: 128Mi

useExistingAlertingGroup – использование существующей группы оповещений#

Параметр

Описание

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

useExistingAlertingGroup.enabled

Включение использования существующей группы оповещений

false

useExistingAlertingGroup.configmapName

Имя ConfigMap с существующей группой оповещений

""

extraObjects – дополнительные объекты Helm-чарта#

Параметр

Описание

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

extraObjects

Добавление дополнительных динамических объектов в Helm-чарте

extraObjects:
 - apiVersion: v1
   kind: ConfigMap
   metadata:
     name: loki-alerting-rules
   data:
     loki-alerting-rules.yaml: |-
       groups:
         - name: audit-log-alerts
           rules:
             - alert: UnauthorizedEvents
               expr: sum(count_over_time({job="auditlogs"} | json | responseStatus_code=401 [5m])) > 0
               labels:
                 alertgroup: kube-apiserver
                 prometheus: dropapp-monitoring/k8s
                 priority: medium
                 severity: medium
                 team: devops
                 category: security
               annotations:
                 title: "Kube-apiserver - провалы аутентификации пользователей"
                 description: "Зарегистрирована ошибка аутентификации в kube-apiserver."
         - name: dex-failed-authentication
           rules:
             - alert: UserAuthenticationFailedOnDex
               expr: sum(count_over_time({namespace="dapp-auth", container="dex"} |~ `[F|f]ailed login attempt` [5m])) > 5
               annotations:
                 title: "Dex - частные провалы аутентификации для пользователей"
                 description: "Зарегистрированно более 5 ошибок аутентификации пользователей за последние 5 минут."
               labels:
                 alertgroup: dex
                 prometheus: dropapp-monitoring/k8s
                 priority: medium
                 severity: medium
                 team: devops
                 category: security
         - name: connaisseur-for-sign-validation
           rules:
             - alert: ConnaisseurUnconfiguredRepoForSignValidation
               expr: sum(count_over_time({namespace="dapp-security", container="connaisseur"} |~ `[S|s]tatic deny` [5m])) > 0
               annotations:
                 title: "Connaisseur - no validators conifgured for image"
                 description: "В политиках connaisseur не настроена политика для данного образа."
               labels:
                 alertgroup: connaisseur
                 prometheus: dropapp-monitoring/k8s
                 priority: warning
                 severity: warning
                 team: devops
                 category: security
             - alert: ConnaisseurNotTrustData
               expr: sum(count_over_time({namespace="dapp-security", container="connaisseur"} |~ `[N|n]o trust data for image` [5m])) > 0
               annotations:
                 title: "Connaisseur - no trust data for image"
                 description: "В репозитории образов не найдена подпись для образа."
               labels:
                 alertgroup: connaisseur
                 prometheus: dropapp-monitoring/k8s
                 priority: warning
                 severity: warning
                 team: devops
                 category: security
             - alert: ConnaisseurValidationError
               expr: sum(count_over_time({namespace="dapp-security", container="connaisseur"} |= `error validating` [5m])) > 0
               labels:
                 alertgroup: connaisseur
                 prometheus: dropapp-monitoring/k8s
                 priority: warning
                 severity: warning
                 team: devops
                 category: security
               annotations:
                 title: "Connaisseur - validation error"
                 description: "При валидации образа в connaisseur произошла ошибка."
         - name: to-many-logs-in-logging
           rules:
             - alert: ToManyLogsInNamespace
               expr: sum by (pod)(rate({namespace="dapp-logging"} [1m])) > 0
               for: 1m
               labels:
                 alertgroup: loki
                 severity: info
                 prometheus: dropapp-monitoring/k8s
                 team: devops
                 category: logs
         - name: rate-alerting
           rules:
             - alert: HighLogRate
               expr: sum by (pod)(rate({job="dockerlogs"}[1m])) > 60
               for: 1m
               labels:
                 alertgroup: loki
                 prometheus: dropapp-monitoring/k8s
                 severity: info
                 priority: info
                 team: devops
                 category: logs
               annotations:
                 title: "High LogRate Alert"
                 description: "something is logging a lot"
                 impact: "impact"
                 action: "action"
         - name: harbor-vulnerability-scanning
           rules:
             - alert: vulnerabilityRecordsInReport
               expr: sum(count_over_time({namespace="dapp-security"} |= `vulnerabilityRecords` != `vulnerabilityRecords="0"` [5m])) > 0
               labels:
                 alertgroup: trivy
                 prometheus: dropapp-monitoring/k8s
                 severity: warning
                 priority: warning
                 team: devops
                 category: security
               annotations:
                 title: "Vulnerability was found during image scaning in Harbor"
                 description: "Уязвимости были найдены при сканировании образа в Harbor. Детали смотрите на странице /harbor/logs "

sidecar – настройки k8s-sidecar#

Параметр

Описание

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

sidecar.image.repository

Имя репозитория Docker-образа для k8s-sidecar

kiwigrid/k8s-sidecar

sidecar.image.tag

Тег образа контейнера

1.24.3

sidecar.image.sha

Контрольная сумма (SHA-хеш) Docker-образа. Если не указано, загрузка происходит по тегу

""

sidecar.image.pullPolicy

Политика загрузки Docker-образа для k8s-sidecar

IfNotPresent

sidecar.resources

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

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

{}

sidecar.securityContext

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

{}

sidecar.skipTlsVerify

Отключает проверку TLS-сертификатов при запросах к API Kubernetes

false

sidecar.enableUniqueFilenames

Добавляет префикс пространства имен к именам файлов правил для предотвращения конфликтов именования

false

sidecar.readinessProbe

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

{}

sidecar.livenessProbe

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

{}

sidecar.rules.enabled

Активация sidecar для синхронизации правил из ресурсов ConfigMap и/или Secret

false

sidecar.rules.label

Ключ метки для поиска ресурсов ConfigMap или Secret с правилами

loki_rule

sidecar.rules.labelValue

Значение метки для фильтрации ресурсов ConfigMap или Secret с правилами

""

sidecar.rules.folder

Целевой каталог в файловой системе для сохранения синхронизированных правил

/rules

sidecar.rules.searchNamespace

Список пространств имен для поиска (через запятую). Значение ALL выполняет поиск во всех пространствах имен

~

sidecar.rules.watchMethod

Метод обнаружения изменений ресурсов: WATCH (использование watch-запросов API) или SLEEP (периодический опрос с интервалом 60 секунд)

WATCH

sidecar.rules.resource

Тип отслеживаемых ресурсов.
Возможные значения: configmap, secret или both

both

sidecar.rules.script

Абсолютный путь к shell-скрипту, выполняемому после синхронизации ConfigMap или Secret

~

sidecar.rules.watchServerTimeout

Тайм-аут (в секундах) запроса к серверу API перед принудительным закрытием соединения

60

sidecar.rules.watchClientTimeout

Тайм-аут (в секундах) на стороне клиента для локального сокета

60

sidecar.rules.logLevel

Уровень детализации логов для контейнера sidecar

INFO