用 Prometheus 采集 WebP Cloud 账户数据
作为 WebP Cloud 的付费用户,我们很感谢来自你的支持!(什么,你还不是我们的付费用户嘛?那说明你的用量还不够大以至于我们免费的 Plan 都可以支持你啦~
用户可能会一些困扰:
- 我每天用了多少 Quota
- 能不能把 WebP Cloud 的数据直接集成到我自己的监控面板上
- 我的 Proxy 每天输出了多少流量,请求数分布是如何的
WebP Cloud 作为一个 SaaS 服务,对所有 Plan 的用户都开放了详细的访问数据:
是的,所有 Plan 的用户都可以看到详细的数据,不会像某些服务商一样买了 Pro 之后才能看到…带采样率的数据?
但是可能会有用户觉得这样的数据不够好看或者希望集成到自己的 Dashboard 中,在之前可以直接通过我们的 API 拿到所有的数据,只用稍加处理,即可写入自己的数据库。
但是这样依然不够好用!每个有自己 Dashboard 的用户都需要手动写一遍导入逻辑和定时运行的任务,这样会带来大量的资源/时间浪费,为什么 WebP Cloud 不能直接提供一套通用的接口来给出数据呢?
/metrics
这不, /metrics
接口就出现了,目前我们上线了两个接口:
/v1/user/metrics
/v1/proxy/<proxy_uuid>/metrics
分别可以展示当前用户的一些信息和对应 Proxy 的基本信息,详细参数可以参考文档:
- https://docs.webp.se/webp-cloud/api/#get-user-metrics
- https://docs.webp.se/webp-cloud/api/#get-proxy-metrics
Prometheus
我们来看看如何使用这两个接口来快速从 WebP Cloud 导入数据到自己的 Dashboard!
/metrics
接口是符合 Prometheus Exposition Format 规范的接口,由于这个接口在我们整个对外 API 接口下,访问接口需要传入 API Key 鉴权,我们调研了一下 Prometheus 发现原生只支持 Authorization
Header(我们的 API 支持的是 token
和 api-key
Header),为此我们额外支持了 Authorization
Header,假设你的本地监控栈是如下部署的:
version: '3'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- "9090:9090"
grafana:
image: grafana/grafana:9.5.20
ports:
- "127.0.0.1:3000:3000"
volumes:
- ./grafana_data:/var/lib/grafana
你的 prometheus.yml
文件如下(这个例子中我们用来监控自己账户的 Quota 剩余量信息和 ProxyID 为 afc8fd63-5ce6-48d2-a80b-edbf2ee8b6dc
的信息,假设你的 WebP Cloud API Key 为 dd25xxxx-xxxx-xxxx-xxxx-xxxxxxxx96a3
API Key 可以在 Dashboard 右上角看到
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'webp_cloud_user'
metrics_path: /v1/user/metrics
static_configs:
- targets:
- webppt.webp.se
authorization:
type: ""
credentials: "dd25xxxx-xxxx-xxxx-xxxx-xxxxxxxx96a3"
- job_name: 'webp_cloud_proxy'
metrics_path: /v1/proxy/afc8fd63-5ce6-48d2-a80b-edbf2ee8b6dc/metrics
static_configs:
- targets:
- webppt.webp.se
authorization:
type: ""
credentials: "dd25xxxx-xxxx-xxxx-xxxx-xxxxxxxx96a3"
这样,我们就可以在 Prometheus 中看到我们要抓取的数据了。
接下来就可以在任意面板中集成了,例如 Grafana:
Enjoy~
WebP Cloud Services 团队是一个来自上海和赫尔辛堡的三人小团队,由于我们不融资,且没有盈利压力 ,所以我们会坚持做我们认为正确的事情,力求在我们的资源和能力允许范围内尽量把事情做到最好, 同时也会在不影响对外提供的服务的情况下整更多的活,并在我们产品上实践各种新奇的东西。
如果你觉得我们的这个服务有意思或者对我们服务感兴趣,欢迎登录 WebP Cloud Dashboard 来体验,如果你好奇它还有哪些神奇的功能,可以来看看我们的文档 WebP Cloud Services Docs,希望大家玩的开心~
Discuss on Hacker News