Dozor——AI优先的服务器监控
  
MCP服务器,用于AI代理监控任何Linux服务器:Docker、systemd、远程主机。
AI原生服务器监控代理。与为人类构建的具有仪表板的传统监控工具(Prometheus、Datadog)不同,Dozor的输出通过以下方式针对LLM消费进行了优化 模型上下文协议.
为什么选择Dozor?
| 传统工具 | Dozor |
|---|---|
| 仪表板和图表 | 针对LLM优化的文本 |
| 手动警报分流 | AI就绪诊断 |
| 复杂的设置 | 零配置自动发现 |
| 仅使用Docker或基于代理 | Docker+systemd+远程+系统资源 |
特性
- 自动分类 --一键全诊断:健康检查、错误分析、磁盘压力
- 系统概述 --内存、磁盘、负载、顶级进程在一个视图中
- Docker监控 --自动发现组合服务、状态、CPU/内存
- 系统化服务 --使用内存/正常运行时间进行用户和系统服务监控
- 远程服务器 --HTTP可用性、SSL过期、通过SSH的systemd
- 日志分析 --常见错误(数据库、身份验证、OOM、超时)的模式匹配
- 系统清理 --扫描/清理docker、go、npm、pip、日志、缓存
- 安全审计 --暴露的端口、危险的安装、机器人扫描仪检测
- 后台部署 --具有状态跟踪的非阻塞部署
- 二进制更新 --检查并安装GitHub版本中约60个流行CLI工具的更新
- 命令执行 --阻止列表验证的shell命令
- 开发模式 --运行时可切换的仅观察手表,排除每次服务的分流
- 零配置 --自动检测组合路径和服务,开箱即用
快速开始
从发布版本安装 (推荐):
curl -L https://github.com/anatolykoptev/dozor/releases/latest/download/dozor-linux-amd64 -o dozor
chmod +x dozor
mv dozor ~/.local/bin/从源代码构建:
git clone https://github.com/anatolykoptev/dozor.git
cd dozor
make install # builds and copies to ~/.local/bin/
cp .env.example .env # optional — works without itMCP配置
选项A:SSH上的Stdio (建议用于远程服务器)
{
"mcpServers": {
"dozor": {
"command": "ssh",
"args": ["your-server", "dozor serve --stdio"]
}
}
}选项B:HTTP (用于本地或网络访问)
{
"mcpServers": {
"dozor": {
"type": "streamable-http",
"url": "http://localhost:8765/mcp"
}
}
}MCP工具
| 工具 | 说明 |
|---|---|
server_inspect | 检查服务器状态(10种模式——见下文) |
server_triage | 全自动诊断:发现、检查健康状况、分析错误、磁盘压力 |
server_exec | 执行经过验证的shell命令 |
server_restart | 重启docker编写服务 |
server_deploy | 带状态跟踪的后台部署 |
server_prune | 清理Docker资源 |
server_cleanup | 扫描/清理系统资源(docker、go、npm、pip、缓存、日志) |
server_services | 管理用户级systemd服务(状态、重启、日志) |
server_updates | 检查并安装GitHub版本中CLI二进制文件的更新 |
server_remote | 管理远程服务器服务(状态、重启、通过SSH+sudo记录日志) |
server_remote_exec | 通过SSH在远程服务器上执行经过验证的命令 |
server_dev_mode | 切换开发模式:只观察观察,按服务分类排除 |
检查模式
| 模式 | 描述 |
|---|---|
overview | 系统仪表板:内存、磁盘、负载、顶级进程、docker+systemd摘要 |
health | 快好/!!所有Docker服务的状态 |
status | 一项服务的详细状态(CPU、内存、正常运行时间、重启) |
diagnose | 带有警报和健康评估的完整诊断 |
logs | 服务的最新日志(含行数) |
analyze | 错误模式分析和补救(单个服务或全部) |
errors | 一次调用中所有服务的错误/致命日志行 |
security | 安全审计:暴露的端口、容器、机器人扫描程序 |
systemd | 本地系统服务监控(用户+系统) |
remote | 远程服务器:HTTP检查、SSL过期、通过SSH的systemd服务 |
CLI使用情况
dozor serve [--port 8765] [--stdio] # MCP server
dozor check [--json] [--services s1,s2] # One-shot diagnostics
dozor watch [--interval 4h] [--webhook URL] # Periodic monitoring配置
所有设置都是可选的。Dozor自动检测Docker Compose项目和服务。
# Docker (auto-detected if not set)
DOZOR_COMPOSE_PATH=~/myproject
DOZOR_SERVICES=web,api,postgres
# Systemd services to monitor
DOZOR_SYSTEMD_SERVICES=nginx,myapp
# Remote server monitoring
DOZOR_REMOTE_HOST=user@server.com
DOZOR_REMOTE_URL=https://example.com
DOZOR_REMOTE_SERVICES=nginx,php-fpm
# Alert thresholds
DOZOR_CPU_THRESHOLD=90
DOZOR_MEMORY_THRESHOLD=90
DOZOR_ERROR_THRESHOLD=5
DOZOR_RESTART_THRESHOLD=1看 .env.示例 对于所有选项。
错误模式检测
Dozor检测任何服务中的常见错误模式:
| 类别 | 图案 |
|---|---|
| 数据库 | 身份验证失败、连接限制、架构错误 |
| Auth | 令牌错误,权限被拒绝 |
| 网络 | 连接被拒绝 |
| 资源 | OOM,磁盘已满 |
| 进程 | SIGTERM、SIGKILL |
| 性能 | 超时、超过截止日期、速率限制 |
安全
纵深防御命令验证:
- 阻止列表 --阻止破坏性命令、注入模式、敏感文件访问
- 输入消毒 --服务名称、部署ID、通过正则表达式验证的持续时间
- 壳牌逃逸 --所有插值值的单引号包装
- 无外壳注射 --具有适当信号处理的流程组
建筑
dozor/
├── cmd/dozor/ # Entry points: serve, gateway (Telegram), check, watch
├── internal/
│ ├── agent/ # LLM agent loop + system prompt builder
│ ├── session/ # Interactive Claude Code session lifecycle (Manager, Session)
│ ├── a2a/ # A2A protocol: agent card, /a2a JSON-RPC endpoint, executor
│ ├── bus/ # In-process event bus for alert fan-out
│ ├── skills/ # Skill loader (workspace + builtin, YAML front-matter)
│ ├── approvals/ # Telegram approval flow for exec_security=ask
│ ├── provider/ # LLM provider abstraction + withFallback chain
│ ├── mcpclient/ # MCP client manager, MemDB KB tools (memdb_search, memdb_save)
│ ├── toolreg/ # Unified tool registry (local + remote MCP tools)
│ ├── telegram/ # Telegram bot transport
│ ├── tools/ # MCP tool handlers (dependency-injected)
│ │ ├── register.go # RegisterAll(server, agent)
│ │ ├── inspect.go # server_inspect (10 modes)
│ │ ├── triage.go # server_triage
│ │ ├── exec.go # server_exec
│ │ ├── restart.go # server_restart
│ │ ├── deploy.go # server_deploy
│ │ ├── prune.go # server_prune
│ │ ├── cleanup.go # server_cleanup
│ │ ├── services.go # server_services
│ │ ├── updates.go # server_updates
│ │ ├── remote.go # server_remote
│ │ ├── remote_exec.go # server_remote_exec
│ │ └── dev_mode.go # server_dev_mode
│ └── engine/ # Core monitoring engine
│ ├── config.go # Environment config
│ ├── circuitbreaker.go # Circuit breaker (Closed/Open/HalfOpen)
│ ├── transport.go # Local/SSH execution + compose auto-detect
│ ├── docker.go # Docker container operations
│ ├── status.go # Docker status + auto-discovery
│ ├── systemd.go # Systemd service operations
│ ├── overview.go # System overview (memory, disk, load)
│ ├── resources.go # CPU/memory/disk
│ ├── logs.go # Log collection & parsing
│ ├── log_analyzer.go # Error pattern analysis
│ ├── triage.go # Auto-triage orchestration
│ ├── alerts.go # Alert generation
│ ├── cleanup.go # System cleanup orchestrator
│ ├── security.go # Security audit
│ ├── remote.go # Remote server monitoring
│ ├── watch.go # Periodic monitoring + webhooks
│ ├── deploy.go # Background deployments
│ ├── updates.go # Binary update checking + install
│ └── validation.go # Command validation
└── pkg/extensions/ # Optional extensions (claudecode, a2aclient, websearch)贡献
欢迎投稿!请先打开一个问题,讨论您想更改的内容。
看 安全.md 用于报告漏洞。
许可证
麻省理工学院
