关于 maintenant
maintenant 监控 Docker、Kubernetes、主机、端点、证书和定时任务,并提供告警与实时日志。内置 MCP 服务让 AI Agent 通过只读数据调查故障,不会操作容器。
主要功能
- 01自动发现 Docker 和 Kubernetes 工作负载
- 02跟踪资源用量、健康状态与日志
- 03检查端点、证书和定时任务
- 04检测镜像更新与安全风险
- 05路由并确认告警
- 06内置只读 MCP 服务
适用场景
- 01让 Agent 调查容器故障
- 02查看日志和活动告警
- 03监控端点与 TLS 到期时间
- 04跟踪定时任务截止时间
MCP 相关
内置 MCP 服务向 AI 客户端提供日志、告警历史、资源和事件处理工具。支持 stdio 与 Streamable HTTP,并为远程客户端提供 OAuth2。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://{maintenant_host}/mcpclaude mcp add --transport http kolapsis-maintenant https://{maintenant_host}/mcp{"mcpServers":{"kolapsis-maintenant":{"type":"http","url":"https://{maintenant_host}/mcp"}}}在 Cursor 中打开{"servers":{"kolapsis-maintenant":{"type":"http","url":"https://{maintenant_host}/mcp"}}}在 VS Code 中打开{"mcpServers":{"kolapsis-maintenant":{"type":"http","url":"https://{maintenant_host}/mcp"}}}{"mcpServers":{"kolapsis-maintenant":{"serverUrl":"https://{maintenant_host}/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
ghcr.io/kolapsis/maintenant:1.11.0stdio工具
详细介绍
maintenant
启动一个容器。你的技术栈就受到监控。
发生故障时,固定规则会及时发现,警报会推送给你,你的 AI Agent 则通过内置 MCP 服务进行调查。
Docker、Kubernetes、运行时间、TLS、cron 作业、实时日志、镜像更新、CVE:自动发现,并对每一项发出警报,
全部由一个 Go 二进制文件完成。刚启动时只需几十 MB 内存,在繁忙主机上运行数天后约需 100 MB。无需 PromQL,无需导出器,也不必构建仪表板。
试用在线演示 →
一个监控真实技术栈的 Pro 实例,只读访问。无需安装,也无需注册。
在线演示 • 快速开始 • 为什么选择 maintenant • Agent • 功能 • 文档 • 版本 • 定价
快速开始
# docker-compose.yml
services:
maintenant:
image: ghcr.io/kolapsis/maintenant:latest
ports:
# ⚠️ SECURITY: publishes the UI/API (no authentication of their own) on
# every interface; put an auth reverse proxy in front, or bind "127.0.0.1:8080:8080". See https://docs.maintenant.dev/security/#reverse-proxy-setup.
- "8080:8080"
read_only: true
security_opt:
- no-new-privileges:true
tmpfs:
- /tmp:noexec,nosuid,size=64m
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc:/host/proc:ro
- /etc/os-release:/host/etc/os-release:ro
- maintenant-data:/data
environment:
MAINTENANT_ADDR: "0.0.0.0:8080"
MAINTENANT_DB: "/data/maintenant.db"
restart: unless-stopped
volumes:
maintenant-data:
docker compose up -d
打开 **http://localhost:8080**。你的容器及其健康状态、重启循环、资源和日志都已显示出来,无需进行任何配置。
Docker 套接字访问会自动处理:入口点会读取已挂载套接字的组,并将其授权给非特权用户。Compose 和 Swarm 均适用(Swarm 中的 docker stack deploy 会静默忽略 group_add)。如果套接字所属组为 root,需要设置 DOCKER_GID=0。如果容器没有显示,请参阅故障排查。
Kubernetes
kubectl create namespace maintenant
kubectl apply -f deploy/kubernetes/
自动检测集群内 API,使用只读 RBAC、命名空间筛选,并将工作负载(Deployments、DaemonSets、StatefulSets)作为一等公民。Kubernetes 指南。
裸 Linux,无需 Docker(systemd,amd64 和 arm64,静态链接)
curl -fsSL https://install.maintenant.dev | sudo bash
无需任何容器运行时,即可监控端点、证书和心跳。容器监控会在检测到运行时后自动启用。有关固定版本、隔离网络安装和供应链验证,请参阅安装文档。
云端:使用一个 cloud-init 文件,即可在 Hetzner Cloud、DigitalOcean、Scaleway、OVHcloud 或 Vultr 上启动经过安全加固并运行 maintenant 的主机。
为什么选择 maintenant?
使用标准技术栈监控自己的基础设施,意味着要运行 Prometheus、Grafana、Alertmanager、node-exporter、cAdvisor、blackbox-exporter、证书导出器、Loki、Promtail、Trivy,以及某种镜像更新工具。十来个组件,各自都有配置、升级和仪表板,只为回答一个问题:我的技术栈运行正常吗?什么出了问题?
maintenant 用一个容器就能回答这个问题。
| maintenant 内置功能 | 你原本需要自行搭建的组件 |
|---|---|
| 容器状态、健康检查、重启循环 | cAdvisor + node-exporter + 你编写的告警规则 |
| 容器和主机级别的 CPU、内存、网络和磁盘指标 | cAdvisor + node-exporter + 你构建的 Grafana 仪表板 |
| 通过 Docker 标签声明的 HTTP / TCP 端点检查 | blackbox-exporter + 每个目标各自的配置文件 |
| TLS 证书到期时间和证书链验证 | ssl_exporter |
| Cron 和心跳截止时间 | Pushgateway + 你编写的告警规则 |
| 实时容器日志,stdout/stderr 分流显示 | Dozzle,或 Loki + Promtail |
| 镜像更新检测,支持感知 compose 的更新和回滚命令 | Diun 或 Watchtower |
网络暴露审计:0.0.0.0 绑定、暴露的数据库端口、主机网络、特权容器 | 没有标准工具 |
| CVE 信息补充和容器级风险评分 (Personal) | Trivy + 其导出器 |
| 将告警路由到 Discord、webhooks、电子邮件、Telegram、Slack 和 Teams,并支持升级处理 (Pro) | Alertmanager |
| 带有事件和订阅者的公开状态页 | Cachet、Uptime Kuma 或 SaaS 服务 |
| 汇总上述所有信息的实时仪表板 | Grafana + 由你构建和维护的仪表板 |
我还需要 Prometheus 吗? maintenant 监控你的基础设施。Prometheus 监控你的应用。这里没有 PromQL、没有自定义导出器,也没有需要设计的面板:maintenant 已经了解容器、证书、端点、cron 作业和 CVE,并会在它们出现时立即开始监控。如果你要发布业务指标并编写自己的查询,就继续用 Prometheus 来处理这些工作。两者回答的是不同的问题,很多人也会同时运行它们。
与通常会和它一同使用的工具相比:
| maintenant | Uptime Kuma | Portainer | Dozzle | |
|---|---|---|---|---|
| 容器自动发现 | 是 | 否 | 是 | 是 |
| MCP 服务,适配 Agent | 内置 | 第三方 | 独立部署 | 否 |
| 实时容器日志 | 是 | 否 | 是 | 是 |
| HTTP/TCP 端点检查 | 是 | 是 | 否 | 否 |
| Cron/心跳监控 | 是 | 是 | 否 | 否 |
| SSL 证书跟踪 | 是 | 是 | 否 | 否 |
| CPU/内存/网络指标 | 是 | 否 | 有限 | 否 |
| 镜像更新检测 | 是 | 否 | 是 | 否 |
| 网络安全洞察 | 是 | 否 | 否 | 否 |
| CVE 信息补充、风险评分 | Personal | 否 | 否 | 否 |
| 公开状态页 | 是 | 是 | 否 | 否 |
| 带路由功能的告警 | 是 | 是 | 有限 | 否 |
| 原生支持 Kubernetes | 是 | 否 | 是 | 否 |
| 单一二进制文件,零依赖 | 是 | Node.js | Docker API | Docker API |
| 无需运行时即可运行 | 是 | 否 | 否 | 否 |
一个容器。一个仪表板。监控一切。
截图
仪表板:运行时间、响应时间、资源、统一监控 | |
汇总所有来源的告警 |
安全态势,包含 CVE 信息增强和风险评分(个人版) |
Agent
maintenant 负责监控,AI Agent 负责调查。整个流程分为三个步骤:
- 检测。 固定规则判断某项服务是否宕机:连续失败、超过阈值、错过截止时间、重启循环。整个过程不涉及模型,因此不会凭空生成告警,一切正常时也不会产生费用。
- 推送。 告警通过 webhook 发出:开始时发送
alert.fired,恢复时发送alert.resolved,并附上告警所属的主机(agent_id)以及返回该主机的链接。 - 调查。 Agent 收到告警后,会查询 maintenant 内置的 MCP 服务:容器日志、端点的检查历史、CPU 和内存,以及同一主机上的其他活动告警。你得到的是诊断结果,而不只是一盏红灯。
flowchart LR
S[containers, endpoints,<br>certificates, cron jobs, hosts] --> M[maintenant<br>rules fire an alert]
M -- webhook --> A[your agent<br>Claude Code, OpenCode, n8n]
A -- MCP: logs, history,<br>active alerts --> M
使用 Claude Code。 一个小型接收器(仅使用 Python 标准库)运行在与 maintenant 同一台主机上。每条已触发的告警都会启动一个无头 Claude Code 会话,该会话只能调用 maintenant 的只读 MCP 工具,诊断结果会写入 reports/<alert-id>.md:
export RECEIVER_TOKEN=$(openssl rand -hex 32)
python3 examples/agent-webhook/receiver.py # listens on 127.0.0.1:9099
# what the receiver runs for each alert
claude -p "maintenant just fired this alert: {...} Investigate it read-only." \
--setting-sources project --mcp-config mcp.json --strict-mcp-config --tools "" \
--allowedTools mcp__maintenant__list_alerts mcp__maintenant__get_container_logs \
mcp__maintenant__get_endpoint_history mcp__maintenant__get_resources
mcp.json 通过 docker exec -i maintenant /app/maintenant --mcp-stdio 经由 stdio 连接 maintenant,因此无需开放 MCP 端口:启动 maintenant 时设置 MAINTENANT_MCP_SOCKET=true,即可提供它转发到的本地套接字。将 webhook 通道指向接收器,并添加 Authorization: Bearer <token> 请求头,再使用触发器将告警路由到接收器。AI Agent 指南介绍了完整的设置流程。
使用 OpenCode 时,同一接收器会调用 opencode run,而不是 claude -p,并在 opencode.json 中将 maintenant 声明为本地 MCP 服务。使用 n8n 时,Webhook 触发器会将告警传递给 AI Agent 节点,该节点的 MCP Client 工具指向你实例的 /mcp 端点。
MCP 服务
内置的 Model Context Protocol 服务,提供 51 个工具。向 AI 助手询问当前发生了什么故障、查看容器日志、检查告警队列、确认告警或创建事件。支持 stdio 和 Streamable HTTP 传输;远程客户端(Claude 网页版、移动端和桌面应用)可通过 OAuth2 客户端 ID 和密钥进行连接。
功能
每个部分都链接到对应的完整文档。
容器监控
无需配置即可自动发现 Docker、Docker Swarm 和 Kubernetes。每个容器在启动时都会立即开始跟踪:状态变化、健康检查、重启循环,以及带有 stdout/stderr 分流的实时日志流。Compose 项目会自动分组。只读:maintenant 只进行监控,绝不会触碰你的容器。
多主机监控
一台中央服务器,其他主机上运行轻量级只读 Agent,它们之间通过持久、相互认证的 gRPC 流连接。无需共享数据库、消息队列或搭建 PKI:Agent 使用一次性令牌和本地生成的 Ed25519 密钥对注册,且每条数据流都经过质询-响应认证。你可以随时在 UI 中撤销 Agent。
# On each remote host, one command, generated for you in the UI
docker run -d --name maintenant-agent --restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc:/host/proc:ro \
-v /etc/os-release:/host/etc/os-release:ro \
-v maintenant-agent-data:/var/lib/maintenant \
ghcr.io/kolapsis/maintenant:latest \
--mode=agent --server=grpcs://monitoring.example.com \
--enrollment-token=mnt_enr_XXXXXXXXXXXXXXXX --label="prod-worker-01"
Agent 会检测本地运行时(Docker、Swarm 或 Kubernetes),并流式传输容器状态、端点、证书、主机 CPU/内存/磁盘信息;断开连接后会自动重连,并将断连期间收集的数据作为历史记录补传。每个实体都会标记所属主机,因此不同机器的数据不会混在一起。Personal:最多 20 台远程机器。Pro:不限数量。
更新情报
扫描 OCI 注册表:检查固定标签是否有更新版本;对于 latest 这类浮动标签,则比较容器当前运行的镜像摘要与该标签现在指向的摘要。无需盲目执行 docker pull,即可了解哪些镜像有更新。提供适用于 Compose、普通 Docker、Swarm 和 Kubernetes 的更新与回滚命令,并自动切换到正确的 Compose 项目目录。无需 Diun、Watchtower 或额外容器:此功能已集成在监控器中。
主机操作系统停止支持提醒
每台受监控的主机都会报告其发行版和版本;maintenant 会根据 Debian、Ubuntu、RHEL、Rocky、Alma、Alpine 和 SLES 的支持周期进行检查,并在免费安全支持结束前 30 天发送提醒,支持结束后还会再次提醒。日期数据随二进制文件一同提供,并会在网络条件允许时每天从 endoflife.date 更新。
端点监控
通过 Docker 标签声明 HTTP 和 TCP 检查,在容器启动时自动发现,也可手动添加。端点还可以从 Traefik 和 Caddy 标签派生(需选择启用)。提供响应时间、正常运行时间历史记录、90 天趋势图、故障和恢复阈值。
labels:
maintenant.endpoint.http: "https://api:3000/health"
maintenant.endpoint.interval: "15s"
maintenant.endpoint.failure-threshold: "3"
心跳和 cron 监控
创建监控器并获取 URL,然后在任务中添加一条 curl 命令。maintenant 会跟踪任务的开始和结束时间、持续时长、退出代码,并在错过截止时间时发送提醒。出站心跳可让两个 maintenant 实例互相监控,避免监控器宕机而无人察觉。
curl -fsS -o /dev/null https://now.example.com/ping/{token}/$?
TLS 证书监控
自动从 HTTPS 端点发现证书,也可为任意域名创建独立监控器。提供完整证书链验证,并在证书到期前 30、14、7、3 和 1 天发送提醒,还可检查 OCSP 装订(Personal)。
资源指标
实时查看每个容器和主机的 CPU、内存、网络和磁盘 I/O;通过资源消耗排名视图快速排查问题,并为每个容器设置带防抖功能的阈值。历史数据保留时间:Community 为 7 天,Personal 为 30 天,Pro 为 90 天。
网络安全洞察
标记不应存在的配置:绑定到 0.0.0.0 的端口、暴露的数据库端口、主机网络模式、特权容器、类型为 NodePort 或 LoadBalancer 的 Kubernetes Service,以及通过这些 Service 暴露的数据库端口。Personal 还会通过检查 OCI 清单,将每个镜像映射到其软件生态系统,以补充 CVE 信息;提供每个容器的风险评分和统一的安全态势仪表板。
告警引擎
所有来源共用一条告警管线:容器重启循环、健康检查异常和容器停止、端点故障、心跳超时、证书即将到期或无效、CPU 和内存阈值超限、可用更新、Swarm 和 Kubernetes 健康状况、Agent 离线,以及主机操作系统停止支持。默认情况下,通知渠道处于静默状态,并通过触发器(严重级别、来源、范围)进行路由。告警可以确认。可为计划维护设置静默规则;每条通知最多尝试投递三次。
通知渠道:Discord 和 Webhook(Community)、电子邮件和 Telegram(Personal)、Slack 和 Microsoft Teams(Pro)。Pro 还提供最多五级的升级策略,依次通知值班人员、后备人员和负责人,并支持维护时段。
公开状态页
实时状态页会汇总所有监控器的严重级别,并通过 SSE 实时更新。Personal 提供事件时间线;Pro 还支持电子邮件订阅者(双重选择加入,通过你自己的 SMTP 服务器发送)、维护时段和品牌定制。
配置
所有配置都由 Docker 标签和少量环境变量驱动。无需维护 YAML。
- 环境变量:绑定地址、数据库、基础 URL、PostgreSQL DSN、MCP、Kubernetes 命名空间、许可证密钥、遥测。
- Docker 标签参考:端点、TLS、告警严重级别、重启阈值、更新跟踪、分组、忽略。
/api/v1/下的 REST API,以及 SSE 事件流。
完整堆栈示例
services:
maintenant:
image: ghcr.io/kolapsis/maintenant:latest
ports:
# ⚠️ SECURITY: publishes the UI/API (no authentication of their own) on
# every interface; put an auth reverse proxy in front, or bind "127.0.0.1:8080:8080". See https://docs.maintenant.dev/security/#reverse-proxy-setup.
- "8080:8080"
read_only: true
security_opt:
- no-new-privileges:true
tmpfs:
- /tmp:noexec,nosuid,size=64m
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc:/host/proc:ro
- /etc/os-release:/host/etc/os-release:ro
- maintenant-data:/data
environment:
MAINTENANT_ADDR: "0.0.0.0:8080"
MAINTENANT_DB: "/data/maintenant.db"
api:
image: myapp:latest
labels:
maintenant.group: "production"
maintenant.endpoint.http: "http://api:3000/health"
maintenant.endpoint.interval: "15s"
maintenant.alert.severity: "critical"
postgres:
image: postgres:16
labels:
maintenant.endpoint.tcp: "postgres:5432"
maintenant.alert.severity: "critical"
redis:
image: redis:7-alpine
labels:
maintenant.endpoint.tcp: "redis:6379"
volumes:
maintenant-data:
安全模型
- 按设计不内置身份验证。 与 Dozzle 和 Prometheus 一样,maintenant 位于反向代理和身份验证中间件(Traefik 或 Caddy、Authelia 或 Authentik)之后。
/ping/{token}和/status/应保持公开。反向代理设置。 - 全程只读。 Docker 套接字以
:ro挂载,Kubernetes RBAC 为只读,Agent 也为只读。maintenant 从不启动、停止或修改容器。如果你不想挂载套接字,也可以使用套接字代理。 - 经过加固的容器。 修正卷的所有权后,会降权至
nobody(uid 65534);根文件系统设为read_only,并启用no-new-privileges。 - 匿名、可选择退出的遥测。 每小时发送一次快照:受监控对象数量、版本、存储引擎、版本和运行时数据(操作系统、架构、CPU 核心数、内存)。绝不发送主机名、IP、名称、URL 或密钥。设置
MAINTENANT_DISABLE_TELEMETRY=1即可关闭遥测,不会启动后台 goroutine,也不会发送任何出站数据包。准确的负载和详细信息。
架构
- 一个二进制文件,三种模式。 Go 后端、通过
embed.FS嵌入的 Vue 3 前端,以及内置的 SQLite。同一个文件可运行embedded(单主机,默认)、server(集中采集)和agent(远程主机)。 - 零依赖。 SQLite 是唯一的数据存储。无需 Redis、无需队列,也无需管理其他组件。集群运维人员可以使用已有的 PostgreSQL 为服务端提供支持;Agent 始终使用 SQLite。
- 运行时可选。 无需 Docker 套接字或 Kubernetes API,端点、证书和心跳也能正常运行。运行时变为可访问后,容器监控会自动恢复。
- 实时。 SSE 会将每次状态变化即时推送到浏览器和状态页面。
- 内存占用低。 刚启动的实例只占用几十 MB;在繁忙主机上运行数天后,预计占用约 100 MB。可运行在 Raspberry Pi、€4 的 VPS 或 NAS 上。
完整介绍请参阅架构文档。
版本
Community 永久免费,每天都能运行生产基础设施:它是在单台主机上运行的完整产品,而非功能受限的试用版。Personal 一次性购买。Pro 则适合团队使用。
| Community | Personal | Pro | |
|---|---|---|---|
| 价格 | 免费,Apache-2.0 | 一次性 €149,终身使用 | €29/月或 €290/年,14 天试用期 |
| 主机 | 1 | 最多 20 台远程机器 | 不限 |
| 端点 | 10 | 不限 | 不限 |
| 心跳 | 5 | 不限 | 不限 |
| 证书 | 5 | 不限 | 不限 |
| 资源历史 | 7 天 | 30 天 | 90 天 |
| 告警渠道 | Discord、webhook | + 邮件、Telegram、高级筛选 | + Slack、Teams、升级通知、维护窗口 |
| 安全 | 网络洞察 | + CVE 信息补充、风险评分、安全态势、OCSP | 同左 |
| 状态页 | 3 个组件 | 不限,含事件时间线 | + 订阅者通知、品牌定制 |
| 用途 | 任意 | 你自己的基础设施 | + 为他人运行、邮件支持 |
Personal 适用于一个人在自己拥有或为自己运行的基础设施上使用,也包括自由职业者,并附带一年更新服务(之后每增加一年需支付 €59;付费年度内发布的所有版本均永久授权)。Pro 额外允许你监控他人的基础设施。批量定价和定制协议:[email protected]。
付费版本使用相同的二进制文件,自托管方式也相同。密钥会向许可证服务验证,验证通过的签名响应会缓存:只有在 60 天内无法连接到服务时,实例才会回退到 Community,因此离线几周不会有任何影响。你的监控数据绝不会离开你的基础设施。
MAINTENANT_LICENSE_KEY=your-license-key # Personal or Pro, restart, done
购买 Personal,一次性支付 €149 → · 开始 14 天 Pro 试用 →
全球支持 Stripe,欧盟支持 Mollie(SEPA、iDEAL、Bancontact)。提供 VAT 发票。可随时取消 Pro。
支持这个项目
maintenant 由一位位于法国波尔多的开发者独立打造。没有风投、没有广告,也没有出售退出。100% 的收入都用于全职开发。按影响力排序:
- 购买许可证。 如果基础设施属于你,请选 Personal;如果你为他人运行基础设施,请选 Pro。解锁功能并支持路线图开发。查看版本 →
- 赞助。 金额不限,可一次性赞助或按月赞助,赞助者会列在下方。GitHub Sponsors →
- 帮忙宣传。 为仓库点星,在 HN、Lobsters、Reddit 或 LinkedIn 上分享。提高知名度是独立项目的命脉。
- 告诉我你如何使用它。 只需两分钟,由开发者亲自阅读;未经你许可,不会引用你的反馈。提供反馈 →
支持者
每位 Personal 所有者、Pro 订阅者和 GitHub 赞助者,都在帮助本项目保持独立。感谢你们。
想在这里展示贵公司的 Logo 吗?成为企业赞助者:为贵公司提供曝光,也为项目提供发展空间。
贡献
欢迎贡献代码。较大的改动请先提交 issue;小修复、错别字和文档改动,直接提交 PR 即可。
许可证
版权所有 2025-2026 Benjamin Touchard / kOlapsis,法国波尔多。
核心部分采用 Apache License 2.0 授权。Personal 和 Pro 密钥解锁的代码(位于 internal/commercial/ 和 frontend/src/commercial/ 下)以源代码可用的方式遵循 Maintenant Commercial Source License 授权:可免费阅读和贡献,但生产环境使用需要匹配的许可证密钥。请参阅 NOTICE 和 COMMERCIAL-LICENSE.md。

荣获 Hyper Open X 项目征集奖项。本项目由法国政府通过 France 2030 计划资助。
荣获 Hyper Open X 项目征集奖项,由法国政府通过 France 2030 计划资助。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。












