Создание базового файла loki-config.yaml
На этом шаге вы создадите минимальный конфигурационный файл для Loki. Этот файл, loki-config.yaml, указывает Loki, как запускаться, где хранить данные и какую схему использовать. Для этой лабораторной работы мы настроим Loki на использование локальной файловой системы для хранения данных.
Мы будем использовать текстовый редактор nano для создания файла. Выполните следующую команду, чтобы открыть новый файл с именем loki-config.yaml:
nano loki-config.yaml
Теперь скопируйте и вставьте следующее содержимое YAML в редактор nano:
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/index
cache_location: /tmp/loki/cache
filesystem:
directory: /tmp/loki/chunks
ruler:
alertmanager_url: http://localhost:9093
limits_config:
allow_structured_metadata: false
Эта конфигурация сохраняет все необходимое для Loki в папке /tmp/loki внутри контейнера, что позволяет избежать проблем с правами доступа и упрощает понимание настройки. Она отключает аутентификацию, включает кольцо (ring) в оперативной памяти для использования в одном узле и хранит блоки (chunks) и индексы в локальной файловой системе.
Вот что делает каждый раздел в файле:
auth_enabled: false: Отключает аутентификацию, чтобы вы могли взаимодействовать с Loki без дополнительных учетных данных. Это упрощает локальное тестирование; в производственной среде вы бы включили аутентификацию.
server.http_listen_port: 3100: Указывает Loki прослушивать HTTP-запросы на порту 3100. Когда вы обращаетесь к localhost:3100 через curl, вы попадаете на этот порт.
common.path_prefix: Устанавливает базовую папку, где Loki хранит временные данные внутри контейнера. Каждый другой путь в этом файле строится от /tmp/loki, поэтому все остается в одном месте.
common.storage.filesystem: Указывает Loki на две папки для хранения блоков логов (chunks) и файлов правил (rules). Поскольку мы не монтируем ничего специального в контейнер, использование /tmp/loki позволяет избежать проблем с правами доступа.
common.ring.kvstore.store: inmemory: Хранит информацию о членстве в кластере в оперативной памяти. Для лабораторной работы с одним узлом это идеально; реальный кластер использовал бы общее хранилище, такое как Consul или etcd.
schema_config: Определяет, как Loki должен организовывать индекс для данных логов. Мы устанавливаем начальную дату, выбираем хранилище boltdb-shipper и сохраняем индекс в файловой системе. prefix и period управляют именованием файлов и частотой создания нового файла индекса (каждые 24 часа).
storage_config: Предоставляет точные папки для индекса boltdb-shipper (active_index_directory и cache_location) и для хранения необработанных блоков. Все пути снова находятся в /tmp/loki, чтобы сохранить порядок.
ruler.alertmanager_url: Подготавливает компонент ruler Loki для отправки оповещений в Alertmanager по адресу http://localhost:9093. Ничего не сломается, если Alertmanager не запущен; Loki просто зарегистрирует предупреждение, когда попытается отправить оповещение.
limits_config.allow_structured_metadata: false: Отключает продвинутую функцию, чтобы Loki использовал более простой, текстовый метаданные логов, которые ожидают новички.
Нажмите Ctrl+X для выхода, затем Y для подтверждения сохранения и, наконец, Enter, чтобы сохранить файл с именем loki-config.yaml.