Привет, меня зовут Артем, я тимлид DevOps в одной аутстафф-компании. Столкнулись с классической ситуацией: десятки микросервисов, Kubernetes, куча observabilityПривет, меня зовут Артем, я тимлид DevOps в одной аутстафф-компании. Столкнулись с классической ситуацией: десятки микросервисов, Kubernetes, куча observability

Как мы учили ИИ тушить инциденты вместо нас  (что из этого вышло)

Привет, меня зовут Артем, я тимлид DevOps в одной аутстафф-компании. Столкнулись с классической ситуацией: десятки микросервисов, Kubernetes, куча observability-стека (Prometheus, Loki, Tempo, Grafana) и... постоянные ночные инциденты. «High CPU», «Pod CrashLoopBackOff», «5xx errors rising».

У нас есть runbooks, документация, скрипты для быстрого доступа к логам. Но в 3 ночи, когда срабатывает критический алерт, тратишь время на то, чтобы проснуться, сообразить, куда залогиниться и какую команду выполнить… Мы задались вопросом: а если первым на инцидент будет реагировать не человек, а ИИ-агент?

Боль, которую мы хотели решить:

  1. Время реакции: Сократить Time To Acknowledge (TTA) с 10-15 минут до мгновенного.

  2. Выгорание: Убрать необходимость вскакивать среди ночи по каждому мелкому, но шумному алерту (вспомните алерт по порогу в 85% CPU, который срабатывает каждую ночь).

  3. Ошибки: Избежать человеческих ошибок в спешке (например, запуска kubectl delete pod вместо kubectl describe pod).

Что мы сделали:

Мы решили не строить сложную самоисцеляющуюся систему. Мы начали с малого - с ChatOps-бота с мозгом из GPT-4 API.

Архитектура нашего ночного дежурного:

  1. Alertmanager (наш диспетчер алертов) вместо PagerDuty/Opsgenie стал слать вебхуки не людям, а нашему внутреннему сервису-адаптеру.

  2. Адаптер (написанный на Python) структурировал алерт: имя, severity, метки (labels), аннотации (к where ссылке на дашборду Grafana).

  3. Сердце системы - агент на LLM. Адаптер формировал для LLM промпт, который выглядел так:

Ты - Senior DevOps инженер. Получен алерт в продовой среде. Контекст: Kubernetes кластер, observability стек (Prometheus, Loki, Grafana). Алерт: {название_алерта}. Детали: {метки_алерта: namespace, pod, service}. Ссылка на дашборду для диагностики: {ссылка}. Инструкции: 1. Сначала оцени критичность. Если это 'warning' и связано с утилизацией CPU/RAM ниже 90% — это низкий приоритет. 2. Сгенерируй конкретные, исполнимые команды kubectl/helm/grep для диагностики. Например: "kubectl -n {namespace} logs {pod_name} --tail=50 | grep -i error". 3. Предположи возможную причину на основе названия алерта (например, 'High Memory Usage' -> возможна утечка памяти или недостаточно limits). 4. Если алерт 'critical' и связан с 'Http5xxErrors' — предложи немедленные действия: проверить endpoint, перезапустить pod. Ответ дай строго в формате JSON: { "priority": "high/low", "diagnosis_steps": ["шаг1", "шаг2"], "immediate_commands": ["команда1", "команда2"], "likely_cause": "текст" }

⠀⠀

Telegram-бот получал этот JSON и публиковал сообщение в наш операционный канал:

« Получен алерт: PodCrashLoopBackOff в namespace payment.
Приоритет: HIGH
Вероятная причина: Ошибка при старте приложения, проверь логи на предмет исключений.
Что выполнить:
kubectl -n payment logs payment-service-abcd1234 --previous
kubectl -n payment describe pod payment-service-abcd1234».

Честные результаты и грабли, на которые мы наступили:

Что сработало:

  • Мелкие инциденты тушились сами. Алерт на высокий процент ошибок в конкретном эндпоинте? Бот сразу предлагал команду для проверки логов и деплоймента этого сервиса. Time To Restore (TTR) для таких случаев упал с ~40 минут до ~10.

  • Контекст в один клик. Больше не надо было искать, в каком неймспейсе упал под. Бот давал готовую команду. Это экономило когнитивную нагрузку.

  • Обучение джуниоров. История сообщений бота стала отличной базой знаний: по каждому инциденту был зафиксирован предполагаемый путь диагностики.

