Вопрос или проблема
Я пытаюсь запустить распределенную 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, однако необходимо следить за тем, что все параметры настроены надёжно и правильно.
Основные аспекты, которые необходимо проверить:
-
Конфигурация развертывания: Правильность настройки
values.yaml
для использования S3 в качествеshared_store
и объектаobject_store
. Важно, чтобы AWS параметры были корректно указаны, включаяregion
,bucketnames
, и настройки аутентификации через IAM. -
IAM роли и доступ: Указание правильной IAM роли, имеющей доступ на запись в S3.
-
Мониторинг логов: Отсутствие сообщений об ошибках в логах Loki, которые могут указывать на сбои при попытке записи в S3.
-
Наличие правильных индексов и таблиц: Убедитесь в корректности времени создания и структуры индексов, поскольку ошибки в конфигурировании могут препятствовать корректной записи.
Пример
Для того чтобы записывать данные в 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-бакету.
Применение
-
Проверка IAM роли: Убедитесь, что IAM роль, указанная в аннотации
serviceAccount
, имеет полное разрешение для операций S3 (например,s3:PutObject
,s3:ListBucket
, иs3:GetObject
). -
Корректность конфигурации S3: Убедитесь, что указанные
region
иbucketnames
верны и совпадают с регионом и именем вашего S3-бакета. -
Диагностика логов и метрик: Перейдите к журналам подов Loki, чтобы проверить, нет ли сообщений об ошибках, связанных с S3, и используйте инструменты мониторинга, такие как Grafana, для отслеживания состояния операций с хранилищем.
-
Тестирование соединения: Используйте инструменты AWS CLI (или другие средства диагностики), чтобы убедиться в возможности соединения и выполнения операций, таких как загрузка файлов вручную в бакет.
-
Обновление конфигурации и тесты: После любых изменений конфигурации убедитесь, что обновлены и перезапущены все соответствующие поды. Это можно сделать, обновив деплоймент командой
helm upgrade
. -
Дополнительные параметры конфигурации: Проверьте дополнительные параметры, такие как
s3forcepathstyle
, если бакет использует точку окончания, отличную от стандартной.
Проблемы с записью данных в S3 могут также возникать из-за временных сбоев сетевого подключения. В случае, если основная конфигурация корректна, и проблема всё еще сохраняется, рекомендуется обратиться к документации Loki и AWS для расширенной диагностики.
Проблема со связкой инструментов и конфигурация должна быть решена комплексным подходом: анализом логов, переконфигурацией сервисов и обеспечением правильных IAM-доступов. Убедитесь также, что вы тестируете любые изменения в изолированном окружении, чтобы не нарушить привязки или деплоймент в продуктивной среде.