使用说明
🚀 AI分析监控系统
Prometheus/Loki/Grafana+Deepseek v3.1上的监控系统通过Telegram bot。
这是什么项目
带有AI分析的服务器监控系统由两部分组成:
- 基础设施部分 -Docker(普罗米修斯、洛基、格拉法纳等)
- 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分析的CPUget_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响应格式:
- 状态-当前系统
- 问题-如果有问题
- 建议-值得做的事
- 预测-如果负载增加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-特别低,反应稳定,不“创造性”。监控更好。
许可证
麻省理工学院
