Linkerd 2.10(Step by Step)—导出指标

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
简介: Linkerd 2.10(Step by Step)—导出指标

按照设计,Linkerd 仅在较短的固定时间窗口(目前为 6 小时)内保留指标数据。这意味着如果 Linkerd 的指标数据对您很有价值,您可能希望将其导出到成熟的指标存储中。


在内部,Linkerd 将其指标存储在作为 Viz 扩展的一部分运行的 Prometheus 实例中。以下教程需要在启用 prometheus 的情况下安装可视化扩展。从 Linkerd 导出指标数据有几种基本方法:


  • 将数据联合到您自己的 Prometheus 集群
  • 使用 Prometheus 集成
  • 通过 PrometheusAPI 提取数据
  • 直接从代理收集数据


使用 Prometheus 联邦(federation) API



如果您使用 Prometheus 作为您自己的指标存储,我们建议利用 Prometheusfederation API, 该 API 专为将数据从一个 Prometheus 复制到另一个的用例而设计。


只需将以下项目添加到 Prometheus 配置文件中的 scrape_configs (将 {{.Namespace}} 替换为运行 Linkerd Viz 扩展的命名空间):


- job_name: 'linkerd'
  kubernetes_sd_configs:
  - role: pod
    namespaces:
      names: ['{{.Namespace}}']
  relabel_configs:
  - source_labels:
    - __meta_kubernetes_pod_container_name
    action: keep
    regex: ^prometheus$
  honor_labels: true
  metrics_path: '/federate'
  params:
    'match[]':
      - '{job="linkerd-proxy"}'
      - '{job="linkerd-controller"}'


或者,如果您更喜欢使用 PrometheusServiceMonitors 来配置您的 Prometheus, 您可以使用此 ServiceMonitor YAML (将 {{.Namespace}} 替换为运行 Linkerd Viz 扩展的命名空间):


apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    k8s-app: linkerd-prometheus
    release: monitoring
  name: linkerd-federate
  namespace: {{.Namespace}}
spec:
  endpoints:
  - interval: 30s
    scrapeTimeout: 30s
    params:
      match[]:
      - '{job="linkerd-proxy"}'
      - '{job="linkerd-controller"}'
    path: /federate
    port: admin-http
    honorLabels: true
    relabelings:
    - action: keep
      regex: '^prometheus$'
      sourceLabels:
      - '__meta_kubernetes_pod_container_name'
  jobLabel: app
  namespaceSelector:
    matchNames:
    - {{.Namespace}}
  selector:
    matchLabels:
      component: prometheus


就是这样!您的 Prometheus 集群现已配置为从 Linkerd 的 内部 Prometheus 实例联合 Linkerd 的指标。


一旦指标在您的 Prometheus 中, Linkerd 的代理指标将带有标签 job="linkerd-proxy", Linkerd 的控制平面指标将带有标签 job="linkerd-controller"。有关特定指标和标签定义的更多信息,请查看代理指标。


有关 Prometheus 的 /federate 端点的更多信息, 请查看 Prometheus federation 文档。


使用 Prometheus 集成



如果您不使用 Prometheus 作为您自己的长期数据存储, 您可以利用 Prometheus 的众多 集成 之一自动将 Linkerd 的 Prometheus 实例中 的数据提取到您选择的数据存储中。有关详细信息,请参阅 Prometheus 文档。


通过 Prometheus 的 API 提取数据



如果 Prometheus federationPrometheus 集成都不适合您, 则可以调用 PrometheusAPILinkerd 中提取数据。

例如,您可以通过以下命令直接调用联邦 API


curl -G \
  --data-urlencode 'match[]={job="linkerd-proxy"}' \
  --data-urlencode 'match[]={job="linkerd-controller"}' \
  http://prometheus.linkerd-viz.svc.cluster.local:9090/federate


如果您的数据存储在 Kubernetes 集群之外, 您可能希望在您选择的域名上设置 ingress 并进行身份验证。


/federate API 类似,Prometheus 提供了一个 JSON 查询 API 来检索所有指标:


curl http://prometheus.linkerd-viz.svc.cluster.local:9090/api/v1/query?query=request_total


直接从 Linkerd 代理收集数据



最后,如果您想完全避免 LinkerdPrometheus, 您可以直接在其 /metrics 端点上查询 Linkerd 代理。


例如,要从在 linkerd 命名空间中运行的单个 Linkerd 代理查看 /metrics


kubectl -n linkerd port-forward \
  $(kubectl -n linkerd get pods \
    -l linkerd.io/control-plane-ns=linkerd \
    -o jsonpath='{.items[0].metadata.name}') \
  4191:4191


然后:


curl localhost:4191/metrics


或者,linkerd diagnostics proxy-metrics 可用于检索 给定工作负载(workload)的代理指标(proxy metrics)。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Prometheus Cloud Native 数据可视化
Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 实例
Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 实例
143 0
|
存储 数据可视化 应用服务中间件
Linkerd 2.10(Step by Step)—使用 Linkerd 进行分布式跟踪
Linkerd 2.10(Step by Step)—使用 Linkerd 进行分布式跟踪
231 0
Linkerd 2.10(Step by Step)—使用 Linkerd 进行分布式跟踪
|
JSON Kubernetes 安全
Linkerd 2.10(Step by Step)—多集群通信
Linkerd 2.10(Step by Step)—多集群通信
279 0
Linkerd 2.10(Step by Step)—多集群通信
|
JSON Kubernetes 监控
Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布
Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布
176 0
Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布
|
JSON Prometheus Kubernetes
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
140 0
Linkerd 2.10(Step by Step)—使用每个路由指标调试 HTTP 应用程序
|
Prometheus Cloud Native Go
Linkerd 2.10(Step by Step)—获取每条路由指标
Linkerd 2.10(Step by Step)—获取每条路由指标
113 0
|
存储 Kubernetes API
Linkerd 2.10(Step by Step)—安装多集群组件
Linkerd 2.10(Step by Step)—安装多集群组件
177 0
|
Kubernetes 网络协议 Go
Linkerd 2.10(Step by Step)—调试 502s
Linkerd 2.10(Step by Step)—调试 502s
103 0
Linkerd 2.10(Step by Step)—修改代理日志级别
Linkerd 2.10(Step by Step)—修改代理日志级别
178 0
|
Kubernetes Perl 容器
Linkerd 2.10(Step by Step)—优雅的 Pod 关闭
Linkerd 2.10(Step by Step)—优雅的 Pod 关闭
174 0