Observability 3.0. AI-слой - Ollama, MCP, Claude и автоматизация
Это четвёртая статья из серии Observability 3.0 простыми словами. Разобрали метрики и логи с трейсами. Теперь про AI.
До сих пор мониторинг работал так. Инструменты собирают данные, человек их анализирует. Observability 3.0 добавляет промежуточное звено - AI, который умеет читать метрики, логи и трейсы и объяснять, что происходит.
Это не замена инженера. Это помощник, который за секунды делает то, на что у человека уходят минуты. Сопоставляет данные из разных источников, находит корреляции, формулирует гипотезы.
Ollama. AI на вашем сервере
Ollama - программа, которая запускает AI-модели (LLM) прямо на вашем сервере. Без облака, без подписок, без отправки данных наружу.
Почему это важно
Мониторинг содержит чувствительные данные. IP-адреса, имена серверов, названия сервисов, иногда фрагменты запросов. Отправлять это в облачный AI не всегда допустимо по политике безопасности компании.
Ollama решает эту проблему. Модель крутится на вашем железе. Данные не покидают периметр.
Как это работает
- Устанавливаете Ollama на сервер (Linux, macOS, Windows)
- Скачиваете модель -
ollama pull llama3.1:8b - Модель готова к работе. Можно общаться через терминал, API или через интерфейс
Ollama выставляет HTTP API на порту 11434. Любая программа может отправить запрос и получить ответ. Это то, что позволяет подключить AI к мониторингу.
Требования к железу
Для модели на 7-8 миллиардов параметров (достаточно для анализа инцидентов)
- CPU - 4 ядра
- RAM - 8-16 GB. Модель занимает 4-8 GB
- GPU - не обязателен, но с ним ответы приходят за секунды вместо десятков секунд
Для моделей побольше (70B) нужен GPU с 24+ GB видеопамяти. Но для задач мониторинга это избыточно.
Какие модели использовать
Все модели бесплатные и open-source. Запускаются через Ollama.
LLaMA 3 от Meta
Самая популярная open-source модель. Хорошо понимает контекст, адекватно работает с техническими текстами. Версия 8B - разумный баланс между качеством и скоростью.
ollama pull llama3.1:8b
Mistral от Mistral AI
Французская модель, сильная в логическом анализе. Версия 7B работает быстро и даёт качественные ответы на технические вопросы.
ollama pull mistral:7b
Gemma от Google DeepMind
Лёгкая модель от Google. Версия 2B подойдёт для слабого железа - можно запустить даже на ноутбуке с 8 GB RAM. Качество ниже, чем у LLaMA, но для простых задач хватает.
ollama pull gemma2:2b
Phi-4 от Microsoft
Модель на 14B параметров, но по качеству сопоставима с более крупными. Сильна в пошаговом анализе, что полезно при разборе инцидентов.
ollama pull phi4:14b
Какую выбрать
Для начала LLaMA 3.1 8B или Mistral 7B. Обе работают на CPU с 16 GB RAM, обе достаточно умные для анализа метрик и логов. Попробуйте обе и выберите ту, чьи ответы вам больше нравятся.
MCP. Как AI подключается к мониторингу
MCP (Model Context Protocol) - протокол, через который AI-модель получает доступ к внешним системам. Без MCP модель может только отвечать на вопросы из своей памяти. С MCP она может сходить в Grafana, Prometheus, Loki и достать реальные данные.
Как это работает
Представьте, что вы AI-модель. Вас спросили - какой сейчас CPU на сервере web-01. Без MCP вы можете только сказать, что у вас нет доступа к серверам. С MCP вы можете
- Подключиться к Prometheus через MCP-сервер
- Выполнить запрос
node_cpu_seconds_total{instance="web-01"} - Получить данные
- Сформулировать ответ - CPU на web-01 сейчас 73%, час назад было 45%, рост стабильный
MCP-сервер - посредник между AI и внешней системой. Он описывает, какие действия доступны (какие запросы можно делать), и выполняет их по запросу модели.
MCP-сервер для Grafana
Для подключения AI к Grafana есть community-решения, например mcp-grafana. Такой сервер подключается к API Grafana и даёт AI доступ к дашбордам, метрикам из Prometheus, логам из Loki, трейсам из Tempo и списку алертов.
AI буквально видит те же данные, что вы видите в Grafana. Только быстрее.
Важно понимать, что это не официальный продукт Grafana Labs, а решения от сообщества. Они работают, но требуют ручной настройки.
Grafana Tool Server
Ещё один способ связать AI с Grafana. Grafana Tool Server (GTS) работает как FastAPI-прокси между Open WebUI и n8n. Схема такая
Open WebUI → GTS (FastAPI) → n8n → Grafana API → данные
GTS принимает запросы от Open WebUI, пересылает их в n8n workflow, n8n выполняет запрос к Grafana API и возвращает результат. Это позволяет Open WebUI задавать вопросы по метрикам и логам напрямую через чат.
Для работы GTS нужен Grafana Service Account с API-токеном. Создаётся в Grafana так
- Administration → Users and access → Service Accounts
- Создать новый аккаунт с ролью Viewer (для чтения дашбордов)
- Добавить токен (Add Token) и сохранить его
Этот токен прописывается в переменной окружения GRAFANA_API_KEY и используется во всех подключениях к API.
Практическая установка. Docker Compose
Весь AI-слой можно поднять одним файлом docker-compose. Вот минимальная конфигурация.
Файл .env
GRAFANA_URL=http://grafana:3000
GRAFANA_API_KEY=glsa_ваш_токен_из_grafana
N8N_GRAFANA_TOKEN=glsa_ваш_токен_из_grafana
GRAFANA_URL внутри Docker-сети указывает на имя сервиса, а не на localhost. Если Grafana запущена в том же docker-compose, используйте http://grafana:3000.
Docker Compose для AI-стека
services:
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on:
- ollama
volumes:
- open-webui-data:/app/backend/data
restart: unless-stopped
n8n:
image: n8nio/n8n
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=adminpass
- N8N_GRAFANA_TOKEN=${N8N_GRAFANA_TOKEN}
volumes:
- n8n-data:/home/node/.n8n
restart: unless-stopped
volumes:
ollama-data:
open-webui-data:
n8n-data:
Запуск одной командой
docker compose up -d
После запуска
- Ollama доступна на порту 11434
- Open WebUI на порту 3000
- n8n на порту 5678
Скачивание моделей после запуска
docker exec -it ollama ollama pull llama3.1:8b
docker exec -it ollama ollama pull mistral:7b
Модели скачиваются один раз и сохраняются в volume.
Claude Desktop и Open WebUI. Интерфейс
Это программы, через которые вы общаетесь с AI.
Claude Desktop
Десктопное приложение от Anthropic. Поддерживает MCP из коробки. Подключаете MCP-сервер к Grafana и можете задавать вопросы прямо в чате
- Какие сервисы сейчас работают с ошибками
- Покажи топ-5 медленных запросов к базе за последний час
- Почему payment-service перезапускался ночью
Claude Desktop использует облачную модель от Anthropic. Данные уходят в облако. Для демонстрации и личного использования подходит. Для корпоративных данных зависит от политики компании.
Бесплатного тарифа Claude достаточно для экспериментов.
Open WebUI
Веб-интерфейс, который работает с Ollama. Выглядит как ChatGPT, но подключается к локальной модели. Данные не уходят наружу.
После установки через Docker Compose (описано выше) Open WebUI доступен на http://localhost:3000. При первом входе создаёте аккаунт администратора.
Настройка Open WebUI для работы с Grafana
Чтобы Open WebUI мог отправлять запросы к Grafana через n8n, нужно добавить function (инструмент) в интерфейсе
- Зайдите в Open WebUI → Workspace → Functions
- Импортируйте JSON-файл
grafana-query.json(его можно найти в репозитории автора оригинальной статьи) - Этот инструмент добавит в чат возможность выполнять запросы к Prometheus и Loki через n8n
Также полезно настроить System Prompt для observability. Он подсказывает модели, что она работает с мониторингом и какие инструменты ей доступны. Без промпта модель может не понимать контекст вопросов про метрики и алерты.
n8n. Автоматизация
n8n - визуальный конструктор автоматизаций. Похож на Zapier, но open-source и можно поставить на свой сервер.
Зачем в мониторинге
Без n8n всё вручную. Пришёл алерт, вы открываете дашборд, анализируете, пишете в Slack. С n8n
- Alertmanager отправляет алерт в n8n через вебхук
- n8n формирует вопрос к AI - проанализируй текущее состояние сервиса X, вот данные алерта
- AI идёт в Grafana через MCP, собирает метрики и логи
- n8n отправляет готовый анализ в Slack
Вы приходите утром, открываете Slack и видите не просто CPU high on web-03, а полный разбор. Что случилось, когда началось, вероятная причина, что проверить.
Настройка workflow в n8n
После входа в n8n (http://localhost:5678) нужно создать workflow для обработки запросов от Open WebUI. Есть два способа
Импорт готового. Автор оригинальной серии опубликовал JSON-файл с готовым workflow. Импортируйте его через n8n → Workflows → Import from File.
Создание вручную. Типовой workflow выглядит так
- Webhook (входная точка) - принимает запрос от Open WebUI или Alertmanager
- HTTP Request - отправляет PromQL-запрос в Grafana API с токеном авторизации
- Function - обрабатывает ответ, форматирует данные
- Respond to Webhook - возвращает результат обратно
После импорта обязательно проверьте Prometheus UID в нодах workflow. У каждого инстанса Grafana свой UID для источников данных. Его можно найти в Grafana → Configuration → Data Sources → Prometheus → URL содержит UID.
Проверка подключения
После настройки можно проверить, что n8n достучался до Grafana
curl -X POST http://localhost:5678/webhook/grafana-query \
-H "Content-Type: application/json" \
-d '{"query":"up"}'
Если в ответе пришли данные о состоянии таргетов Prometheus, всё работает.
Примеры автоматизаций
- Ночной дежурный. Алерт ночью → AI анализирует → если некритично, записывает в тикет. Если критично, звонит дежурному с готовым анализом
- Еженедельный отчёт. Каждый понедельник n8n спрашивает AI о итогах за неделю. Главные инциденты, тренды, что ухудшилось. Отправляет в канал команды
- Проактивный мониторинг. Каждый час AI проверяет, есть ли аномалии, которые ещё не вызвали алерт. Если находит, предупреждает заранее
Что это значит для L2 на практике
Три реальных изменения в рабочем дне.
Первичный анализ без PromQL
Раньше
Надо посмотреть нагрузку на web-серверах...
rate(node_cpu_seconds_total{mode!="idle",job="web"}[5m])...
или нет, это не то...
irate? avg by instance?
Теперь
Покажи нагрузку на web-серверах за последний час
AI сам напишет правильный PromQL-запрос и покажет результат в понятном виде.
Корреляция без ручного поиска
Раньше вы открываете три вкладки (метрики, логи, трейсы), выставляете одинаковый период времени, сравниваете глазами, ищете паттерн.
Теперь - есть ли связь между ростом латентности order-service и ошибками в логах payment-service. AI проверит оба сервиса и ответит.
Эскалация с данными
Раньше - пользователи жалуются на тормоза, вроде бы что-то с базой, я не уверен.
Теперь - латентность order-service выросла в 14:25 из-за исчерпания пула соединений к PostgreSQL. Активных соединений 100/100. В логах connection pool exhausted. Трейсы показывают, что запрос к БД занимает 2.8с вместо 50мс. Нужна проверка утечки соединений в коде.
Тестирование. Проверяем что AI работает
После установки стека можно проверить AI двумя способами.
Через Open WebUI
Откройте http://localhost:3000, выберите модель (например LLaMA 3.1 8B) и задайте вопрос
Какие сервисы сейчас недоступны в Prometheus?
Если настроен инструмент grafana-query, AI выполнит запрос up == 0 и покажет результат. Если нет, он ответит на основе своих знаний (без реальных данных).
Через CLI (curl)
Можно задать вопрос напрямую через API Ollama без веб-интерфейса
curl http://localhost:11434/api/generate \
-d '{
"model": "llama3.1:8b",
"prompt": "Объясни что означает метрика node_load15 в Prometheus и когда стоит беспокоиться",
"stream": false
}'
Ответ придёт в JSON. Поле response содержит текст.
Сравнение моделей
Попробуйте один и тот же вопрос на разных моделях и сравните ответы
# LLaMA
curl http://localhost:11434/api/generate -d '{"model":"llama3.1:8b","prompt":"Что такое scrape interval в Prometheus","stream":false}'
# Mistral
curl http://localhost:11434/api/generate -d '{"model":"mistral:7b","prompt":"Что такое scrape interval в Prometheus","stream":false}'
LLaMA обычно даёт более развёрнутые ответы. Mistral отвечает компактнее и точнее. Phi-4 лучше всех справляется с пошаговым анализом. Для задач мониторинга все три подходят.
Troubleshooting. Частые проблемы
При первой настройке стека почти наверняка что-то пойдёт не так. Вот самые частые проблемы и как их решать.
Ollama и Open WebUI
Open WebUI не видит Ollama. Проверьте переменную OLLAMA_BASE_URL в docker-compose. Если оба контейнера в одной сети, URL должен быть http://ollama:11434, а не http://localhost:11434.
docker exec -it open-webui printenv | grep OLLAMA
Модель отвечает очень медленно. На CPU ответ 7B-модели занимает 30-60 секунд. Это нормально. Если нужно быстрее, используйте меньшую модель (Gemma 2B) или добавьте GPU.
Модель не скачивается. Проверьте, что контейнер Ollama имеет доступ в интернет. Модели весят 4-8 GB и скачиваются с серверов Ollama.
docker exec -it ollama ollama list
n8n
Webhook не отвечает. Убедитесь, что workflow активирован (тумблер Active в правом верхнем углу). Неактивный workflow не принимает запросы.
Ошибка 401 при обращении к Grafana. Токен невалидный или истёк. Создайте новый Service Account Token в Grafana и обновите переменную N8N_GRAFANA_TOKEN.
Пустой ответ от Grafana API. Проверьте Prometheus UID в нодах workflow. Он уникален для каждой установки Grafana.
# Проверить доступ к Grafana API из контейнера n8n
docker exec -it n8n curl -H "Authorization: Bearer $N8N_GRAFANA_TOKEN" http://grafana:3000/api/datasources
Сеть и подключения
Контейнеры не видят друг друга. Все сервисы должны быть в одной Docker-сети. Если используете отдельные docker-compose файлы для observability-стека и AI-стека, создайте общую external network.
Порт занят. Если порт 3000 или 5678 уже используется, измените маппинг в docker-compose. Например "3001:8080" для Open WebUI.
# Проверить какие порты заняты
docker ps --format "table {{.Names}}\t{{.Ports}}"
Ограничения. О чём помнить
AI в мониторинге - мощный инструмент, но не волшебная палочка.
AI галлюцинирует. Модель может уверенно написать чушь. Назовёт несуществующий сервис, выдумает метрику, перепутает серверы. Всегда проверяйте выводы AI по реальным данным в дашборде.
Локальные модели слабее облачных. LLaMA 8B на CPU отвечает медленнее и менее точно, чем Claude в облаке. Для простых задач хватает, для сложного анализа может не дотянуть.
MCP - молодая технология. Протоколу меньше двух лет. Не все инструменты поддерживают его из коробки. Настройка может потребовать ковыряния в конфигах.
Не заменяет понимание. AI ускоряет работу, но не заменяет знание системы. Если вы не понимаете, что такое connection pool, ответ AI об исчерпании connection pool вам мало поможет.
С чего начать
Если хотите попробовать, вот простой путь
- Установите Ollama на свой компьютер или сервер. Скачайте LLaMA 3.1 8B
- Поставьте Open WebUI через Docker. Подключите к Ollama
- Попробуйте задавать вопросы по мониторингу в чате - пока без MCP, просто чтобы понять, как модель думает
- Когда будете готовы - настройте MCP-подключение к Grafana и начните задавать вопросы по реальным данным
Не надо ставить всё сразу. Каждый шаг самоценен.
Часть серии Observability 3.0 простыми словами. На основе материалов Cumhur M. Akkaya.


