Метрики, логи и трейсы
analytics хранит телеметрию платформы рядом с веб-аналитикой, в разделе
Инфраструктура. Ничего ставить не нужно: каждый сервис присылает её сам, а каждая нода — данные
своего сервера и приложений.
Что собирается
| Откуда |
Что |
| Каждый сервис |
запросы по маршрутам и статусам, время ответа, память Go и горутины, соединения с БД, его логи, трейсы запросов между сервисами |
| Свои метрики сервисов |
ai: вызовы апстримов, токены, стоимость и окна квот; mail: доставка; notify: отправленные уведомления; backups: запуски, их время и объём |
| Серверы |
CPU, нагрузка, память, диск, сеть — control plane и каждая нода |
| Приложения |
CPU, память, рестарты, сеть; запросы через ноду (статус, время ответа); их логи; их собственный адрес метрик |
Сервисы присылают данные раз в минуту. Сырые точки хранятся 7 дней, часовые агрегаты — 90, логи и трейсы — 7. Суперпользователь меняет это в
Алерты → Хранение.
Метрики своего приложения
Отдавайте метрики в текстовом формате Prometheus внутри контейнера и укажите их в Настройках → Порт
метрик приложения (и путь, по умолчанию /metrics). Нода читает их раз в 30 секунд (до 500 серий):
счётчики видны как скорость, значения — как есть. Со страницы приложения есть ссылки на его запросы,
логи и метрики.
Логи хранятся, если не выключить Хранить логи в analytics; контейнер может писать до 200 строк в
секунду, строки длиннее 8 КБ обрезаются. Уровень строки угадывается по её тексту (error, warn, …).
Смотреть
- Обзор: каждый сервис — работает или лежит, с запросами, ошибками, p95, памятью; каждый сервер — CPU,
память, диск и сеть.
- Метрики: выберите метрику, функцию (скорость, сумма, среднее, максимум, p50…p99), группировку по
метке и фильтры; вид хранится в адресе, ссылкой им можно поделиться.
- Логи: поиск, фильтр по источнику и уровню, просмотр вживую; строка внутри запроса открывает его трейс.
- Трейсы: запросы через сервисы водопадом. Трейс сохраняется, если попал в выборку (10%), упал (5xx)
или шёл дольше секунды.
Суперпользователи видят платформу, команда — свои приложения.
Алерты
Правило следит за функцией метрики за последние пять минут — например,
rate(http_requests_total{code:5xx, source:ai}) > 0.1 дольше 5 минут — и сообщает в
notify, когда срабатывает (analytics.alert.firing) и когда отпускает. Сервис, который
три минуты ничего не присылает, считается лежащим (analytics.service.down) без всяких правил. Админы
команды заводят правила на серии своих приложений.
Prometheus и Grafana
Каждый сервис отвечает на /metrics вызовам со своей же машины. Внешний Prometheus может забирать
последние значения всех серий с https://analytics.xvii.network/api/v1/telemetry/metrics с телеметрийным
токеном инстанса (/etc/xvii/telemetry.token на control plane).