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_. Суммарные значения — это счётчики:
графики и правила превращают их в скорости.
| Метрика | Что | Метки |
|---|---|---|
ready | 1, когда /ready отвечает ready, 0 — пока Loki запускается, либо когда компонент не может писать или читать | |
version_info | значение 1 | version |
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_total | HTTP- и 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»-
Ничего устанавливать не нужно: Loki публикует /ready и /metrics на своём HTTP-порту (по умолчанию 3100). Проверьте с хоста DumbMonit, что оба отвечают.
curl http://loki.lan:3100/readycurl -s http://loki.lan:3100/metrics | grep loki_build_info -
У самого Loki нет входа. Если он стоит за обратным прокси, который запрашивает имя пользователя и пароль, выберите ниже «Username / password»; для токена-носителя выберите «Bearer token». Тенант не нужен: /ready и /metrics не привязаны к тенанту.
-
В DumbMonit введите адрес Loki, например «loki.lan», или «https://logs.lan/loki» за обратным прокси. Если Loki разделён на компоненты (simple scalable или microservices), добавьте как минимум путь записи, где считаются отклонённые строки и сбои flush.
-
DumbMonit читает только /ready и /metrics. Он никогда не выполняет запрос LogQL и никогда не читает строку лога.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Без аутентификации | По умолчанию: у самого Loki нет входа. |
| Имя пользователя / пароль | Базовая аутентификация обратного прокси перед Loki. |
| Токен-носитель | Токен, который ваш обратный прокси ожидает в Authorization: Bearer. |
Адрес: имя хоста или IP (loki.lan), host:port, или полный URL с префиксом
пути (https://logs.lan/loki). Опции: протокол (по умолчанию HTTP), порт
(3100), проверка сертификата и таймаут запроса (10 с).