Метрики
Для публикации метрик etcd использует Prometheus . Метрики можно применять для мониторинга и отладки в реальном времени. etcd не сохраняет метрики: при перезапуске участника они сбрасываются.
Проще всего просмотреть доступные метрики, запросив конечную точку /metrics с помощью cURL. Формат описан в документации Prometheus
.
Чтобы запустить сервер Prometheus для сбора метрик etcd, следуйте руководству Prometheus по началу работы .
Имена метрик соответствуют рекомендуемым практикам 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 перегружен. Такое возможно при выполнении дорогостоящих запросов, например тяжёлых диапазонных запросов или крупных операций txn.
proposals_pending показывает количество предложений в очереди на фиксацию. Рост числа ожидающих предложений указывает на высокую клиентскую нагрузку либо на неспособность участника фиксировать предложения.
proposals_failed_total обычно связано с двумя проблемами: временными сбоями во время выборов лидера или более длительным простоем из-за потери кворума в кластере.
Диск
Эти метрики описывают состояние дисковых операций.
Все эти метрики имеют префикс etcd_disk_.
| Имя | Описание | Тип |
|---|---|---|
| wal_fsync_duration_seconds | Распределение задержки вызова fsync подсистемой wal | Histogram |
| backend_commit_duration_seconds | Распределение задержки вызова commit бэкендом. | Histogram |
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.