Loki распределенный helm chart не записывает в S3 бакет.

Вопрос или проблема

Я пытаюсь запустить распределенную helm диаграмму loki в моем кластере kubernetes, у меня есть папка с Chart.yaml:

apiVersion: v2
name: loki
description: Umbrella chart for loki
type: application
version: 0.1.0
appVersion: 2.9.6
dependencies:
  - name: loki-distributed
    version: 0.80.0
    repository: https://grafana.github.io/helm-charts
    alias: loki

И values.yaml:

loki:
  auth_enabled: false
  ingester:
    lifecycler:
      ring:
        kvstore:
          store: memberlist
        replication_factor: 1
    chunk_idle_period: 30m
    chunk_block_size: 262144
    chunk_encoding: snappy
    chunk_retain_period: 1m
    max_transfer_retries: 0
    wal:
      dir: /var/loki/wal
  loki:
    schemaConfig:
      configs:
      - from: "2020-10-24"
        index:
          period: 24h
          prefix: index_
        object_store: s3
        schema: v11
        store: boltdb-shipper
  
    storageConfig:
      boltdb_shipper:
        active_index_directory: /var/loki/index
        cache_location: /var/loki/cache
        cache_ttl: 168h
        shared_store: s3
      filesystem:
        directory: /var/loki/chunks
      aws:
        region: eu-west-2
        bucketnames: eks-sandbox-loki
        s3forcepathstyle: false

  serviceAccount:
      create: true
      name: loki
      annotations:
        eks.amazonaws.com/role-arn: arn:aws:iam::123456789:role/eks-sandbox-loki

  gateway:
    enabled: true
    ingress:
      enabled: true
      ingressClassName: "alb"
      annotations:
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/group.name: grafana
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/ssl-redirect: '443'
        alb.ingress.kubernetes.io/target-type: ip
      hosts:
        - host: loki.mydomain.com
          paths:
            - path: /
              pathType: Prefix

Который я разворачиваю, выполняя:

helm dependency build
helm upgrade --install loki . -f values.yaml -n loki --create-namespace

Который потом запускается, и я могу записывать логи в loki. Однако, когда я захожу в s3 bucket, там ничего нет.

Я не вижу ничего о записи в s3 в логах ingester:

evel=info ts=2025-02-04T19:59:12.02317259Z caller=checkpoint.go:336 msg="attempting checkpoint for" dir=/var/loki/wal/checkpoint.000000   
level=info ts=2025-02-04T20:00:12.009069135Z caller=table_manager.go:171 index-store=boltdb-shipper-2020-09-07 msg="handing over indexes to shipper"
level=info ts=2025-02-04T20:00:12.009105001Z caller=table_manager.go:136 index-store=boltdb-shipper-2020-09-07 msg="uploading tables"      
level=info ts=2025-02-04T20:01:12.009072089Z caller=table_manager.go:171 index-store=boltdb-shipper-2020-09-07 msg="handing over indexes to shipper"
level=info ts=2025-02-04T20:01:12.009102707Z caller=table_manager.go:136 index-store=boltdb-shipper-2020-09-07 msg="uploading tables"      
level=info ts=2025-02-04T20:02:12.009044273Z caller=table_manager.go:171 index-store=boltdb-shipper-2020-09-07 msg="handing over indexes to shipper"
level=info ts=2025-02-04T20:02:12.009079316Z caller=table_manager.go:136 index-store=boltdb-shipper-2020-09-07 msg="uploading tables"

Я не могу понять, связано ли это с тем, что в итоге будет запись в s3, или же оно вообще не записывается в s3 (я пробовал оставить запущенным на какое-то время, но ничего не было записано)

Как мне настроить loki для записи в s3?

Ответ или решение

Теория

Проблема, связанная с тем, что Loki не записывает данные в S3, может быть вызвана рядом факторов. В первую очередь, важно убедиться, что конфигурация вашего Loki Helm Chart откорректирована правильно для использования S3 в качестве хранилища объектов. Loki предоставляет несколько способов хранения данных, в том числе через AWS S3, однако необходимо следить за тем, что все параметры настроены надёжно и правильно.

Основные аспекты, которые необходимо проверить:

  1. Конфигурация развертывания: Правильность настройки values.yaml для использования S3 в качестве shared_store и объекта object_store. Важно, чтобы AWS параметры были корректно указаны, включая region, bucketnames, и настройки аутентификации через IAM.

  2. IAM роли и доступ: Указание правильной IAM роли, имеющей доступ на запись в S3.

  3. Мониторинг логов: Отсутствие сообщений об ошибках в логах Loki, которые могут указывать на сбои при попытке записи в S3.

  4. Наличие правильных индексов и таблиц: Убедитесь в корректности времени создания и структуры индексов, поскольку ошибки в конфигурировании могут препятствовать корректной записи.

Пример

Для того чтобы записывать данные в S3, конфигурация вашего values.yaml, как и у вас, включает:

  loki:
    schemaConfig:
      configs:
      - from: "2020-10-24"
        index:
          period: 24h
          prefix: index_
        object_store: s3
        schema: v11
        store: boltdb-shipper

    storageConfig:
      boltdb_shipper:
        active_index_directory: /var/loki/index
        cache_location: /var/loki/cache
        cache_ttl: 168h
        shared_store: s3
      aws:
        region: eu-west-2
        bucketnames: eks-sandbox-loki

Важно, чтобы IAM роль, предоставленная через eks.amazonaws.com/role-arn, была корректно настроена и имела разрешения на доступ к S3-бакету.

Применение

  1. Проверка IAM роли: Убедитесь, что IAM роль, указанная в аннотации serviceAccount, имеет полное разрешение для операций S3 (например, s3:PutObject, s3:ListBucket, и s3:GetObject).

  2. Корректность конфигурации S3: Убедитесь, что указанные region и bucketnames верны и совпадают с регионом и именем вашего S3-бакета.

  3. Диагностика логов и метрик: Перейдите к журналам подов Loki, чтобы проверить, нет ли сообщений об ошибках, связанных с S3, и используйте инструменты мониторинга, такие как Grafana, для отслеживания состояния операций с хранилищем.

  4. Тестирование соединения: Используйте инструменты AWS CLI (или другие средства диагностики), чтобы убедиться в возможности соединения и выполнения операций, таких как загрузка файлов вручную в бакет.

  5. Обновление конфигурации и тесты: После любых изменений конфигурации убедитесь, что обновлены и перезапущены все соответствующие поды. Это можно сделать, обновив деплоймент командой helm upgrade.

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

Проблемы с записью данных в S3 могут также возникать из-за временных сбоев сетевого подключения. В случае, если основная конфигурация корректна, и проблема всё еще сохраняется, рекомендуется обратиться к документации Loki и AWS для расширенной диагностики.

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

Оцените материал
Добавить комментарий

Капча загружается...