Linkerd 2.10(Step by Step)—控制平面调试端点

Posted 为少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linkerd 2.10(Step by Step)—控制平面调试端点相关的知识,希望对你有一定的参考价值。

Linkerd 2.10 系列

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

所有控制平面组件(Grafana 除外)
都使用 Go 的 pprof
通过路径 /debug/pprof 暴露运行时分析信息。

您可以使用 go tool pprof 使用提供的数据以生成多种格式(PDF、DOT、PNG 等)的输出。

提供了以下诊断(/debug/pprof 提供了带链接的摘要):

  • allocs: 过去所有内存分配的样本
  • block: 导致同步原语阻塞的堆栈跟踪
  • cmdline: 当前程序的命令行调用
  • goroutine: 所有当前 goroutine 的堆栈跟踪
  • heap: 活动对象的内存分配示例。您可以指定 gc GET 参数以在获取堆样本之前运行 GC
  • mutex: 竞争互斥锁持有者的堆栈跟踪
  • profile: CPU 配置文件。您可以在 seconds GET 参数中指定持续时间。
    获取配置文件后,使用 go tool pprof 命令调查配置文件。
  • threadcreate: 导致创建新 OS 线程的堆栈跟踪
  • trace: 当前程序的执行轨迹。您可以在 seconds GET 参数中指定持续时间。
    获取跟踪文件后,使用 go tool trace 命令调查跟踪。

示例用法

此数据通过 admin-http 端口提供。要找到此端口,
您可以检查 pod 的 yaml,或者对 identity pod,发出如下命令:

kubectl -n linkerd get po \\
    $(kubectl -n linkerd get pod -l linkerd.io/control-plane-component=identity \\
        -o jsonpath=\'{.items[0].metadata.name}\') \\
    -o=jsonpath=\'{.spec.containers[*].ports[?(@.name=="admin-http")].containerPort}\'

然后使用 kubectl port-forward 命令从集群外部访问该端口(在本例中,端口为 9990):

kubectl -n linkerd port-forward \\
    $(kubectl -n linkerd get pod -l linkerd.io/control-plane-component=identity \\
        -o jsonpath=\'{.items[0].metadata.name}\') \\
    9990

现在可以使用 go tool 来检查这些数据。
例如,在 PDF 文件中生成描述内存分配的图表:

go tool pprof -seconds 5 -pdf http://localhost:9990/debug/pprof/allocs
我是为少
微信:uuhells123
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)

以上是关于Linkerd 2.10(Step by Step)—控制平面调试端点的主要内容,如果未能解决你的问题,请参考以下文章

Linkerd 2.10(Step by Step)—控制平面调试端点

Linkerd 2.10(Step by Step)—1. 将您的服务添加到 Linkerd

step by step to OpenFOAM:step1

Microsoft SQL Server 2008 MDX Step by Step中关于MDX Step-by-Step.abf损坏文件的处理

斑马难题Step by Step

深入理解计算机系统-作业2.10