AI监控系统

一个基于Prometheus/Loki/Grafana和DeepSeek V3.1的服务器监控系统,通过Telegram机器人提供AI分析和警报功能。

  • by abildinov
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 abildinov/-MCP-.monitoring

使用说明

🚀 AI分析监控系统

Prometheus/Loki/Grafana+Deepseek v3.1上的监控系统通过Telegram bot。

这是什么项目

带有AI分析的服务器监控系统由两部分组成:

  1. 基础设施部分 -Docker(普罗米修斯、洛基、格拉法纳等)
  2. AI部分 Python脚本坚持度量并通过Deepseek分析它们

所有这些都通过MCP服务器(Model Context Protocol)运行,可以从Telegram机器人中使用,也可以直接使用。

MCP服务器端口:8000

项目体系结构

┌──────────────────────────────────────────────────────────────────────────┐
│                          DOCKER INFRASTRUCTURE                           │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│   ┌──────────────┐      ┌──────────────┐      ┌──────────────┐          │
│   │   Prometheus │      │     Loki     │      │   Grafana    │          │
│   │    :9090     │      │    :3100     │      │    :3000     │          │
│   └──────┬───────┘      └──────┬───────┘      └──────┬───────┘          │
│          │                     │                     │                   │
│          │ scrape              │ query               │ visualize         │
│          │                     │                     │                   │
│   ┌──────▼───────┐      ┌──────▼───────┐      ┌──────▼───────┐          │
│   │ Node Exporter│◄─────┤   Promtail   │      │  Dashboards  │          │
│   │    :9100     │      │  (collector) │      │  + Alerts    │          │
│   └──────┬───────┘      └──────┬───────┘      └──────────────┘          │
│          │                     │                                         │
│          │                     │ docker logs                             │
│          │                     │                                         │
│   ┌──────▼───────┐             │                                         │
│   │  cAdvisor    │             │                                         │
│   │    :8080     │◄────────────┘                                         │
│   │  (containers)│                                                        │
│   └──────────────┘                                                        │
│                                                                           │
└──────────────────────────────────────────────────────────────────────────┘
                                      ▲
                                      │ API calls
                                      │
┌──────────────────────────────────────────────────────────────────────────┐
│                          MCP SERVER (Python)                              │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│   ┌─────────────────────────────────────────────────────────────┐        │
│   │  MCP Tools (8 инструментов)                                   │        │
│   │  ├─ get_cpu_usage        ├─ get_memory_status              │        │
│   │  ├─ get_disk_usage       ├─ get_network_status             │        │
│   │  ├─ get_top_processes    ├─ search_error_logs              │        │
│   │  ├─ get_active_alerts    └─ analyze_full_system            │        │
│   └─────────────────────────────────────────────────────────────┘        │
│                                                                           │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐                  │
│   │ Prometheus  │    │   Loki      │    │  DeepSeek   │                  │
│   │   Client    │───▶│   Client    │    │  V3.1 LLM   │                  │
│   └─────────────┘    └─────────────┘    └──────┬──────┘                  │
│        │              │                        │                         │
│        │ get metrics  │ get logs               │ AI analysis              │
│        ▼              ▼                        │                         │
│   ┌──────────┐  ┌──────────┐                │                         │
│   │ CPU/Mem/  │  │ Errors/  │                ▼                         │
│   │ Disk/Net  │  │ Logs     │         ┌──────────────┐                 │
│   └──────────┘  └──────────┘         │ TimeWeb Cloud │                 │
│                                      │    API       │                 │
│                                      └──────────────┘                 │
│                                                                           │
└──────────────────────────────────────────────────────────────────────────┘
                                      ▲
                                      │ HTTP API
                                      │ localhost:8000
                                      │
┌──────────────────────────────────────────────────────────────────────────┐
│                          CLIENTS                                         │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│   ┌──────────────────┐           ┌──────────────────┐                      │
│   │  Telegram Bot    │           │  MCP Client     │                      │
│   │                  │           │  (Python)       │                      │
│   │  Commands:       │           │                 │                      │
│   │  /start           │           │  call_tool()    │                      │
│   │  /status          │           │  get_*()         │                      │
│   │  /analyze          │           │                 │                      │
│   │  /chat             │           │                 │                      │
│   └──────────────────┘           └──────────────────┘                      │
│                                                                           │
└──────────────────────────────────────────────────────────────────────────┘

数据流

1.指标收集:

Docker Container Logs → Promtail → Loki
System metrics → Node Exporter → Prometheus
Container metrics → cAdvisor → Prometheus

2.分析:

User → Telegram Bot → MCP Server
MCP Server → Prometheus Client (query metrics)
MCP Server → Loki Client (query logs)
MCP Server → DeepSeek LLM (analyze data)
DeepSeek → LLM response → User

3.可视化:

Prometheus → Grafana (dashboards)
Loki → Grafana (logs)
Prometheus alerts → Grafana (alerts panel)

项目结构

