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

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

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

Linkerd 2.10 系列

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

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

按照设计,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 扩展的命名空间):

代码语言:javascript
复制
- 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 扩展的命名空间):

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

代码语言:javascript
复制
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 来检索所有指标:

代码语言:javascript
复制
curl http://prometheus.linkerd-viz.svc.cluster.local:9090/api/v1/query?query=request_total

直接从 Linkerd 代理收集数据

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

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

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

然后:

代码语言:javascript
复制
curl localhost:4191/metrics

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linkerd 2.10 系列
  • 使用 Prometheus 联邦(federation) API
  • 使用 Prometheus 集成
  • 通过 Prometheus 的 API 提取数据
  • 直接从 Linkerd 代理收集数据
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档