caddy使用prometheus监控

无论你是在云端运行数千个 Caddy 实例,还是在嵌入式设备上运行单个 Caddy 服务器,很可能在某个时刻,你会想要对 Caddy 的运行情况有一个高层次的概览,以及了解它需要多长时间来完成任务。换句话说,你会想要能够监控
Caddy。

启用指标

你需要启用指标。

如果使用 Caddyfile,可以在全局选项中启用指标:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
    servers {
        metrics
    }
}

```

如果使用 JSON,则在你的 apps > http > servers
 配置中添加 "metrics": {}

## Prometheus

Prometheus 是一个监控平台,它通过抓取监控目标上的指标 HTTP 端点来收集指标。除了帮助你使用 Grafana 这样的仪表板工具显示指标外,Prometheus 还用于告警。

和 Caddy 一样,Prometheus 也是用 Go 编写的,并且以单个二进制文件的形式分发。安装方法可以参考 Prometheus 安装文档,或者在 MacOS 上直接运行 brew install prometheus


如果你是 Prometheus 的新手,请阅读 Prometheus 文档,否则请继续阅读!

要配置 Prometheus 从 Caddy 抓取指标,你需要一个类似以下内容的 YAML 配置文件:

prometheus.yaml

global:
  scrape_interval: 15s # 默认是 1 分钟

scrape_configs:
  - job_name: caddy
    static_configs:
      - targets: [‘localhost:2019’]

1
2
  
然后你可以像这样启动 Prometheus:

$ prometheus --config.file=prometheus.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## Caddy 的指标  

和任何被 Prometheus 监控的进程一样,Caddy 暴露了一个 HTTP 端点,以 Prometheus 暴露格式响应。Caddy 的 Prometheus 客户端还被配置为,如果协商成功(即 Accept
 头设置为 application/openmetrics-text; version=0.0.1
),则以 OpenMetrics 暴露格式响应。

默认情况下,有一个 /metrics
 端点在管理 API 上可用(即 
http://localhost:2019/metrics)。但如果管理
 API 被禁用,或者你希望监听不同的端口或路径,你可以使用 metrics
 处理程序来配置。

你可以使用任何浏览器或 HTTP 客户端(如 curl
)查看指标:

$ curl http://localhost:2019/metrics

HELP caddy_admin_http_requests_total 管理 API 的 HTTP 端点的请求计数器。

TYPE caddy_admin_http_requests_total counter

caddy_admin_http_requests_total{code=“200”,handler=“metrics”,method=“GET”,path=“/metrics”} 2

HELP caddy_http_request_duration_seconds 请求往返持续时间的直方图。

TYPE caddy_http_request_duration_seconds histogram

caddy_http_request_duration_seconds_bucket{code=“308”,handler=“static_response”,method=“GET”,server=“remaining_auto_https_redirects”,le=“0.005”} 1
caddy_http_request_duration_seconds_bucket{code=“308”,handler=“static_response”,method=“GET”,server=“remaining_auto_https_redirects”,le=“0.01”} 1
caddy_http_request_duration_seconds_bucket{code=“308”,handler=“static_response”,method=“GET”,server=“remaining_auto_https_redirects”,le=“0.025”} 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  
你会看到许多指标,它们大致分为以下 4 类:
- 运行时指标

- 管理 API 指标

- HTTP 中间件指标

- 反向代理指标

### 运行时指标

这些指标涵盖了 Caddy 进程的内部情况,由 Prometheus Go 客户端自动提供。它们以 go_*
 和 process_*
 开头。

请注意,process_*
 指标仅在 Linux 和 Windows 上收集。

查看 Go 收集器、进程收集器和构建信息收集器的文档。
### 管理 API 指标

这些指标有助于监控 Caddy 管理 API。每个管理端点都被用来跟踪请求次数和错误。

这些指标以 caddy_admin_*
 开头。

例如:

$ curl -s http://localhost:2019/metrics | grep ^caddy_admin
caddy_admin_http_requests_total{code=“200”,handler=“admin”,method=“GET”,path=“/config/”} 1
caddy_admin_http_requests_total{code=“200”,handler=“admin”,method=“GET”,path=“/debug/pprof/”} 2
caddy_admin_http_requests_total{code=“200”,handler=“admin”,method=“GET”,path=“/debug/pprof/cmdline”} 1
caddy_admin_http_requests_total{code=“200”,handler=“load”,method=“POST”,path=“/load”} 1
caddy_admin_http_requests_total{code=“200”,handler=“metrics”,method=“GET”,path=“/metrics”} 3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#### caddy_admin_http_requests_total  

管理端点处理的请求数量的计数器,包括 admin.api.*
 命名空间中的模块。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">code</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 状态码</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">method</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 方法</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">path</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">管理端点挂载的 URL 路径</span></section></td></tr></tbody></table>#### caddy_admin_http_request_errors_total

管理端点遇到的错误数量的计数器,包括 admin.api.*
 命名空间中的模块。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">method</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 方法</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">path</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">管理端点挂载的 URL 路径</span></section></td></tr></tbody></table>### HTTP 中间件指标

所有 Caddy HTTP 中间件处理程序都自动进行了仪器化,以便确定请求延迟、首次响应时间、错误以及请求/响应体大小。

对于以下直方图指标,桶目前是不可配置的。对于持续时间,默认使用 prometheus.DefBuckets
 桶集(5ms、10ms、25ms、50ms、100ms、250ms、500ms、1s、2.5s、5s 和 10s)。对于大小,桶是 256b、1kiB、4kiB、16kiB、64kiB、256kiB、1MiB 和 4MiB。
#### caddy_http_requests_in_flight

该服务器当前正在处理的请求数量的计数器。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr></tbody></table>#### caddy_http_request_errors_total

处理请求时中间件遇到的错误数量的计数器。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr></tbody></table>#### caddy_http_requests_total

HTTP(S) 请求的数量的计数器。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr></tbody></table>#### caddy_http_request_duration_seconds

往返请求持续时间的直方图。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">code</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 状态码</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">method</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 方法</span></section></td></tr></tbody></table>#### caddy_http_request_size_bytes

请求的总(估计)大小的直方图。包括正文。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">code</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 状态码</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">method</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 方法</span></section></td></tr></tbody></table>#### caddy_http_response_size_bytes

返回的响应正文大小的直方图。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">code</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 状态码</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">method</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 方法</span></section></td></tr></tbody></table>#### caddy_http_response_duration_seconds

响应的首次响应时间的直方图。
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">标签</span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">server</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">服务器名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">handler</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">处理程序或模块名称</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">code</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 状态码</span></section></td></tr><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">method</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">HTTP 方法</span></section></td></tr></tbody></table>### 反向代理指标
#### caddy_reverse_proxy_upstreams_healthy

反向代理上游健康状况的计数器。

值为 0
 表示上游不健康,而 1
 表示上游健康。

| 标
<table><thead><tr><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf=""></span></section></th><th style="font-weight: 700;color: rgb(0, 0, 0);border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">描述</span></section></th></tr></thead><tbody><tr><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><code style="font-family: Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;font-size: 0.85em;color: rgb(0, 0, 0);background-color: rgb(240, 240, 240);border-radius: 3px;padding: 0.2em 0px;"><span leaf="">upstream</span></code></td><td style="border: 1px solid rgb(214, 214, 214);padding: 6px 13px;"><section><span leaf="">上游地址</span></section></td></tr></tbody></table>## 示例查询

一旦 Prometheus 开始抓取 Caddy 的指标,你就可以开始查看一些关于 Caddy 性能的有趣指标。

例如,要查看每秒请求率,平均 5 分钟:

rate(caddy_http_requests_total{handler=“file_server”}[5m])

1
2
  
要查看你的延迟阈值 100ms 被超过的速率:

sum(rate(caddy_http_request_duration_seconds_count{server=“srv0”}[5m])) by (handler)

sum(rate(caddy_http_request_duration_seconds_bucket{le=“0.100”, server=“srv0”}[5m])) by (handler)

1
2
3
  
要找到 file_server
 处理程序的 95% 请求持续时间,可以使用类似以下的查询:

histogram_quantile(0.95, sum(caddy_http_request_duration_seconds_bucket{handler=“file_server”}) by (le))

1
2
3
4
  
或者要查看 file_server
 处理程序上成功的 GET
 请求的响应大小的中位数(以字节为单位):

histogram_quantile(0.5, caddy_http_response_size_bytes_bucket{method=“GET”, handler=“file_server”, code=“200”})

  
  

![江达小记](/images/wechatmpscan.png)