Argus 可观测性完整指南:3 步接入 Prometheus 监控指标与 /metrics 端点

发布时间:2026/10/30 5:44:26
Argus 可观测性完整指南:3 步接入 Prometheus 监控指标与 /metrics 端点

【免费下载链接】Argus

Argus is a lightweight monitor to notify of new software releases via Gotify/Slack/other messages and/or WebHooks.

项目地址:https://gitcode.com/gh_mirrors/arg/Argus
点击查看免费下载

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_currentGaugestate当前配置的被监控服务数量(active/inactive)
updates_currentGaugetype可用/已跳过的更新数量(AVAILABLE/SKIPPED)
latest_version_is_deployedGaugeid最新版本是否已部署:0=否,1=是,2=已批准,3=已跳过,4=未知
latest_version_query_result_lastGaugeid,type最近一次"最新版本"查询结果:0=失败,1=成功,2=正则/require 无匹配,3=语义化版本解析失败,4=渐进式版本解析失败
latest_version_query_result_totalCounterid,type,result"最新版本"查询成功/失败累计次数
deployed_version_query_result_lastGaugeid,type最近一次"已部署版本"查询:0=失败,1=成功
deployed_version_query_result_totalCounterid,type,result"已部署版本"查询成功/失败累计次数
command_result_totalCounterid,service_id,resultCommand 命令执行成功/失败累计次数
notify_result_totalCounterid,service_id,type,resultNotify 消息发送成功/失败累计次数
webhook_result_totalCounterid,service_id,resultWebhook 发送成功/失败累计次数

其中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
认证守卫 GuardMetricsweb/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.

项目地址:https://gitcode.com/gh_mirrors/arg/Argus
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考