Linkerd 2.10(Step by Step)—获取每条路由指标

简介: Linkerd 2.10(Step by Step)—获取每条路由指标

要获取每个路由的指标,您必须首先创建一个 service profile。创建 service profile 后,Linkerd 将向 Prometheus 指标添加标签, 将特定请求与特定路由相关联。


有关展示此功能的教程,请查看 books demo

您可以通过运行 linkerd viz routesCLI 中查看每个路由的指标:


$ linkerd viz routes svc/webapp
ROUTE                       SERVICE   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99
GET /                        webapp   100.00%   0.6rps          25ms          30ms          30ms
GET /authors/{id}            webapp   100.00%   0.6rps          22ms          29ms          30ms
GET /books/{id}              webapp   100.00%   1.2rps          18ms          29ms          30ms
POST /authors                webapp   100.00%   0.6rps          32ms          46ms          49ms
POST /authors/{id}/delete    webapp   100.00%   0.6rps          45ms          87ms          98ms
POST /authors/{id}/edit      webapp     0.00%   0.0rps           0ms           0ms           0ms
POST /books                  webapp    50.76%   2.2rps          26ms          38ms          40ms
POST /books/{id}/delete      webapp   100.00%   0.6rps          24ms          29ms          30ms
POST /books/{id}/edit        webapp    60.71%   0.9rps          75ms          98ms         100ms
[DEFAULT]                    webapp     0.00%   0.0rps           0ms           0ms           0ms


[DEFAULT] route 是一个包罗万象的东西, 任何与您的 service profile 中指定的正则表达式不匹配的东西都将在那里结束。


还可以通过其他资源类型查找指标,例如:


$ linkerd viz routes deploy/webapp
ROUTE                          SERVICE   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99
[DEFAULT]                   kubernetes     0.00%   0.0rps           0ms           0ms           0ms
GET /                           webapp   100.00%   0.5rps          27ms          38ms          40ms
GET /authors/{id}               webapp   100.00%   0.6rps          18ms          29ms          30ms
GET /books/{id}                 webapp   100.00%   1.1rps          17ms          28ms          30ms
POST /authors                   webapp   100.00%   0.5rps          25ms          30ms          30ms
POST /authors/{id}/delete       webapp   100.00%   0.5rps          58ms          96ms          99ms
POST /authors/{id}/edit         webapp     0.00%   0.0rps           0ms           0ms           0ms
POST /books                     webapp    45.58%   2.5rps          33ms          82ms          97ms
POST /books/{id}/delete         webapp   100.00%   0.6rps          33ms          48ms          50ms
POST /books/{id}/edit           webapp    55.36%   0.9rps          79ms         160ms         192ms
[DEFAULT]                       webapp     0.00%   0.0rps           0ms           0ms           0ms


然后,可以一直过滤到从特定资源到其他服务的请求:


$ linkerd viz routes deploy/webapp --to svc/books
ROUTE                     SERVICE   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99
DELETE /books/{id}.json     books   100.00%   0.5rps          18ms          29ms          30ms
GET /books.json             books   100.00%   1.1rps           7ms          12ms          18ms
GET /books/{id}.json        books   100.00%   2.5rps           6ms          10ms          10ms
POST /books.json            books    52.24%   2.2rps          23ms          34ms          39ms
PUT /books/{id}.json        books    41.98%   1.4rps          73ms          97ms          99ms
[DEFAULT]                   books     0.00%   0.0rps           0ms           0ms           0ms


故障排除



如果您没有看到任何指标,则可能有两个罪魁祸首。在这两种情况下,都可以使用 linkerd viz tap 来理解问题。对于服务指向的资源,运行:


linkerd viz tap deploy/webapp -o wide | grep req


示例输出是:


req id=3:1 proxy=in  src=10.4.0.14:58562 dst=10.4.1.4:7000 tls=disabled :method=POST :authority=webapp:7000 :path=/books/24783/edit src_res=deploy/traffic src_ns=default dst_res=deploy/webapp dst_ns=default rt_route=POST /books/{id}/edit


这将仅选择观察到的请求并显示用于每个请求的 :authorityrt_route


  • Linkerd 通过 :authorityHost 头发现要使用的正确服务配置文件。您的 service profile 的名称必须与这些 headers 匹配。这些不匹配的原因有很多,请参阅 ingress (原因之一)。另一个是直接使用 IP 的客户端,例如 Prometheus。
  • 让正则表达式匹配可能很困难,排序很重要。注意 rt_route。如果完全丢失,请将 :path 与您希望它匹配的正则表达式进行比较, 并使用具有 Golang 正则表达式风格的 tester。
相关文章
|
Prometheus Cloud Native 数据可视化
Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 实例
Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 实例
142 0
|
存储 数据可视化 应用服务中间件
Linkerd 2.10(Step by Step)—使用 Linkerd 进行分布式跟踪
Linkerd 2.10(Step by Step)—使用 Linkerd 进行分布式跟踪
230 0
Linkerd 2.10(Step by Step)—使用 Linkerd 进行分布式跟踪
|
JSON Kubernetes 安全
Linkerd 2.10(Step by Step)—多集群通信
Linkerd 2.10(Step by Step)—多集群通信
276 0
Linkerd 2.10(Step by Step)—多集群通信
|
JSON Prometheus Kubernetes
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
139 0
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
|
Kubernetes API 容器
Linkerd 2.10(Step by Step)—使用请求跟踪调试 gRPC 应用程序
Linkerd 2.10(Step by Step)—使用请求跟踪调试 gRPC 应用程序
143 0
Linkerd 2.10(Step by Step)—使用请求跟踪调试 gRPC 应用程序
|
存储 JSON Prometheus
Linkerd 2.10(Step by Step)—导出指标
Linkerd 2.10(Step by Step)—导出指标
123 0
Linkerd 2.10(Step by Step)—修改代理日志级别
Linkerd 2.10(Step by Step)—修改代理日志级别
176 0
|
Kubernetes Java Linux
Linkerd 2.10(Step by Step)—配置代理并发
Linkerd 2.10(Step by Step)—配置代理并发
173 0
|
监控
Linkerd 2.10(Step by Step)—配置重试
Linkerd 2.10(Step by Step)—配置重试
128 0
|
Java Go Perl
Linkerd 2.10(Step by Step)—控制平面调试端点
Linkerd 2.10(Step by Step)—控制平面调试端点