Grafana代理工具

该项目展示了一个使用Semantic Kernel Python SDK构建的AI代理,通过本地MCP服务器与Grafana交互的概念验证。

  • by benbakhar
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 benbakhar/grafana-ai-agent

使用说明

基于语义内核的Grafana代理PoC

该项目演示了使用语义内核Python SDK构建AI代理的概念验证,该SDK通过本地MCP服务器与Grafana接口。

先决条件

  • Python 3.8+
  • Docker和Docker Compose
  • 没有

设置

  1. 创建虚拟环境并激活它:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 配置环境变量:

    • 复制.env.example文件以创建新的.env文件:
    cp .env.example .env
    
    • 用您的凭据更新.env文件:
      • AZURE_OPENAI_DEPLOYMENT_NAME:您的AZURE OPENAI部署名称
      • AZURE_OPENAI_API_VERSION:neneneba API版本(例如,2024-12-01预览版)
      • AZURE_OPENAI_API_KEY:你的AZURE OPENAI API密钥
      • AZURE_OPENAI_BASE_URL:您的AZURE OPENAI基本URL
      • GRAFANA_MCP_URL:本地MCP服务器URL(默认值:http://localhost:8000/sse)
      • GRAFANA_URL:GRAFANA实例URL(默认值:http://localhost:3000)
      • GRAFANA_ADMIN用户名:GRAFANA管理员用户名
      • GRAFANA_ADMIN_PASSWORD:GRAFANA管理员密码
      • GRAFANA_API_KEY:您的GRAFANA API密钥(在GRAFANA UI中创建一个)
  2. 使用Docker Compose启动Grafana:

cd docker
docker-compose up -d
  1. 配置Grafana:
    • 访问 Grafana 和http://localhost:3000
    • 使用.env文件中设置的凭据登录
    • 转至配置->API密钥
    • 创建具有管理员角色的新API密钥
    • 将生成的密钥复制到.env文件的GRAFANA_API_key

运行应用程序

该项目提供了三种与Grafana互动的方式:

  1. 基本控制台界面 (src/console.py):

    python src/console.py
    

    基于llm和语义内核的基本聊天控制台界面。

  2. 交互式控制台代理 (src/console_agent.py):

    python src/console_agent.py
    

    基于代理的控制台接口由llm和语义内核提供支持,允许更复杂的交互。

  3. REST API服务器 (src/main.py):

    PYTHONPATH=. uvicorn src.main:app --reload --host 0.0.0.0 --port 8080 --log-level debug
    

    访问APIhttp://localhost:8080

    • REST API文档:http://localhost:8080/docs
    • 健康检查:http://localhost:8080/health

API终点

健康检查

GET /health

查询代理

POST /query
Content-Type: application/json

{
    "query": "Your natural language query here"
}

Grafana通道

Grafana UI可在http://localhost:3000

  • 使用.env文件中指定的凭据

示例用法

以下是您可以发送给代理的一些示例查询:

  1. 创建新仪表板:
{
    "query": "Create a new dashboard called 'System Metrics'"
}
  1. 获取仪表板信息:
{
    "query": "Show me the details of dashboard with UID xyz123"
}
  1. 更新仪表板:
{
    "query": "Update the System Metrics dashboard to include a CPU usage panel"
}

项目结构

graphana-agent-poc/
├── docker/
│   └── docker-compose.yml       # Grafana container configuration
├── src/
│   ├── agent/
│   │   ├── plugins/
│   │   │   └── grafana_plugin.py    # Semantic Kernel plugin for Grafana
│   │   └── skills/
│   │       └── grafana_skills.py     # Implementation of Grafana operations
│   └── main.py                       # FastAPI application and agent setup
├── requirements.txt                   # Python dependencies
└── README.md                         # This file