<НА ГЛАВНУЮ

Xata Agent: Открытый AI-инструмент для проактивного мониторинга PostgreSQL и автоматизации DevOps

Xata Agent — это open source AI-инструмент для проактивного мониторинга PostgreSQL, автоматизации устранения неполадок и бесшовной интеграции в DevOps, который снижает нагрузку на администраторов и повышает производительность.

Проактивный мониторинг PostgreSQL с Xata Agent

Xata Agent — это open-source AI-ассистент, который выступает в роли инженера по надежности сайта для баз данных PostgreSQL. Он постоянно отслеживает логи и показатели производительности, такие как медленные запросы, пики загрузки CPU и памяти, а также аномальное количество соединений, что позволяет выявлять проблемы до возникновения сбоев.

Автоматизированное устранение неполадок и рекомендации

Агент использует тщательно подобранные диагностические плейбуки и безопасные SQL-рутины только для чтения, чтобы предоставлять конкретные рекомендации. Он также может автоматизировать рутинные задачи, например, вакуумирование и индексирование, снижая нагрузку на администраторов.

Современный технологический стек и опыт разработчиков

Xata Agent реализован как приложение на Next.js с использованием Vercel AI SDK и написан преимущественно на TypeScript. Репозиторий устроен как монорепозиторий с отдельными директориями для фронтенда агента, общих библиотек, конфигураций и Docker-ассетов. Для разработки нужно установить Node через '.nvmrc', выполнить 'pnpm install' для установки зависимостей, запустить локальный экземпляр PostgreSQL через Docker Compose, задать LLM-учётные данные в '.env.local', применить миграции и запустить dev-сервер. Такой подход облегчает работу над интерфейсом и диагностической логикой.

Простое развертывание и самостоятельный хостинг

Для продакшен-развертывания используются Docker-образы агента и PostgreSQL, с примером 'docker-compose.yml'. Операторы задают переменные окружения, например, публичный URL и API-ключи LLM, в '.env.production'. Запуск всей системы — одна команда:

docker-compose up

После запуска веб-интерфейс помогает настроить базу, учётные данные и провести первичные проверки состояния. Такой саморазмещённый подход обеспечивает баланс контроля и гибкости, позволяет интегрировать агента с внутренними системами мониторинга и пользоваться улучшениями сообщества.

Пример Docker-Compose конфигурации

version: '3.8'
services:
  xata-agent:
    image: xataio/agent:latest
    environment:
      PUBLIC_URL: http://localhost:8080
      OPENAI_API_KEY: your_openai_api_key_here
# Дополнительные провайдеры:
#      ANTHROPIC_API_KEY: your_anthropic_api_key_here
#      DEEPSEEK_API_KEY: your_deepseek_api_key_here
    ports:
      - "8080:8080"
  postgres:
    image: postgres:14
    environment:
      POSTGRES_USER: agent_user
      POSTGRES_PASSWORD: secure_password
      POSTGRES_DB: agent_db
    volumes:
      - db_data:/var/lib/postgresql/data
 
volumes:
  db_data:

Рабочий процесс разработки

# Выбор версии Node
cd apps/dbagent
nvm use
 
# Установка зависимостей
pnpm install
 
# Копирование примера окружения
cp .env.local.example .env.local
 
# Запуск dev-сервера
pnpm dev

В '.env.local' задаются ключи для LLM и URL фронтенда:

OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=ak-your-anthropic-key
PUBLIC_URL=http://localhost:3000

Расширяемость через инструменты и плейбуки

Xata Agent избегает ошибок, используя только человекочитаемые плейбуки и безопасные инструменты. Плейбуки — это пошаговые инструкции на английском, инструменты — функции на TypeScript для запросов к базе или API. Интеграции с Slack и AWS RDS расширяют возможности при минимальной настройке.

Основные функции:

  • Проактивный мониторинг логов и метрик.
  • Рекомендации по настройке PostgreSQL.
  • Анализ медленных запросов и советы по индексированию.
  • Безопасная диагностика с помощью SQL-запросов только для чтения.
  • Интеграция с облачными сервисами.
  • Оповещения в Slack в реальном времени.
  • Поддержка нескольких LLM для гибкости.
  • Пользовательские плейбуки и диагностические сценарии.
  • Возможность работать как MCP-сервер.
  • Планируемые функции утверждения операций и автоматического тестирования.

Пример реализации инструмента

// packages/db-tools/src/tools/checkSlowQueries.ts
import { Pool } from 'pg';
import { ToolResult } from 'xata-agent';
 
export async function checkSlowQueries(pool: Pool): Promise<ToolResult> {
  const result = await pool.query('
    SELECT query, total_time, calls
    FROM pg_stat_statements
    ORDER BY total_time DESC
    LIMIT 5;
  ');
  return { rows: result.rows };
}

Регистрация инструмента:

// apps/dbagent/src/server/tools.ts
import { defineTool } from 'xata-agent';
import { checkSlowQueries } from 'db-tools';
 
defineTool('checkSlowQueries', {
  description: 'Получить пять самых медленных запросов из pg_stat_statements',
  execute: async ({ dbPool }) => {
    return await checkSlowQueries(dbPool);
  },
});

Пример плейбука диагностики

# configs/playbooks/investigate_slow_queries.playbook.yaml
name: Исследование медленных запросов
description: Шаги для выявления и устранения узких мест из-за медленных запросов.
steps:
  - tool: getTablesAndInstanceInfo
    description: "Собрать информацию о размерах таблиц и экземпляре базы."
  - tool: checkSlowQueries
    description: "Список самых медленных запросов для выявления проблемных зон."
  - tool: suggestIndexes
    description: "Рекомендации по индексам для запросов, превышающих пороги."
  - tool: evaluateVacuumStats
    description: "Проверка статистики vacuum для оценки влияния раздувания таблиц."
  - tool: notifySlack
    description: "Оповещение команды в Slack, если задержки критичны."

Интеграция с Slack

// packages/integrations/src/slackAdapter.ts
import { SlackAdapter } from 'xata-agent/integrations';
 
const slack = new SlackAdapter({ webhookUrl: process.env.SLACK_WEBHOOK_URL });
 
export async function notifySlack({ message }: { message: string }) {
  await slack.send({
    channel: process.env.SLACK_CHANNEL,
    text: `Xata Agent Alert: ${message}`,
  });
}

Дорожная карта и будущие улучшения

В планах: пользовательские плейбуки для специфичных процедур, поддержка MCP для вызова инструментов по сети, системы тестирования точности рекомендаций, процедуры согласования для критических операций и облачная управляемая версия с упрощённой интеграцией.

Безопасные и коллективные AI-операции

Архитектура Xata Agent сочетает большие языковые модели с детерминированными инструментами через промт-ориентированный слой. Это снижает ошибки и обеспечивает безопасность за счёт использования человекочитаемых плейбуков и надежных процедур. Проект стандартизирует реагирование на инциденты, облегчает работу младших инженеров и поддерживает развитие сообщества через открытый исходный код.

Xata Agent — это практичное решение, дополняющее человеческий опыт AI-инструментами для поддержания производительности и надежности PostgreSQL на масштабируемом уровне.

🇬🇧

Switch Language

Read this article in English

Switch to English