prometheus
30 commands
30 shown
Запрос к Prometheus через curl
Разовый PromQL запрос из командной строки
curl -sG 'http://prometheus:9090/api/v1/query' --data-urlencode 'query=up' | jq .
Instant query через promtool
Выполнить instant PromQL запрос через promtool
promtool query instant http://prometheus:9090 'up{job="kubelet"}'
Range query через curl
Запросить Prometheus за диапазон времени через HTTP API
curl -sG 'http://prometheus:9090/api/v1/query_range' --data-urlencode 'query=rate(http_requests_total[5m])' --data-urlencode 'start=2024-01-01T00:00:00Z' --data-urlencode 'end=2024-01-01T01:00:00Z' --data-urlencode 'step=60s' | jq .
Проверить правила алертов
Проверить синтаксис файлов правил алертов/записи
promtool check rules rules.yml
Заглушить алерт
Создать silence для подавления оповещений при обслуживании
amtool silence add --alertmanager.url=http://alertmanager:9093 alertname=<name> --duration=2h --comment='Maintenance'
Список silences
Все активные silences в Alertmanager
amtool silence query --alertmanager.url=http://alertmanager:9093
Завершить silence
Немедленно завершить активный silence
amtool silence expire <id> --alertmanager.url=http://alertmanager:9093
Проверить конфиг Alertmanager
Проверить корректность конфигурации Alertmanager
amtool check-config alertmanager.yml
Активные алерты
Все срабатывающие алерты в Alertmanager
amtool alert query --alertmanager.url=http://alertmanager:9093
Перезагрузить конфиг Prometheus
Горячая перезагрузка конфигурации без перезапуска
curl -X POST http://prometheus:9090/-/reload
Мгновенный запрос вектора
Выполнить мгновенный PromQL-запрос через HTTP API
curl -sG 'http://prometheus:9090/api/v1/query' --data-urlencode 'query=up' | jq '.data.result'
Range-запрос для графика
Получить данные временного ряда для метрики rate за диапазон
curl -sG 'http://prometheus:9090/api/v1/query_range' --data-urlencode 'query=rate(http_requests_total[5m])' --data-urlencode 'start=1h' --data-urlencode 'end=now' --data-urlencode 'step=60'
Топ N серий по значению
PromQL: топ 10 подов по скорости использования CPU
topk(10, sum by (pod) (rate(container_cpu_usage_seconds_total[5m])))
Правило алерта на диск
PromQL: алерт когда / диск занят более чем на 85%
100 - (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100) > 85
Перезагрузить конфиг Prometheus
Горячая перезагрузка конфига и правил без перезапуска
curl -X POST http://prometheus:9090/-/reload
Активные алерты
Показать только активные алерты с именем и важностью
curl -s http://prometheus:9090/api/v1/alerts | jq '.data.alerts[] | select(.state=="firing") | {name: .labels.alertname, severity: .labels.severity}'
Список всех метрик
Подсчитать метрики и показать первые 20
curl -s http://prometheus:9090/api/v1/label/__name__/values | jq '.data | length, .[0:20]'
Мощность серий по job
PromQL: подсчитать активные серии сгруппированные по job
count by (job) ({__name__=~".+"})
Заглушить алерт
Создать тишину в Alertmanager на 2 часа
amtool silence add alertname=HighMemory --duration=2h --comment='Investigating'
Статус TSDB
Просмотр TSDB head: чанки и активные серии
curl -s http://prometheus:9090/api/v1/status/tsdb | jq '{head_chunks: .data.headStats.numChunks, series: .data.headStats.numSeries}'
95-й перцентиль задержки из гистограммы
p95 задержки по job; note: всегда агрегируйте _bucket по le перед histogram_quantile
histogram_quantile(0.95, sum by(le,job)(rate(http_request_duration_seconds_bucket[5m])))
Прогноз заполнения диска
алерт, когда линейный тренд за 6ч прогнозирует заполнение диска в ближайшие 4ч
predict_linear(node_filesystem_avail_bytes{mountpoint="/"}[6h], 4*3600) < 0
Обнаружение пропавшей цели через absent
срабатывает, когда нет ни одной серии; ловит job, полностью исчезнувший из discovery
absent(up{job="node"} == 1)
Переписать метку через label_replace
извлечь/создать новую метку через regex-группу; полезно для join и аккуратных дашбордов
label_replace(node_uname_info, "host", "$1", "nodename", "(.+)")
Максимум посекундного rate за окно
подзапрос: пиковый 5m rate с шагом 1 минута за последний час; выявляет всплески
max_over_time(rate(node_network_receive_bytes_total[5m])[1h:1m])
Агрегация с сохранением всех меток кроме instance
without() сохраняет все метки кроме instance; чище, чем перечислять много меток в by()
sum without(instance) (rate(http_requests_total{code=~"5.."}[5m]))
Recording rule для дорогого отношения
предвычисляет коэффициент ошибок SLO, чтобы дашборды и алерты работали быстро
groups:
- name: slo
rules:
- record: job:request_errors:ratio5m
expr: sum by(job)(rate(http_requests_total{code=~"5.."}[5m])) / sum by(job)(rate(http_requests_total[5m]))
Проверка правил и конфига через promtool
проверка перед reload; запускайте в CI, чтобы поймать битые expr/yaml до деплоя
promtool check rules rules.yml && promtool check config prometheus.yml
Мгновенный запрос из CLI
выполнить PromQL без браузера; удобно для скриптовых top-N расследований
promtool query instant http://localhost:9090 'topk(5, sum by(pod)(rate(container_cpu_usage_seconds_total[5m])))'
Поиск виновников кардинальности в TSDB
показывает метрики и пары меток с высокой кардинальностью; первый шаг при росте памяти
promtool tsdb analyze /prometheus --limit 20
no commands match