Files
EvoBGP/docs/metrics-semantics.md
T
DenozordecandCursor 240d83fc61 docs(docs): describe durable jobs, telemetry, and bundle limits
Зафиксированы очередь job, семантика метрик, лимиты бандла и исходящих запросов, а также чеклист продакшена для пула соединений.

Co-authored-by: Cursor <[email protected]>
2026-11-02 17:24:18 +07:00

22 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Смысл метрик хранилища
Метрики `/metrics` с префиксом `evobgp_` описывают разные источники данных. Их нельзя складывать в один показатель «маршруты сейчас» или «сеть здорова».
| Метрика | Источник и смысл |
| --- | --- |
| `stored_revision_materialized_prefixes_max`, `stored_revision_materialized_prefixes_sum` | Максимум и сумма `materialized_prefix_count` **по всем сохранённым ревизиям**, включая историю. Не текущие маршруты, не опубликованная или применённая конфигурация. |
| `inventory_bgp_peers` | Число настроенных BGP peers в хранилище, независимо от `enabled` и фактической сессии. |
| `stored_bgp_peer_session_state{state}` | Число peers по сохранённому `meta_json.session_state`. Это последнее записанное значение или intent, а не свежий опрос BIRD. Значения `state` ограничены стандартными состояниями BGP, `unknown` и `other`. |
| `store_metrics_collection_success` | `1`, если агрегаты хранилища прочитаны; `0`, если чтение БД завершилось ошибкой. При `0` остальные метрики хранилища в данном scrape отсутствуют. |
| `bird_bgp_sessions_established`, `bird_protocols_scrape_success` | Локальный опрос BIRD процесса API; не охватывает все remote speakers. При ошибке опроса число Established не следует трактовать как достоверный нуль. |
Старые `materialized_prefixes_max/sum`, `bgp_peers_configured_total` и `bgp_peer_sessions{state}` продолжают экспортироваться с прежним смыслом на переходный период. Они устаревают; правила и dashboards нужно перевести на явные имена перед удалением старых рядов. Исторические ревизии могут увеличить оба ряда `*_sum`, поэтому использовать их как KPI текущих маршрутов нельзя.
Группы desired, published, confirmed applied и observed live, а также общий статус multi-speaker требуют отдельной реализации и политики свежести. Здесь эти метрики пока не объявлены.
## Circuit breaker внешних запросов
`upstream_breaker_open{host}` — последнее наблюдение breaker при запросе, не фоновая проверка доступности сервера. Истечение cooldown само по себе не обновляет gauge до следующего обращения; по этой метрике нельзя выводить свежий outage upstream.
Cache ограничен 1024 hostname на процесс, имена нормализованы в нижний регистр без завершающей точки; порты одного hostname разделяют breaker. Новая identity при заполненном cache отклоняется до соединения. Закрытые записи после 10 минут простоя удаляются вместе с текущим label set при следующем обслуживании cache; активные запросы и ещё открытый cooldown не вытесняются. Это ограничивает текущую память и scrape cardinality, но не удаляет исторические series из TSDB Prometheus.