前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linkerd 2.10(Step by Step)—获取每条路由指标

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

作者头像
为少
发布2021-07-07 11:10:22
4440
发布2021-07-07 11:10:22
举报
文章被收录于专栏:黑客下午茶黑客下午茶

Linkerd 2.10 系列

Linkerd 2.10 中文手册持续修正更新中:

  • https://linkerd.hacker-linner.com

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

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

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

代码语言:javascript
复制
$ 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 中指定的正则表达式不匹配的东西都将在那里结束。

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

代码语言:javascript
复制
$ 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

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

代码语言:javascript
复制
$ 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 来理解问题。对于服务指向的资源,运行:

代码语言:javascript
复制
linkerd viz tap deploy/webapp -o wide | grep req

示例输出是:

代码语言:javascript
复制
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。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑客下午茶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linkerd 2.10 系列
  • 故障排除
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档