Стандартный top и htop показывают CPU и RAM — но не говорят,почему процесс node потребляет 90% CPU. Когда этот процесс — AI-агент, вам нужно знать: сколько токенов он сжигает, сколько API-вызовов делает, не зациклился ли он в retry-loop. Ниже — пошаговая инструкция настройки мониторинга с конкретными конфигами.
Краткий ответ
/metrics, добавьте systemd heartbeat с WatchdogSec=30, опишите alert-правила с конкретными порогами и включите auto-recovery (switch_model / throttle / provider-fallback). Полная настройка — около часа, и runaway-агент больше не сожжёт бюджет за ночь.63%
- AI-агенты
- FlowLink
- Prometheus
- Alertmanager
- Grafana
Настройка мониторинга AI-агентов за час
Пять шагов от экспорта метрик до автоматического восстановления. Ниже — подробный разбор с конфигами.
Соберите 8 ключевых метрик
Включите экспорт
/metricsна порту9095: токены, latency, cost, tool calls, policy violations.Настройте heartbeat
systemd unit с
WatchdogSec=30иRestart=on-failureперезапустит зависшего агента.Опишите alert rules
Пороги для tool storm, LLM latency, budget overrun и context bloat в Prometheus.
Включите auto-recovery
switch_model,throttleи provider-fallback при срабатывании алертов.Импортируйте Grafana-дашборд
flowlink dashboard import— 20 готовых панелей с alert annotations.
Шаг 1. Что именно собираем — 8 ключевых метрик
AI-агент отличается от обычного сервиса. Вот метрики, которые реально важны:
| Метрика (Prometheus) | Тип | Зачем |
|---|---|---|
ai_agent_tokens_total | Counter | Стоимость: input + output токены по каждой модели |
ai_agent_llm_latency_seconds | Histogram | Деградация: p50/p95/p99 ответа от LLM provider |
ai_agent_tool_calls_total | Counter | Объём: сколько MCP/bash/git вызовов |
ai_agent_policy_violations | Counter | Безопасность: сколько раз заблокирована политика |
ai_agent_error_rate | Gauge | Надёжность: % неуспешных LLM-ответов (rate/timeout/context) |
ai_agent_cost_usd | Gauge | Бюджет: текущий расход сессии/агента/команды |
ai_agent_context_size_tokens | Gauge | Context bloat: размер контекста (рост → расходы) |
ai_agent_credential_access_total | Counter | Секреты: обращение к vault/credentials |
FlowLink экспортирует все эти метрики в формате Prometheus через /metricsendpoint на порту 9095:
# curl http://localhost:9095/metrics | grep ai_agentai_agent_tokens_total{agent="cursor",model="gpt-4o",direction="input"} 284729ai_agent_tokens_total{agent="cursor",model="gpt-4o",direction="output"} 42103ai_agent_llm_latency_seconds_bucket{le="1"} 842ai_agent_llm_latency_seconds_bucket{le="5"} 2891ai_agent_cost_usd{agent="cursor",team="backend"} 12.47ai_agent_policy_violations{agent="claude-code",rule="no_prod_write"} 3Шаг 2. Настройка heartbeat через systemd
Heartbeat — простой механизм: агент периодически сигнализирует «я жив». Если сигнала нет — systemd перезапускает процесс. Вот готовый service unit:
[Unit]Description=FlowLink AI Agent MonitorAfter=network-online.targetWants=network-online.target[Service]Type=simpleExecStart=/usr/local/bin/flowlink agent --config /etc/flowlink/agent.yamlRestart=on-failureRestartSec=10WatchdogSec=30# Health check через HTTP endpointExecStartPost=/bin/sleep 3ExecStartPost=/usr/bin/curl -sf http://localhost:9095/health || exit 1# Resource limitsMemoryMax=2GCPUQuota=200%# EnvironmentEnvironment=FLOWLINK_LOG_LEVEL=infoEnvironment=FLOWLINK_METRICS_PORT=9095[Install]WantedBy=multi-user.targetWatchdogSec=30
WatchdogSec=30 — systemd убьёт процесс, если тот не отправил sd_notify(READY=1) за 30 секунд. FlowLink автоматически интегрируется с systemd watchdog, поэтому зависший или зациклившийся агент перезапускается без участия дежурного.Шаг 3. Alert rules с конкретными порогами
Прометеус-алерты без конкретных порогов бесполезны. Вот production-ready правила:
groups: - name: ai_agent_health rules: # Агент зациклился: > 100 tool calls за 5 минут - alert: AgentToolCallStorm expr: rate(ai_agent_tool_calls_total[5m]) > 0.33 for: 2m labels: severity: warning annotations: summary: "Agent {{$labels.agent}} makes >100 tool calls/min" runbook: "https://wiki.internal/runbooks/tool-storm" # LLM latency деградировала - alert: LLMLatencyHigh expr: histogram_quantile(0.95, rate(ai_agent_llm_latency_seconds_bucket[5m])) > 15 for: 5m labels: severity: warning annotations: summary: "p95 LLM latency > 15s for {{$labels.model}}" # Перерасход бюджета: > $50/час - alert: BudgetOverrun expr: rate(ai_agent_cost_usd[1h]) > 50 for: 10m labels: severity: critical annotations: summary: "Agent {{$labels.agent}} spending >$50/hr" # Policy violations spike - alert: PolicyViolationsSpike expr: increase(ai_agent_policy_violations[1h]) > 10 labels: severity: warning annotations: summary: "{{$labels.agent}} triggered {{$value}} policy violations in 1h" # Context window почти полон (>80%) - alert: ContextBloat expr: ai_agent_context_size_tokens > 160000 for: 5m labels: severity: info annotations: summary: "{{$labels.agent}} context at {{$value}} tokens (cap: 200k)"Шаг 4. Auto-recovery — graceful degradation
Когда алерт срабатывает, FlowLink может не просто уведомить, но и автоматически реагировать. Вот конфиг auto-recovery:
auto_recovery: enabled: true # При budget overrun — переключаем на дешёвую модель triggers: - alert: "BudgetOverrun" actions: - type: switch_model from: "gpt-4o" to: "gpt-4o-mini" - type: notify channel: "slack" message: "Switched {{agent}} to gpt-4o-mini due to budget overrun" # При tool storm — замораживаем агента на 60 секунд - alert: "AgentToolCallStorm" actions: - type: throttle max_calls_per_minute: 5 duration: 60s - type: notify channel: "pagerduty" severity: "high" # При latency — fallback на другой provider - alert: "LLMLatencyHigh" actions: - type: switch_provider from: "anthropic" to: "openai" fallback_model: "gpt-4o" - type: log message: "Provider switched due to latency"Auto-recovery: плюсы и минусы
Плюсы
- Бюджет защищён: при overrun агент автоматически переключается на gpt-4o-mini
- Runaway-агент останавливается за минуты, а не за часы ночных инцидентов
- Fallback на другого провайдера при деградации Anthropic
- Меньше страниц в PagerDuty — дежурный не просыпается по пустякам
Минусы
- Деградация качества при переключении на дешёвую модель
- Ложные срабатывания могут throttle-ить легитимную нагрузку
- Требует аккуратной настройки порогов alert-правил
Результат
Шаг 5. Графана-дашборд — что видеть в первую очередь
На главном экране дашборда должны быть четыре панели:
- Top-left:
sum(rate(ai_agent_cost_usd[1h])) by (agent)— расходы в реальном времени ($/час по агентам) - Top-right:
histogram_quantile(0.95, rate(ai_agent_llm_latency_seconds_bucket[5m]))— p95 latency по моделям - Bottom-left:
increase(ai_agent_policy_violations[1h])— количество нарушений политик за час - Bottom-right:
ai_agent_context_size_tokens— размер контекста (график по времени — показывает growth rate)
# Top-left: cost ($/час по агентам)sum(rate(ai_agent_cost_usd[1h])) by (agent)# Top-right: p95 latency по моделямhistogram_quantile(0.95, rate(ai_agent_llm_latency_seconds_bucket[5m]))# Bottom-left: нарушения политик за часincrease(ai_agent_policy_violations[1h])# Bottom-right: размер контекста во времениai_agent_context_size_tokens20
FlowLink поставляет готовый JSON для импорта в Grafana: flowlink dashboard import — одна команда, и все 20 панелей с alert annotations появятся в вашем Grafana.
Часто задаваемые вопросы
Чем мониторинг AI-агента отличается от обычного сервиса?
Обычный top/htop показывает только CPU и RAM. AI-агенту нужны метрики уровня задачи: ai_agent_tokens_total, ai_agent_cost_usd,ai_agent_llm_latency_seconds, ai_agent_tool_calls_total иai_agent_policy_violations. Они объясняют, почему процесс потребляет ресурсы и сколько это стоит в долларах.
Какие метрики важнее всего собирать?
Минимальный набор — токены (стоимость), p95 latency провайдера, error rate, cost в долларах, число tool calls, policy violations, размер контекста и обращения к секретам. Эти восемь метрик FlowLink экспортирует из коробки через /metrics на порту 9095.
Как systemd watchdog помогает авто-восстановлению?
Директива WatchdogSec=30 заставляет systemd убить процесс, если тот не отправил sd_notify(READY=1) за 30 секунд. В паре с Restart=on-failure зависший или зациклившийся агент перезапускается автоматически — без участия дежурного.
Что делать, если AI-агент зациклился в retry-loop?
Сработает алерт AgentToolCallStorm(>100 tool calls за 5 минут). Auto-recovery в FlowLink применит throttle (≤5 вызовов/мин на 60 секунд), отправит страницу в PagerDuty и при необходимости переключит модель или провайдера.
Нужен ли отдельный Grafana-дашборд для AI-агентов?
Да. Универсальные дашборды не показывают cost, токены и context bloat. FlowLink поставляет готовый JSON с 20 панелями и alert annotations — импортируйте одной командой flowlink dashboard import.
Мониторинг AI-агентов не должен быть сложным. Prometheus уже крутится в вашей инфраструктуре, systemd уже управляет процессами. Осталось добавить правильные метрики и пороги — и у вас будет visibility, которой не хватает 63% команд.
Grafana с пустым дашбордом не спасёт от runaway-агента
FlowLink Monitoring поставляется с готовым JSON-дашбордом для Grafana: 20 панелей, alert rules, Prometheus datasource. Импортируйте — и через 5 минут вы видите, что делают ваши агенты.
Скачать дашборд