
Maintenant 发布:面向 Docker 和 Kubernetes 的自托管监控工具
来源标题:Show HN: Maintenant, self-hosted monitoring for Docker and Kubernetes
Maintenant 是一款面向 Docker 和 Kubernetes 的自托管监控工具,部署一个容器即可监控整个技术栈。它可自动发现容器、uptime、TLS、cron 任务、镜像更新和 CVE 等并告警,由单个 Go 二进制运行,初始内存仅几十 MB。告警可通过内置 MCP server 交给 AI agent 进一步调查,无需 PromQL、exporter 或自建面板。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
丢一个容器进去,你的整套服务栈就开始被监控了。 出问题时,固定规则会先捕获,告警推送给你,然后你的 AI agent 通过内置的 MCP server 展开排查。 Docker、Kubernetes、uptime、TLS、cron 任务、实时日志、镜像更新、CVE:全部自动发现,每一项都会告警, 而这一切只靠一个 Go 二进制文件,刚启动时只占几十 MB 内存(在繁忙主机上跑几天后约 100 MB)。不需要 PromQL,不需要 exporter,也不需要自己搭 dashboard。 在线演示 • 快速开始 • 为什么选 maintenant • Agents • 功能 • 文档 • 版本 • 定价
docker-compose.yml
services: maintenant: image: ghcr.io/kolapsis/maintenant:latest ports:
⚠️ 安全提示:会把 UI/API(自身不带认证)发布到
所有网络接口;请在前面加一个带认证的反向代理,或绑定 "127.0.0.1:8080:8080"。参见 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 socket 访问是自动完成的:entrypoint 会读取所挂载 socket 的组,并把它授予非特权用户,Compose 和 Swarm 上都适用(在 Swarm 上,docker stack deploy 会静默忽略 group_add)。如果 socket 的属组是 root,则需要设置 DOCKER_GID=0。如果容器没有显示出来,参见故障排查。 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。 用标准技术栈监控自己的基础设施,意味着要跑 Prometheus、Grafana、Alertmanager、node-exporter、cAdvisor、blackbox-exporter、一个证书 exporter、Loki、Promtail、Trivy,外加一个处理镜像更新的东西。十来个组件,每个都有自己的配置、升级和 dashboard,只为回答一个问题:我的栈还活着吗,哪里着火了? maintenant 用一个容器回答这个问题。 我还需要 Prometheus 吗? maintenant 监控你的基础设施。Prometheus 监控你的应用。这里没有 PromQL,没有自定义 exporter,没有要设计的面板:maintenant 已经知道容器、证书、端点、cron 任务和 CVE 是什么,并在它们出现的那一刻开始监视。如果你要上报业务指标并自己写查询,那部分继续用 Prometheus。两者回答的是不同的问题,很多人两个都跑。 对比通常与它搭配堆叠的那些工具: 一个容器。一个 dashboard。一切尽在监控。 Dashboard:uptime、响应时间、资源、统一监控项 跨所有来源的统一告警 带 CVE 增强和风险评分的安全态势(Personal) 更多截图 容器自动发现 按容器和按主机的资源 端点监控 心跳与 cron 监控 TLS 证书跟踪 更新情报 网络安全洞察 你的 AI 助手,通过 MCP 接入 状态页,全部正常 状态页,降级 Agents maintenant 负责监视,你的 AI agent 负责排查。这个循环分三步: 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 Loading 配合 Claude Code 使用。一个小型接收器(Python,仅标准库)运行在主机上、与 maintenant 相邻。每个触发的告警都会启动一个 headless 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 通过 stdio 使用 docker exec -i maintenant /app/maintenant --mcp-stdio 访问 maintenant,因此不会开放任何 MCP 端口:启动 maintenant 时设置 MAINTENANT_MCP_SOCKET=true,以提供它所中继到的本地 socket。把一个 webhook 渠道指向该接收器,带上 Authorization: Bearer <token> 头,再用一个 trigger 把告警路由过去。AI agents 指南会带你走完整个配置过程。
配合 OpenCode 时,同一个接收器改为调用 opencode run 而不是 claude -p,并在 opencode.json 中把 maintenant 声明为本地 MCP server。配合 n8n 时,用一个 Webhook trigger 喂给 AI Agent 节点,其 MCP Client 工具指向你实例的 /mcp 端点。
内置 Model Context Protocol server,提供 51 个工具。问问你的 AI 助手哪里着火了,读取某个容器的日志,查看告警队列,确认一条告警,开一个 incident。支持 stdio 和 Streamable HTTP 传输,面向远程客户端(Claude 网页版、移动端和 Desktop)的 OAuth2(client id 加 secret)。
每个小节都链接到它的完整文档。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。