Метрики

Метрики для моніторингу та налагодження в реальному часі

etcd використовує Prometheus для обробки метрик. Метрики можуть бути використані для моніторингу та налагодження в реальному часі. etcd не зберігає свої метрики; якщо член перезапускається, метрики будуть скинуті.

Найпростіший спосіб побачити доступні метрики — це виконати cURL до точки доступу метрик /metrics. Формат описаний тут.

Слідуйте документації з початку роботи з Prometheus, щоб запустити сервер Prometheus для збору метрик etcd.

Назви метрик слідують рекомендованим кращим практикам Prometheus. Назва метрики має префікс etcd або etcd_debugging як свій простір імен та префікс підсистеми (наприклад, wal та etcdserver).

Метрики простору імен etcd

Метрики з префіксом etcd призначені для моніторингу та оповіщення. Це стабільні високорівневі метрики. Якщо буде змінено ці метрики, це буде включено в примітки до випуску.

Метрики, повʼязані з etcd2, задокументовані в посібнику з метрик v2.

Сервер

Ці метрики описують стан сервера etcd. Для виявлення збоїв або проблем для усунення неполадок, метрики сервера кожного промислового кластера etcd повинні ретельно моніторитися.

Всі ці метрики мають префікс etcd_server_

НазваОписТип
has_leaderЧи існує лідер. 1 - існує, 0 - не існує.Gauge
leader_changes_seen_totalКількість змін лідера, які були побачені.Counter
proposals_committed_totalЗагальна кількість затверджених пропозицій.Gauge
proposals_applied_totalЗагальна кількість застосованих пропозицій.Gauge
proposals_pendingПоточна кількість очікуючих пропозицій.Gauge
proposals_failed_totalЗагальна кількість невдалих пропозицій.Counter

has_leader вказує, чи є у члена лідер. Якщо у члена немає лідера, він повністю недоступний. Якщо всі члени в кластері не мають лідера, весь кластер повністю недоступний.

leader_changes_seen_total рахує кількість змін лідера, які член бачив з моменту свого запуску. Швидкі зміни лідера значно впливають на продуктивність etcd. Це також сигналізує про те, що лідер нестабільний, можливо, через проблеми з мережевим зʼєднанням або надмірне навантаження на кластер etcd.

proposals_committed_total записує загальну кількість затверджених пропозицій консенсусу. Цей показник повинен збільшуватися з часом, якщо кластер справний. Кілька справних членів кластера etcd можуть мати різну загальну кількість затверджених пропозицій одночасно. Ця розбіжність може бути викликана відновленням від учасників після запуску, відставанням від лідера або бути лідером і, отже, мати найбільше затверджень. Важливо моніторити цей показник у всіх членів кластера; постійно велике відставання між одним членом і його лідером вказує на те, що цей член повільний або несправний.

proposals_applied_total записує загальну кількість застосованих пропозицій консенсусу. Сервер etcd застосовує кожну затверджену пропозицію асинхронно. Різниця між proposals_committed_total та proposals_applied_total зазвичай повинна бути невеликою (в межах кількох тисяч навіть при високому навантаженні). Якщо різниця між ними продовжує зростати, це вказує на те, що сервер etcd перевантажений. Це може статися при застосуванні дорогих запитів, таких як важкі запити діапазону або великі транзакційні операції.

proposals_pending вказує, скільки пропозицій знаходяться в черзі на затвердження. Зростання кількості очікуючих пропозицій свідчить про високе навантаження клієнтів або про те, що член не може затвердити пропозиції.

proposals_failed_total зазвичай повʼязані з двома проблемами: тимчасові збої, повʼязані з виборами лідера, або тривалі простої, викликані втратою кворуму в кластері.

Диск

Ці метрики описують стан дискових операцій.

Всі ці метрики мають префікс etcd_disk_.

НазваОписТип
wal_fsync_duration_secondsРозподіл затримок fsync, викликаних walHistogram
backend_commit_duration_secondsРозподіл затримок commit, викликаних backendHistogram

wal_fsync викликається, коли etcd зберігає свої журнальні записи на диск перед їх застосуванням.

backend_commit викликається, коли etcd зберігає інкрементальний знімок своїх останніх змін на диск.

Високі затримки дискових операцій (wal_fsync_duration_seconds або backend_commit_duration_seconds) часто вказують на проблеми з диском. Це може викликати високу затримку запитів або зробити кластер нестабільним.

Мережа

Ці метрики описують стан мережі.

Всі ці метрики мають префікс etcd_network_

НазваОписТип
peer_sent_bytes_totalЗагальна кількість байтів, відправлених до учасника з ID To.Counter(To)
peer_received_bytes_totalЗагальна кількість байтів, отриманих від учасника з ID From.Counter(From)
peer_sent_failures_totalЗагальна кількість невдалих відправлень до учасника з ID To.Counter(To)
peer_received_failures_totalЗагальна кількість невдалих отримань від учасника з ID From.Counter(From)
peer_round_trip_time_secondsГістограма часу кругової поїздки між учасниками.Histogram(To)
client_grpc_sent_bytes_totalЗагальна кількість байтів, відправлених до grpc клієнтів.Counter
client_grpc_received_bytes_totalЗагальна кількість байтів, отриманих від grpc клієнтів.Counter

peer_sent_bytes_total рахує загальну кількість байтів, відправлених до конкретного учасника. Зазвичай лідерський член відправляє більше даних, ніж інші члени, оскільки він відповідає за передачу реплікованих даних.

peer_received_bytes_total рахує загальну кількість байтів, отриманих від конкретного учасника. Зазвичай члени-послідовники отримують дані тільки від лідерського члена.

gRPC запити

Ці метрики доступні через go-grpc-prometheus.

Метрики простору імен etcd_debugging

Метрики під префіксом etcd_debugging призначені для налагодження. Вони дуже залежні від реалізації та нестабільні. Вони можуть бути змінені або видалені без попередження в нових випусках etcd. Деякі з метрик можуть бути перенесені до префіксу etcd, коли вони стануть більш стабільними.

Знімок

НазваОписТип
snapshot_save_total_duration_secondsЗагальний розподіл затримок збереження, викликаних знімкомHistogram

Аномально висока тривалість знімка (snapshot_save_total_duration_seconds) вказує на проблеми з диском і може зробити кластер нестабільним.

Метрики, надані Prometheus

Клієнтська бібліотека Prometheus надає ряд метрик з просторами імен go та process. Є кілька, які особливо цікаві.

НазваОписТип
process_open_fdsКількість відкритих файлових дескрипторів.Gauge
process_max_fdsМаксимальна кількість відкритих файлових дескрипторів.Gauge

Примітка: Метрики процесу, такі як process_open_fds та process_max_fds, наразі не підтримуються на системах Darwin (macOS).

Велике використання файлових дескрипторів (process_open_fds) (тобто, близько до ліміту файлових дескрипторів процесу, process_max_fds) вказує на потенційну проблему вичерпання файлових дескрипторів. Якщо файлові дескриптори вичерпаються, etcd може панікувати, оскільки він не зможе створити нові файли WAL.

Згенерований список метрик

latest