Хорошая команда, не неидеальная...
Хорошая команда, не неидеальная...

С чем столкнулись (важно):

1. Галлюцинации в командах. Однажды бот в предложенной команде использовал несуществующий флаг --container-name вместо -c.

Вывод: все команды от ИИ должен проверять и подтверждать человек перед запуском. Мы внедрили кнопки «Выполнить» рядом с каждой командой в том же Telegram, которая шла на отдельный валидационный микросервис.

2. Контекстных ограничений не хватало. ИИ не знал про нашу внутреннюю структуру каталогов или специфичные скрипты.

Решение: мы добавили в промпт ссылку на векторную базу знаний (использовали Qdrant), где были заиндексированы наши внутренние runbooks и конфиги.

3. Стоимость. Первые пару недель с ужасом смотрели на счёт от OpenAI. Тысячи алертов и тысячи промптов.

Что сделали: жестко ограничили длину промпта, кэшировали ответы на одинаковые алерты, перешли на gpt-3.5-turbo для всех warning-алертов, оставив gpt-4 только для critical.

4. Ложное чувство безопасности. Однажды бот классифицировал memory leak как «low priority», потому что usage был 89%. Но это был медленный рост на критическом stateful-сервисе.

Вывод: ИИ - отличный ассистент, но не ответственный. Дежурный инженер всегда должен сохранять окончательный контроль и проверять критические действия системы.

⠀⠀

⠀⠀

Итоги и совет тем, кто хочет повторить:

Наш эксперимент мы считаем успешным. Мы не заменили себя, но создали неустающего стажёра, который:

  • Мгновенно реагирует.

  • Не паникует.

  • Всегда помнит, где лежат runbooks.

С чего начать вам, если хотите такого же ночного дежурного:

  1. Возьмите самый частый и надоедливый алерт.

  2. Напишите для него идеальный промпт, как если бы вы объясняли задачу джуниору.

  3. Сделайте простой PoC: алерт → вебхук → скрипт с вызовом OpenAI API → вывод в Slack.

  4. Обязательно встройте человеческое подтверждение на любые action.

Новая метрика - количество спокойный ночей :-)
Новая метрика - количество спокойный ночей :-)

ИИ в DevOps = усиление и ускорение. Чтобы тратить силы на сложные, интересные задачи, которые действительно требуют человеческого интеллекта. А ночи... пусть будут спокойными :-)

*Сейчас мы экспериментируем с open-source моделями (Llama 3, Mistral), развёрнутыми внутри кластера, чтобы закрыть вопросы безопасности и стоимости. Но это уже тема для следующей статьи.

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу service@support.mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно

Слабое завершение 2025 года для Bitcoin не означает медвежий первый квартал 2026 года, говорит эксперт

Слабое завершение 2025 года для Bitcoin не означает медвежий первый квартал 2026 года, говорит эксперт

Энтони Помплиано заявил, что отсутствие роста Bitcoin в конце года не свидетельствует о неизбежном обвале в первом квартале 2026 года. Публикация «Слабое завершение 2025 года для Bitcoin не означает
Поделиться
Coinspeaker2025/12/24 18:41
HashKey Capital привлекает $250 млн для нового мультистратегического криптофонда

HashKey Capital привлекает $250 млн для нового мультистратегического криптофонда

Статья HashKey Capital привлекает 250 млн $ для нового мультистратегического криптовалютного фонда впервые появилась на Coinpedia Fintech News Несмотря на более жесткую ликвидность и более избирательный
Поделиться
CoinPedia2025/12/24 18:41
Эксперты указали на концентрацию капитала в биткоине и Ethereum

Эксперты указали на концентрацию капитала в биткоине и Ethereum

Структура крипторынка «сужается»: капитал все больше концентрируется в двух крупнейших монетах. Таким мнением поделились аналитики маркетмейкера Wintermute. ht
Поделиться
ProBlockChain2025/12/24 14:15