关于 LastPing
LastPing 通过检测缺少签到及已报告的故障,监控 AI Agent、定时任务和 CI/CD 流水线。其 CLI 可包装命令,MCP 服务则让 Agent 配置监控并查看运行记录、事件和追踪。
主要功能
- 01命令包装器报告启动与退出状态
- 02监测缺失签到
- 03通过 MCP 管理监控与事件
- 04查看运行历史和追踪
- 05配置告警路由与状态页
适用场景
- 01监控夜间备份或 ETL 任务
- 02发现停滞或等待审批的 Agent
- 03让 Agent 自行创建监控项
- 04查看失败运行的时间线与追踪
MCP 相关
MCP 服务提供工具,供 Agent 创建和管理监控项、查询运行及事件详情、检查追踪并配置告警。服务提供托管端点或 stdio 二进制版本。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.lastping.dev/mcpclaude mcp add --transport http dev-lastping-lastping https://mcp.lastping.dev/mcp{"mcpServers":{"dev-lastping-lastping":{"type":"http","url":"https://mcp.lastping.dev/mcp"}}}在 Cursor 中打开{"servers":{"dev-lastping-lastping":{"type":"http","url":"https://mcp.lastping.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"dev-lastping-lastping":{"type":"http","url":"https://mcp.lastping.dev/mcp"}}}{"mcpServers":{"dev-lastping-lastping":{"serverUrl":"https://mcp.lastping.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
LastPing 会在你的 AI Agent 失败、停滞、等待你批准或始终未启动时发出提醒,还会监控相关的 cron 任务和 CI/CD 流水线。个人用户免费。
大多数监控会关注某项任务,并在发现异常时通知你。LastPing 则会等待任务报到,并在它没有报到时通知你。这种反转就是产品的核心:出故障的任务无法向你发送错误信息,但可以不发送任何信息,而缺席是故障进程仍能发出的唯一信号。
此仓库包含客户端组件:lastping CLI 可包装任意命令,并报告其启动情况、退出代码和跟踪信息;MCP 服务则让 AI Agent 能够设置并查看自己的监控。它们连接的托管服务位于 lastping.dev,个人用户免费。
快速开始
# 1. Install the CLI (macOS and Linux, amd64 and arm64)
curl -fsSL https://raw.githubusercontent.com/lastping-dev/lastping-app/main/install.sh | sh
# 2. Wrap a job: a start ping, your command untouched, then its exit code
lastping run --monitor <monitor-id> -- ./backup.sh
# 3. Or give your AI assistant the hosted MCP server, and sign in
https://mcp.lastping.dev/mcp
在 app.lastping.dev 创建监控并获取其 ID,或者通过 MCP 让你的助手来创建。各客户端的连接步骤请见 lastping.dev/mcp/。
安装
curl -fsSL https://raw.githubusercontent.com/lastping-dev/lastping-app/main/install.sh | sh
无需安装 Go 工具链——此命令会下载适用于 macOS 和 Linux 的预构建二进制文件,支持 amd64 和 arm64,并验证其校验和。Windows 版本可在 版本发布页面获取。
如果你已安装 Go:
go install github.com/lastping-dev/lastping-app/cmd/lastping@latest
lastping run — 不会忘记的报告
将它放在你已经运行的任何命令前面:
lastping run --monitor <monitor-id> -- python nightly_etl.py
lastping run --monitor <monitor-id> -- ./backup.sh
lastping run --monitor <monitor-id> -- claude
它会发送开始 ping,原样运行你的命令,并在命令结束时报告退出代码——退出代码为 0 表示成功,其他值表示失败;同时附上 stderr 末尾内容,让告警说明原因。
以下三项值得了解,因为它们决定了这个监控包装器能否在生产环境中值得信赖,还是会在某个糟糕的夜晚后被你移除:
- 你的退出代码始终会传递。 包装器会以你的命令退出时使用的代码退出,因此 CI 的行为和添加包装器之前完全一致。
- ping 失败绝不会影响你的命令。 如果 LastPing 无法访问,你的任务仍会运行、仍会写入输出,也仍会正常退出。
- 交互体验保持不变。 stdin 和 stdout 会作为文件描述符传递,因此用包装器运行 REPL 或 Agent 会话也可行。
为什么要用包装器,而不是一条指示?因为任何建议性的做法都会逐渐失效。告诉 AI Agent 每项任务都要报告,它最终会不再这么做;你打算添加 curl 的 cron 条目,也可能一直没加上。包装器会根据进程生命周期发送报告,因此不依赖任何人记得去做。
追踪
lastping run 始终只在被包装命令的环境中配置其 OpenTelemetry 导出器,因此自动插桩的 Agent 无需修改代码,就能导出自己的追踪跨度:
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT— 未设置LASTPING_API_KEY时,使用不带标头的监控 URL 形式(<ping url>/v1/traces),让不带标头的导出器也能进行身份验证;设置了该变量时,则使用 ping 主机的/v1/traces(Bearer 形式)。OTEL_RESOURCE_ATTRIBUTES— 将lastping.monitor_id=<id>,lastping.run_id=<rid>附加到你已设置的值后面,让追踪中的跨度与周围 ping 所报告的同一次运行关联起来。OTEL_EXPORTER_OTLP_HEADERS— 仅当设置了LASTPING_API_KEY,且你尚未自行设置该变量时,使用Authorization=Bearer <your key>。
你已设置的上述三个变量中的任何一个都会保持原样。该密钥绝不会用于 ping 身份验证;如上所述,ping URL 按设计保持无需身份验证。
MCP 服务 — 让 Agent 自行为自己设置监控
Claude Desktop 扩展
适用于 macOS 和 Windows 上 Claude Desktop 的一键安装方式,密钥会保存在系统钥匙串中。无需 Node.js。
- 下载 lastping.mcpb。
- 双击该文件;Claude Desktop 会打开安装对话框。
- 粘贴从 app.lastping.dev 的“设置”中“API 密钥”处获取的写入范围密钥。
该扩展会在你的计算机上运行此仓库的 stdio 二进制文件(如下)。每当标记版本时,都会通过 mcpb/build.sh 构建,并且每个发行版都会经过签名;如果构建的发行版未签名,构建将失败,而不会发布未签名的包。证书为自签名证书,因此 Claude Desktop 会将该扩展显示为未验证。尽管如此,签名仍能证明该包来自此仓库的发行流水线,并且签名后未被篡改。未提供签名密钥的情况下在本地运行 mcpb/build.sh,生成的包不会签名,并会明确说明这一点。MCPB_CERT_CA_ISSUED 保留供将来使用公共 CA 颁发的证书。
通过 mcp-remote 桥接连接 Claude Desktop
Claude Desktop 的配置文件只能运行本地程序,因此 LastPing 通过 mcp-remote 桥接连接。将以下内容添加到 claude_desktop_config.json(macOS:~/Library/Application Support/Claude/,Windows:%APPDATA%\Claude\):
{
"mcpServers": {
"lastping": {
"command": "/ABSOLUTE/PATH/TO/npx",
"args": [
"-y", "mcp-remote",
"https://mcp.lastping.dev/mcp",
"--header", "Authorization:${LASTPING_AUTH}"
],
"env": {
"PATH": "/FOLDER/THAT/HOLDS/npx:/usr/bin:/bin",
"LASTPING_AUTH": "Bearer lp_your_key"
}
}
}
}
- 需要 Node.js。Claude Desktop 不会读取 shell 的 PATH,因此请提供完整路径:在终端中运行
which npx,并将结果填入command(使用 nvm 时,路径类似于/Users/you/.nvm/versions/node/v22.11.0/bin/npx),并在env的PATH开头添加其所在文件夹。 - 退出并重新打开 Claude Desktop;它只会在启动时读取该文件。依次进入 Settings、Connectors,即可看到 lastping。
- 如果没有密钥,也可以改为将 LastPing 添加为自定义连接器(依次选择 Customize、Connectors、Add custom connector,然后粘贴
https://mcp.lastping.dev/mcp),并在浏览器中登录 LastPing。同一个连接器适用于 claude.ai、Claude 移动应用和 Cowork。
其他客户端
Claude Code 可直接连接,无需桥接:
claude mcp add --transport http --scope user lastping https://mcp.lastping.dev/mcp --header "Authorization: Bearer <key>"。
Cursor、Windsurf、Codex CLI、Gemini CLI 和其他客户端:
lastping.dev/mcp/#connect。
推荐使用托管服务,它始终包含最新的工具集。大多数客户端只需添加 URL 并登录 LastPing 即可连接,无需安装任何内容;Cursor 和 Windsurf 则使用 URL 和 API 密钥。使用密钥时,Claude Desktop 可通过扩展或上文的 mcp-remote 桥接连接。
如果你更愿意自行运行,也可以使用这里的 stdio 二进制文件:
go install github.com/lastping-dev/lastping-app/cmd/lastping-mcp@latest
此仓库 stdio 二进制文件中的工具(50)
监控器:create_monitor · get_monitor · list_monitors ·
update_monitor · delete_monitor · pause_monitor · resume_monitor ·
snooze_monitor
发现:discover_monitors_reconcile
报告:get_ping_instructions · declare_run_expectations
事件与运行:list_incidents · get_run_history · get_run
(单次运行的完整时间线、断言判定和跨度)· list_runs
(所有监控器的运行,包含追踪运行,并支持筛选)·
get_incident(单个事件的记录时间线)
追踪:get_trace_setup(服务器为某个工具提供的设置步骤)·
create_ingest_key(绑定到单个监控器的追踪密钥;写入密钥即可)·
get_trace_diagnostics(已发送的跨度被拒绝的原因)
Agent 可观测性:get_agent_dependencies · get_agent_usage ·
list_dependencies · list_discovered_agents · adopt_discovered_agent
故障处理循环:list_open_incidents · add_incident_note
警报路由:set_route · delete_route
投递日志:list_deliveries,列出所有监控器近期的警报投递,不分页
目标:list_destinations · create_destination ·
update_destination · test_destination · delete_destination
警报模板:get_alert_templates · set_alert_template
Agent 注册表:register_agent · list_agents · get_agent ·
update_agent · delete_agent
状态页:list_status_pages · create_status_page ·
update_status_page · delete_status_page
API 密钥:create_api_key(可选的 scope:read / write / admin / ingest)·
list_api_keys · regenerate_api_key(生成新密钥,同一密钥;不会级联)·
revoke_api_key(级联撤销其创建的所有密钥)
Terraform:export_terraform
此二进制文件与 mcp.lastping.dev 上的托管服务使用相同的工具集。它全程都是轻量级 REST 客户端:每个工具都会直接调用管理 API,因此你可以免费自行运行,且除非发布新版本,否则其功能始终与托管服务保持同步。
最重要的是 get_ping_instructions:Agent 调用 create_monitor,然后获取自己的 ping 命令,并将其接入自己的工作流程——一段对话即可完成,无需人工打开仪表板。
Ping API
每个监控项都有一个 URL。无需安装任何内容,也无需维护库;任何能发起 HTTP 请求的工具都可以上报。
| 发生的情况 | 请求 |
|---|---|
| 成功完成 | POST <ping-url> |
| 开始运行 | POST <ping-url>/start |
| 失败 | POST <ping-url>/fail,并在请求正文中附上错误信息 |
| 以某个代码退出 | POST <ping-url>/<exit-code> |
| 等待人工处理 | POST <ping-url>/blocked |
| 值得记录的进度 | POST <ping-url>/note |
添加 ?rid=<id>,将一次运行的开始与结果关联起来,以便 LastPing 将该运行的 ping 分组并计时。
# The classic one-liner, at the end of a cron job:
curl -fsS -m 10 --retry 3 https://ping.lastping.dev/<monitor-id>
Traces
POST https://ping.lastping.dev/v1/traces 接受 OTLP/HTTP 导出数据(application/x-protobuf 或 application/json,也接受 gzip),并使用 Bearer 密钥(绑定到监控项的 ingest 密钥,通过 create_ingest_key 创建;也可以使用写入密钥或管理员密钥),或者对于无法设置请求头的导出器,使用 POST <ping-url>/v1/traces。Span 需要包含资源属性 lastping.monitor_id;若包含 lastping.run_id,则会关联到该运行;若不包含,则每条 trace 都会成为独立运行。解压后的载荷上限为 1 MiB,每个请求最多 500 个 Span,每次运行最多 2,000 个 Span。lastping run 会为你完成所有设置——详见上文的 Traces。
将监控作为代码管理
resource "lastping_monitor" "nightly_etl" {
name = "nightly-etl"
slug = "nightly-etl"
schedule_kind = "cron"
cron_expr = "0 3 * * *"
tz = "Europe/Berlin"
grace_s = 900
}
该 Provider 已发布在
Terraform Registry
上,名称为 lastping-dev/lastping,源代码位于
lastping-dev/terraform-provider-lastping。
链接
- lastping.dev — 托管服务,个人用户免费使用
- AI agent monitoring — 面向 Agent 的指南
- MCP server — 为每个客户端连接配置
- Terraform provider — 将监控作为代码管理
- 集成指南 — cron、Kubernetes、systemd、GitHub Actions、Python、Node
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。