monitoring-poc/
├── docker-compose.yml          # Docker конфигурация
├── prometheus/
│   ├── prometheus.yml          # Конфиг Prometheus
│   └── alerts.yml              # Правила алертинга
├── loki/
│   └── local-config.yaml       # Конфиг Loki
├── promtail/
│   └── config.yml              # Сбор логов Docker
├── mcp-server/
│   ├── server.py               # Основной MCP сервер
│   ├── clients/               # Клиенты Prometheus, Loki
│   ├── llm/                    # DeepSeek клиент
│   └── config.py               # Настройки
├── scripts/
│   ├── telegram_monitoring_bot.py  # Telegram бот
│   └── mcp_client.py           # MCP клиент
└── dashboards/                 # Экспортированные Grafana дашборды

可用的命令

MCP服务器提供8个工具,其中最有用的是:

基本:

  • get_cpu_usage 带Deepseek分析的CPU
  • get_memory_status 记忆
  • get_disk_usage 磁盘

高级:

  • get_network_status 网络(流量+错误)
  • get_top_processes -顶级流程和容器

分析:

  • search_error_logs 查找Loki中的错误
  • analyze_full_system -收集所有度量和分析

还有 get_cpu_usage_raw -快速无LLM分析,但很少使用。

使用

通过Telegram机器人

命令:

  • /start -问候语和带有按钮的菜单
  • /status -所有度量都是原始形式(大量数据)
  • /analyze -人工智能分析一切(速度慢,但有结论)
  • /chat 你可以和机器人聊天,他知道系统。
  • /help -背景

报告(Excel/PDF):

  • /report_daily -选择24小时报告格式
  • /report_weekly -选择每周报告格式
  • /report_monthly -选择每月报告格式

报告格式:

  • Excel:详细表格、时序、统计(8页:摘要、CPU、内存、磁盘、网络、警报、错误、顶级过程)
  • PDF与AI:图表+来自Deepseek v3.1的完整专业分析(封面、人工智能分析、图表、详细统计、警报、错误)

最有用的是 /analyze它确实分析并提出建议。

离开聊天室—— /end_chat

Python代码

如果你想从你的代码中使用MCP:

from scripts.mcp_client import MCPClient
import asyncio

async def main():
    client = MCPClient("http://localhost:8000")
    
    # Про CPU
    result = await client.call_tool("get_cpu_usage")
    print(result)
    
    # Полный анализ
    full = await client.call_tool("analyze_full_system")
    print(full)
    
    await client.close()

asyncio.run(main())

警报

在Prometheus中配置了5个警报:

当事情发生时,困难就来了。 |-------|-------------------|-----------| |CPU使用率高|CPU>80%|警告| |高内存使用率|Память>85%|警告| ÐhighdiskusageÐÐÐÐÐÐÐÐÐÐÐÐ networkerrors有网络错误吗? Ðhighnetworktraffic–>100MB/sÐinfo(可能是正常的)Ð

全部回复 prometheus/alerts.yml你可以编辑阈值。

顺便说一句,如果警报起作用了-AI看到了,并且肯定会在分析中提到。

AI分析是如何工作的

Deepseek v3.1显示了以下内容:

收集的度量:

  • CPU趋势(↑上升,↓下降,→稳定)
  • Memory+多少可用
  • IO统计磁盘
  • 网络:流量、连接、错误
  • CPU/内存的顶级进程
  • 使用Cadvisor的容器

加上下文:

  • 活动警报(如果CPU崩溃-这是一个问题!)
  • Loki日志错误
  • 5分钟趋势(min/avg/max)

AI响应格式:

  1. 状态-当前系统
  2. 问题-如果有问题
  3. 建议-值得做的事
  4. 预测-如果负载增加2-3倍会发生什么

顺便说一句,人工智能被设定为简洁-通常不超过300个字符。不要堵塞聊天室。

技术

Python部分:

  • Python 3.9+,渐近线无处不在
  • Fastapi for HTTP API
  • 适用于所有HTTP请求的HTTPX
  • Loguru用于美丽的日志

Docker(Docker):

  • 普罗米修斯度量
  • Node Exporter-主机系统度量
  • Loki日志
  • Promtail-从Docker收集日志
  • Grafana - 可视化
  • Cadvisor容器度量

人工智能:

  • DeepSeek V3.1
  • MCP协议
  • TimeWeb Cloud API(模型挂在那里)

电报:

  • 直接使用HTTPX(简化版本,但有效)

配置

监测阈值 (B.Env):

CPU_THRESHOLD=80
MEMORY_THRESHOLD=85
DISK_THRESHOLD=90

同样的阈值也用于AI分析,如果CPU>80%,AI表示这是一个问题。

Deepseek设置:

DEEPSEEK_MAX_TOKENS=320        # короткий ответ
DEEPSEEK_TEMPERATURE=0.2       # более точные ответы

温度0.2-特别低,反应稳定,不“创造性”。监控更好。

许可证

麻省理工学院