Docker容器栈统一监控利器Maintenant
简介
什么是 Maintenant ?
Maintenant是一个开源的容器栈统一监控工具,只需部署一个容器,就能自动发现你的整个容器栈,集容器监控、端点检查、SSL证书跟踪、资源指标、更新检测和安全洞察于一体。它用单个二进制替代了Uptime Kuma、Portainer、Dozzle等多个工具的组合,真正做到 “Monitor everything. Manage nothing.”
主要特点
- 零配置容器自动发现:自动发现
Docker和Kubernetes容器,跟踪状态变化、健康检查、重启循环和日志,Compose项目自动分组 - HTTP/TCP 端点监控:通过
Docker标签即可定义HTTP或TCP检查,无需编辑YAML配置文件,支持响应时间、可用率历史和可配置阈值 - SSL/TLS 证书跟踪:自动检测
HTTPS端点的证书信息,在过期前30、14、7、3、1天发出警报,支持完整证书链验证 - 资源指标监控:实时采集
CPU、内存、网络I/O和磁盘I/O数据,提供历史趋势图表,支持每个容器的阈值告警 - 更新智能检测:扫描
OCI镜像仓库,对比镜像摘要,在有新版本时主动通知 - 网络安全洞察:自动发现容器中的危险网络配置,如端口暴露、特权模式、主机网络模式等
- 统一告警引擎:支持
Webhook和Discord通知,Pro版额外支持Slack、Teams、邮件以及升级策略 - 公共状态页面:内置实时状态页面,支持
SSE实时更新,Pro版还包含事件时间线和订阅者通知 - 内置 MCP 服务器:支持
Model Context Protocol,可从任何MCP兼容的AI助手查询基础设施状态 - 开源免费:基于
AGPL-3.0协议开源,可免费使用和修改
应用场景
- 家庭服务器/实验室监控:自托管用户只需一个容器,即可监控
NAS上运行的所有Docker服务状态 - 端点可用性检测:为每个服务定义
HTTP健康检查端点,当服务宕机时第一时间接收通知 - SSL 证书到期预警:自动跟踪所有
HTTPS服务的证书到期时间,避免证书过期导致服务中断 - 定时任务/心跳监控:为定时脚本或
Cron作业创建一个唯一的Ping URL,作业未按时执行时自动告警 - 公共状态页面:为你的用户或客户提供一个实时状态页面,展示各服务的运行状态

Maintenant 是一个将多种监控能力融合到一个容器中的利器,从容器状态到 HTTP 端点,从 SSL 证书到系统资源,一个仪表盘尽收眼底。
安装
在群晖上以 Docker 方式安装。
由于镜像托管在 ghcr.io,群晖 Docker 套件无法直接搜索注册表,需要通过命令行或 docker-compose 部署。
本文写作时,
latest版本对应为v1.2.13。

docker cli 安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 maintenant 和 子目录 |
环境变量说明:
MAINTENANT_ADDR指定HTTP监听地址MAINTENANT_DB指定SQLite数据库文件路径。- 更多环境变量(如
MAINTENANT_BASE_URL、MAINTENANT_ORGANISATION_NAME等)可根据需要添加。
docker-compose 安装
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | services: |
关于 DOCKER_GID: 群晖
DSM的Docker套件并不是通过Linux的docker组来管理,所以/etc/group里 可能没有docker这个组
然后通过 SSH 登录到您的群晖,执行下面的命令:
1 | # 新建文件夹 maintenant 和 子目录 |

运行
在浏览器中访问 http://<群晖IP>:6524 即可进入主界面

首次启动后,Maintenant 会自动发现宿主机上运行的所有 Docker 容器,无需任何额外配置。
基本使用流程
- 查看仪表盘:首页展示所有容器的运行状态、资源使用情况和健康检查结果
- 添加端点监控:在其他服务的
Docker标签中添加maintenant.endpoint.http或maintenant.endpoint.tcp,Maintenant会自动检测并开始监控
任何容器上添加标签:
1 | services: |
一旦容器启动,Maintenant 就会每 15 秒检查一次 http://api:3000/health
- 配置告警:进入
Settings→Alert Triggers,配置Webhook或Discord通知渠道 - 启用状态页面:进入
Status Page设置,选择要在公共页面展示的组件

直接访问 http://<群晖IP>:6524/status 可以看到运行状态

MCP 服务
Maintenant 嵌入了一个 MCP 服务器,提供涵盖所有监控维度的 18 个工具。AI 助手可以使用这些工具诊断问题、关联数据并提出解决方案,而无需离开编辑器。
修改 docker-compose.yml
需要启用 MCP 服务器并配置 OAuth2 凭证
1 | MAINTENANT_MCP: "true" |

opencode 中配置
以 opencode 为例,把参数丢给它,直接让它自己配置。应该包含下面这些要素:
其中
192.168.0.197为老苏安装Maintenant的群晖主机的IP
- 参考文档地址:
https://docs.maintenant.dev/features/mcp/#mcp-server MCP服务地址:http://192.168.0.197:6524/mcpMAINTENANT_MCP_CLIENT_ID:maintenant-mcp-clientMAINTENANT_MCP_CLIENT_SECRET:laosu123

接下来 opencode 就开始自己忙活了
- 第一步、会在
opencode.json中添加了maintenant MCP服务配置:
1 | "maintenant": { |

- 第二步、服务器端配置
OAuth回调地址
按照说明需要在 docker-compose.yml中配置MAINTENANT_MCP_ALLOWED_REDIRECT_URIS=http://localhost:19876/mcp/oauth/callback,但是实际上老苏并没有配置

- 第三步、运行
opencode mcp auth maintenant
这一步完成 mcp 的 OAuth2 认证,可以直接在 opencode 中让它执行 opencode mcp auth maintenant,会看到页面跳转并显示认证成功,只是一闪而过,所以没截屏

- 第四步、开始使用
例如:列出所有容器的状态


注意事项
- Docker 套接字权限:
Maintenant以nobody用户运行,必须通过group_add将容器加入宿主机Docker组才有权限读取Docker套接字,如果在群晖上运行遇到权限问题,可以尝试使用root用户运行 - 数据持久化:
SQLite数据库存放在/data目录,务必挂载持久化卷,否则容器重启后所有配置将丢失 - 反向代理:
Maintenant不内置认证机制,建议通过Traefik、Nginx等反向代理配合Authelia、Authentik等认证中间件使用 - 安全建议:
Docker套接字以只读方式挂载(:ro),Maintenant只做观测不会修改容器,但仍建议限制外部访问 - 资源占用:官方数据显示运行时仅需约
17MB内存,非常轻量,适合在低配置设备上运行
参考文档
kOlapsis/maintenant: Drop a container. Your stack is monitored.
地址:https://github.com/kOlapsis/maintenantMaintenant 官方网站
地址:https://maintenant.devMaintenant 官方文档
地址:https://docs.maintenant.devghcr.io/kolapsis/maintenant
地址:https://github.com/kOlapsis/maintenant/pkgs/container/maintenant