性能监控数据处理系统

一个用于从远程SFTP服务器获取、存储和查询性能监控(PM)XML数据的完整系统。

  • by ApoorvBrooklyn
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ApoorvBrooklyn/Networking-MCP

使用说明

PM数据管道系统

用于从远程SFTP服务器获取、存储和查询性能监控(PM)XML数据的完整系统。

建筑

SFTP Server → Job Server (scheduled fetcher) → PostgreSQL → MCP Server → REST API → Streamlit Chatbot

组件

  1. 作业服务器:定时SFTP文件提取器和XML解析器
  2. PostgreSQL数据库:存储所有PM计数器数据
  3. MCP服务器:具有自然语言处理功能的查询引擎
  4. REST API:FastAPI服务器公开查询端点
  5. 流线型前端:用于查询数据的聊天机器人界面

快速开始

先决条件

  • Docker和Docker Compose

设置

  1. 克隆仓库

  2. 复制 env.example 到 .env:

    cp env.example .env
    
  3. 这 .env 文件已为docker compose中包含的示例SFTP服务器配置:

    SFTP_HOST=sftp_server
    SFTP_USERNAME=sftpuser
    SFTP_PASSWORD=password
    SFTP_PORT=22
    SFTP_REMOTE_PATH=/home/sftpuser/uploads
    
  4. 启动所有服务(包括示例SFTP服务器):

    docker-compose up -d
    
  5. 将示例XML文件上传到SFTP服务器:

    ./scripts/upload_sample_files.sh
    
  6. 访问前端 http://localhost:8501

使用自己的SFTP服务器

如果您有自己的SFTP服务器,请更新 .env 使用您的凭据文件:

SFTP_HOST=your-sftp-host.com
SFTP_USERNAME=your-username
SFTP_PASSWORD=your-password
SFTP_PORT=22
SFTP_REMOTE_PATH=/path/to/xml/files/

然后只启动应用程序服务(不包括示例SFTP服务器):

docker-compose up -d postgres job_server api_server frontend

用法

Streamlit聊天机器人

打开Streamlit前端,用自然语言提问:

  • “2024-01-16下午2:10的ifUtilizationIn值是多少?”
  • “显示所有界面”
  • “有哪些可用的计数器?”

API终点

  • GET /api/query?q=<natural language query> -查询数据
  • GET /api/interfaces -列出接口
  • GET /api/counters -列出计数器
  • GET /api/alerts -获取警报
  • GET /api/config/fetch-interval -获取获取间隔
  • POST /api/config/fetch-interval -更新获取间隔

配置

提取间隔可以更改:

  • 通过Streamlit UI侧栏
  • 通过REST API
  • 作业服务器将自动获取新的间隔

数据库模式

系统存储:

  • 文件元数据和校验和
  • 网元信息
  • 测量间隔
  • 接口计数器
  • IP/TCP/系统计数器
  • BGP对等数据
  • 阈值警报
  • 数据质量指标

发展

运行个人服务

# Job Server
cd job_server
python main.py

# API Server
cd api_server
uvicorn main:app --reload

# Frontend
cd frontend
streamlit run app.py

环境变量

看 .env.example 对于所有可用的配置选项。

使用示例SFTP服务器进行测试

docker compose包含一个用于测试的示例SFTP服务器。它使用 atmoz/sftp 图像,并配置有:

  • 用户名: sftpuser
  • 密码: password
  • 端口: 2222 (映射到集装箱港口22)
  • 上传目录: /home/sftpuser/uploads

手动SFTP连接

您可以手动连接到示例SFTP服务器:

# From your host machine
sftp -P 2222 sftpuser@localhost

# Or from within Docker network
docker exec -it pm_sftp_server sftp sftpuser@localhost

上传文件

  1. 使用上传脚本 (推荐):

    ./scripts/upload_sample_files.sh
    
  2. 通过Docker手动上传:

    docker cp example_1.xml pm_sftp_server:/home/sftpuser/uploads/
    docker cp example_2.xml pm_sftp_server:/home/sftpuser/uploads/
    
  3. 通过SFTP客户端手动上传:

    sftp -P 2222 sftpuser@localhost
    # Then in SFTP prompt:
    put example_1.xml /home/sftpuser/uploads/
    put example_2.xml /home/sftpuser/uploads/
    

许可证

麻省理工学院