Argus 可观测性完整指南:3 步接入 Prometheus 监控指标与 /metrics 端点
【免费下载链接】Argus
Argus is a lightweight monitor to notify of new software releases via Gotify/Slack/other messages and/or WebHooks.
Argus是一款轻量级的软件版本监控工具,会按设定间隔查询各服务的新版本发布,并通过 Gotify/Slack 等消息通知和 WebHook 提醒你。但"它自己运行得好不好"谁来盯?Argus 内置了 Prometheus 监控支持:启动 Web 服务后,/metrics端点即自动开放,暴露服务数量、版本查询成败、通知与 Webhook 发送结果等核心指标,几分钟即可完成 Prometheus 抓取接入。
为什么 Argus 值得接入 Prometheus 监控?
作为"盯着别人更新"的工具,Argus 自身也值得被盯着:
- 🔍发现查询故障:某个源站接口改版导致版本号解析一直失败时,第一时间收到告警
- 📨确保通知链路可用:Notify/Webhook 发送失败会体现在累计失败计数中
- 📊量化更新积压:
updates_current直接告诉你现在有多少个服务有待处理的新版本 - 🧭外部仪表盘数据源:同一套指标还支撑
/api/v1/countsJSON 接口,供 Heimdall 等外部面板使用
指标实现集中在 web/metric/prometheus.go,基于prometheus/client_golang自动注册,无需任何额外配置。
快速开始:找到 Argus 的 /metrics 端点
Argus 的/metrics端点随 Web 服务一起启动,注册逻辑见 web/web.go:
api.Router.Handle("/metrics", api.GuardMetrics(promhttp.Handler()))端点地址规则如下:
| 项目 | 默认值 | 自定义方式 |
|---|---|---|
| 监听端口 | 8080 | -web.listen-port或环境变量ARGUS_WEB_LISTEN_PORT |
| 路径前缀 | / | -web.route-prefix或ARGUS_WEB_ROUTE_PREFIX |
因此默认情况下,直接访问http://<服务器IP>:8080/metrics即可看到 Prometheus 文本格式的指标数据(含 Go 运行时指标如go_gc_duration_seconds)。如果你设置了-web.route-prefix /argus,端点则为http://<服务器IP>:8080/argus/metrics。
💡 验证是否可用:
curl http://127.0.0.1:8080/metrics | grep updates_current,能输出即说明接入成功。
Argus 暴露了哪些 Prometheus 指标?
以下是 Argus 自定义的核心指标(定义见 web/metric/prometheus.go):
| 指标名 | 类型 | 标签 | 含义 |
|---|---|---|---|
service_count_current | Gauge | state | 当前配置的被监控服务数量(active/inactive) |
updates_current | Gauge | type | 可用/已跳过的更新数量(AVAILABLE/SKIPPED) |
latest_version_is_deployed | Gauge | id | 最新版本是否已部署:0=否,1=是,2=已批准,3=已跳过,4=未知 |
latest_version_query_result_last | Gauge | id,type | 最近一次"最新版本"查询结果:0=失败,1=成功,2=正则/require 无匹配,3=语义化版本解析失败,4=渐进式版本解析失败 |
latest_version_query_result_total | Counter | id,type,result | "最新版本"查询成功/失败累计次数 |
deployed_version_query_result_last | Gauge | id,type | 最近一次"已部署版本"查询:0=失败,1=成功 |
deployed_version_query_result_total | Counter | id,type,result | "已部署版本"查询成功/失败累计次数 |
command_result_total | Counter | id,service_id,result | Command 命令执行成功/失败累计次数 |
notify_result_total | Counter | id,service_id,type,result | Notify 消息发送成功/失败累计次数 |
webhook_result_total | Counter | id,service_id,result | Webhook 发送成功/失败累计次数 |
其中result标签的取值只有两种:SUCCESS和FAIL(常量定义见 web/metric/prometheus.go)。
配置 Prometheus 抓取任务(最快配置方法)
在 Prometheus 的prometheus.yml中加入以下抓取配置即可:
scrape_configs: - job_name: argus metrics_path: /metrics static_configs: - targets: ["argus-server:8080"]保存后执行promtool check config prometheus.yml校验,再重启 Prometheus,Grafana 中即可用job="argus"过滤查询。
开启认证时如何授权 /metrics 抓取(metric:read)
如果 Argus 开启了登录认证(settings.auth.enabled: true),/metrics不再匿名开放——守卫逻辑见 web/api/v1/http.go:
- 未认证:返回 401
- 已认证但无
metric:read权限:返回 403 metric资源仅支持全局范围的read权限(权限矩阵见 auth/rbac/rbac.go)
推荐做法:在 Web UI 的账号管理页创建一个专用API Token,并为其授予metric:read权限,然后在抓取配置中使用bearer_token:
scrape_configs: - job_name: argus metrics_path: /metrics bearer_token: "<你的Argus API Token>" static_configs: - targets: ["argus-server:8080"]⚠️ 注意:
/api/v1/counts端点同样需要metric:read权限。认证关闭时两者均为直通访问,无需 Token。
常用 PromQL 告警规则示例
几条值得加入rules.yml的高价值告警:
groups: - name: argus rules: - alert: ArgusDown expr: up{job="argus"} == 0 for: 2m - alert: ArgusNotifyFailing expr: increase(notify_result_total{result="FAIL"}[1h]) > 0 for: 10m - alert: ArgusVersionQueryBroken expr: latest_version_query_result_last == 3 or latest_version_query_result_last == 4 for: 30m - alert: UpdatesBacklog expr: updates_current{type="AVAILABLE"} > 10 for: 1h配合latest_version_is_deployed == 0这类查询,还可以做"新版本发布超过 7 天未部署"的自定义追踪。
附赠:/api/v1/counts 面向外部仪表盘
如果你不想引入 Prometheus,Argus 还提供 JSON 版的计数接口GET /api/v1/counts(实现见 web/api/v1/counts.go),返回内容包含:
service_count/service_count_active/service_count_inactive:服务总数与激活数updates_available/updates_skipped:可用更新与跳过更新数量update_details:未部署最新版本的服务明细(含已批准、已跳过标记)
它的数据正是直接从 Prometheus Gauge 中读取(service_count_current、updates_current),因此与/metrics永远保持一致。
相关源码与文档位置
| 内容 | 路径 |
|---|---|
| 指标定义与标签常量 | web/metric/prometheus.go |
/metrics路由注册 | web/web.go |
| 认证守卫 GuardMetrics | web/api/v1/http.go |
/api/v1/counts接口 | web/api/v1/counts.go |
metric:read权限矩阵 | auth/rbac/rbac.go |
| 命令行参数说明 | README.md |
至此,Argus 的 Prometheus 可观测性接入就完成了:默认开放/metrics端点、覆盖版本查询与通知链路的完整指标、认证模式下用 API Token 授权抓取。把它接进你的监控栈,Argus 就从"单向提醒工具"升级为"自我可观测的监控节点"。
【免费下载链接】Argus
Argus is a lightweight monitor to notify of new software releases via Gotify/Slack/other messages and/or WebHooks.
相关推荐
TokenSpeed监控与可观测性实战:metrics server与Prometheus指标全解
TokenSpeed监控与可观测性实战:metrics server与Prometheus指标全解 TokenSpeed 是一款追求"光速"(speed of
人工智能大模型推理引擎模型推理服务后端15分钟跑通Thorium浏览器:1条命令选版、2条命令装完、3处对出差异
15分钟跑通Thorium浏览器:1条命令选版、2条命令装完、3处对出差异 刚拿到一台 Linux 机器,想要比 Chrome 更快、还带 Widevine 和
桌面应用前端音视频iloader:iOS 侧载一键装好 SideStore,不碰签名、证书和配对文件
iloader:iOS 侧载一键装好 SideStore,不碰签名、证书和配对文件 iloader 是一款免费开源的 iOS 侧载工具:iPhone 插到电脑上
桌面应用移动开发开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考