Перейти к содержимому

Grafana Loki

Сам сервер логов: готов ли он, какие строки логов он отклоняет и почему, доходят ли его чанки до хранилища, и есть ли ещё место на диске для его журнала упреждающей записи.

Loki публикует /ready и /metrics на своём HTTP-порту; DumbMonit читает только эти два и ничего больше. Он никогда не выполняет запрос LogQL и никогда не читает строку лога.

Отказ, за которым стоит следить, тихий. Когда Loki отклоняет строку (старше reject_old_samples_max_age, выше лимита приёма или потока для тенанта, длиннее max_line_size), отправитель получает 4xx, и Promtail, Alloy или Fluent Bit обычно отбрасывают пакет. Grafana не показывает ничего, кроме пробела, который находят в тот день, когда кто-то ищет лог инцидента. Второй отказ — чанки, которые не могут быть записаны в хранилище: Loki хранит их в памяти и теряет при следующем перезапуске.

Все метрики с префиксом dumbmonit_loki_. Суммарные значения — это счётчики: графики и правила превращают их в скорости.

МетрикаЧтоМетки
ready1, когда /ready отвечает ready, 0 — пока Loki запускается, либо когда компонент не может писать или читать
version_infoзначение 1version
received_lines_total, received_bytes_totalчто получил дистрибьютор, по всем тенантам
discarded_lines_totalотклонённые строки, присутствует всегда, даже при нуле
discarded_lines_reason_totalто же, по причине: greater_than_max_sample_age, rate_limited, stream_limit, line_too_long, per_stream_rate_limit…reason
flush_failures_total, flush_queue_lengthчанки, не дошедшие до хранилища; чанки, ожидающие этого
memory_streamsпотоки, удерживаемые инжестором в памяти
wal_disk_full_failures_total, wal_disk_used_percentзаписи журнала упреждающей записи, потерянные из-за заполненного диска, и насколько этот диск заполнен
requests_total, request_errors_totalHTTP- и gRPC-запросы, и те, что ответили 5xx или ошибкой gRPC. 4xx — вина клиента и не считается ошибкой.
ring_unhealthy_membersучастники хэш-колец, отмеченные как нездоровые
panics_total, log_errors_totalвосстановленные паники, залогированные сообщения об ошибках
retention_last_run_timestamp_secondsпоследний успешный запуск компактора срока хранения, когда хранение включено
memory_resident_bytes

Loki, разделённый на компоненты (simple scalable, microservices), выдаёт эти семейства там, где они относятся: отклонённые строки на дистрибьюторе, flush и WAL — на инжесторе. Добавьте компоненты, которые хотите отслеживать; семейство, которого у компонента нет, просто не даёт ряда.

Применяемые встроенные правила: «Loki не готов», «Loki отклоняет строки логов», «Loki не может сбросить данные в хранилище», «Диск журнала упреждающей записи (WAL) Loki заполнен», «Ошибки запросов Loki», плюс «Монитор недоступен».

Панель над графиками читает то, что сохранила проверка; открытие страницы никогда не запрашивает Loki. Она сообщает, что не так, в одном предложении (готовность, строки, отклонённые за последние 24 часа, чанки, не сброшенные в хранилище, заполненный диск WAL, нездоровые участники кольца, ошибки сервера), затем — строки и объём, получаемые в секунду, потоки в памяти и диск WAL, затем — отклонённые за последние 24 часа строки по причине.

Дать DumbMonit читать собственное состояние здоровья Loki

Заголовок раздела «Дать DumbMonit читать собственное состояние здоровья Loki»
  1. Ничего устанавливать не нужно: Loki публикует /ready и /metrics на своём HTTP-порту (по умолчанию 3100). Проверьте с хоста DumbMonit, что оба отвечают.

    curl http://loki.lan:3100/ready
    curl -s http://loki.lan:3100/metrics | grep loki_build_info
  2. У самого Loki нет входа. Если он стоит за обратным прокси, который запрашивает имя пользователя и пароль, выберите ниже «Username / password»; для токена-носителя выберите «Bearer token». Тенант не нужен: /ready и /metrics не привязаны к тенанту.

  3. В DumbMonit введите адрес Loki, например «loki.lan», или «https://logs.lan/loki» за обратным прокси. Если Loki разделён на компоненты (simple scalable или microservices), добавьте как минимум путь записи, где считаются отклонённые строки и сбои flush.

  4. DumbMonit читает только /ready и /metrics. Он никогда не выполняет запрос LogQL и никогда не читает строку лога.

Учётные данныеПоля
Без аутентификацииПо умолчанию: у самого Loki нет входа.
Имя пользователя / парольБазовая аутентификация обратного прокси перед Loki.
Токен-носительТокен, который ваш обратный прокси ожидает в Authorization: Bearer.

Адрес: имя хоста или IP (loki.lan), host:port, или полный URL с префиксом пути (https://logs.lan/loki). Опции: протокол (по умолчанию HTTP), порт (3100), проверка сертификата и таймаут запроса (10 с).