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

Linkerd 2.10 系列

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

按照设计,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)。

我是为少
微信:uuhells123
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享