Linkerd 2.10(Step by Step)(四) 如何配置外部 Prometheus 实例

网络 通信技术
本教程展示了如何配置外部 Prometheus 实例, 以用户和 Linkerd 控制平面组件(如 web 等)均 可使用的格式抓取控制平面和代理的指标。

[[406050]]

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

https://linkerd.hacker-linner.com

尽管 linkerd-viz 扩展带有自己的 Prometheus 实例, 但在某些情况下,由于各种原因使用外部实例更有意义。

请注意,此方法要求您在 Prometheus 配置中手动添加和维护额外的抓取配置。

本教程展示了如何配置外部 Prometheus 实例, 以用户和 Linkerd 控制平面组件(如 web 等)均 可使用的格式抓取控制平面和代理的指标。

这里有两个重要的点需要解决。

  • 配置外部 Prometheus 实例以获取 Linkerd 指标。
  • 配置 linkerd-viz 扩展以使用该 Prometheus。

Prometheus 抓取配置

以下抓取配置必须应用于外部 Prometheus 实例。

下面的抓取配置是 linkerd-prometheus 抓取配置的一个子集。

https://github.com/linkerd/linkerd2/blob/bc5bdeb834f571d92937fe5c2ead6bf88e37823a/viz/charts/linkerd-viz/templates/prometheus.yaml#L47-L151

在应用之前,重要的是将模板值(templated values)(存在于 {{}} 中)替 换为直接值(direct values),以使以下配置正常工作。

- job_name: 'linkerd-controller' 
   kubernetes_sd_configs: 
   - role: pod 
     namespaces: 
       names: 
       - '{{.Values.linkerdNamespace}}' 
       - '{{.Values.namespace}}' 
   relabel_configs: 
   - source_labels: 
     - __meta_kubernetes_pod_container_port_name 
     action: keep 
     regex: admin-http 
   - source_labels: [__meta_kubernetes_pod_container_name] 
     actionreplace 
     target_label: component 
 
 - job_name: 'linkerd-service-mirror' 
   kubernetes_sd_configs: 
   - role: pod 
   relabel_configs: 
   - source_labels: 
     - __meta_kubernetes_pod_label_linkerd_io_control_plane_component 
     - __meta_kubernetes_pod_container_port_name 
     action: keep 
     regex: linkerd-service-mirror;admin-http$ 
   - source_labels: [__meta_kubernetes_pod_container_name] 
     actionreplace 
     target_label: component 
 
 - job_name: 'linkerd-proxy' 
   kubernetes_sd_configs: 
   - role: pod 
   relabel_configs: 
   - source_labels: 
     - __meta_kubernetes_pod_container_name 
     - __meta_kubernetes_pod_container_port_name 
     - __meta_kubernetes_pod_label_linkerd_io_control_plane_ns 
     action: keep 
     regex: ^{{default .Values.proxyContainerName "linkerd-proxy" .Values.proxyContainerName}};linkerd-admin;{{.Values.linkerdNamespace}}$ 
   - source_labels: [__meta_kubernetes_namespace] 
     actionreplace 
     target_label: namespace 
   - source_labels: [__meta_kubernetes_pod_name] 
     actionreplace 
     target_label: pod 
   # special case k8s' "job" label, to not interfere with prometheus' "job" 
   # label 
   # __meta_kubernetes_pod_label_linkerd_io_proxy_job=foo => 
   # k8s_job=foo 
   - source_labels: [__meta_kubernetes_pod_label_linkerd_io_proxy_job] 
     actionreplace 
     target_label: k8s_job 
   # drop __meta_kubernetes_pod_label_linkerd_io_proxy_job 
   - action: labeldrop 
     regex: __meta_kubernetes_pod_label_linkerd_io_proxy_job 
   # __meta_kubernetes_pod_label_linkerd_io_proxy_deployment=foo => 
   # deployment=foo 
   - action: labelmap 
     regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+) 
   # drop all labels that we just made copies of in the previous labelmap 
   - action: labeldrop 
     regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+) 
   # __meta_kubernetes_pod_label_linkerd_io_foo=bar => 
   # foo=bar 
   - action: labelmap 
     regex: __meta_kubernetes_pod_label_linkerd_io_(.+) 
   # Copy all pod labels to tmp labels 
   - action: labelmap 
     regex: __meta_kubernetes_pod_label_(.+) 
     replacement: __tmp_pod_label_$1 
   # Take `linkerd_io_` prefixed labels and copy them without the prefix 
   - action: labelmap 
     regex: __tmp_pod_label_linkerd_io_(.+) 
     replacement:  __tmp_pod_label_$1 
   # Drop the `linkerd_io_` originals 
   - action: labeldrop 
     regex: __tmp_pod_label_linkerd_io_(.+) 
   # Copy tmp labels into real labels 
   - action: labelmap 
     regex: __tmp_pod_label_(.+) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.

内置 prometheus 的运行配置可以作为参考。

kubectl -n linkerd-viz  get configmap prometheus-config -o yaml 
  • 1.

Linkerd-Viz 扩展配置

Linkerd 的可视化扩展组件(如 metrics-api 等)依赖 于 Prometheus 实例来为仪表板和 CLI 提供支持。

prometheusUrl 字段为您提供了一个位置, 所有这些组件都可以通过该位置配置为外部 Prometheus URL。这可以通过 CLI 和 Helm 实现。

CLI

这可以通过将具有上述字段的文件传递给 values 标志来完成, 该标志可通过 linkerd viz install 命令获得。

prometheusUrl: existing-prometheus.xyz:9090 
  • 1.

一旦应用,此配置在安装中不会持久化(persistent)。在重新安装、升级等过程中,用户必须再次传递相同的信息。

当使用外部 Prometheus 并配置 prometheusUrl 字段时, Linkerd 的 Prometheus 仍将包含在安装中。如果您想禁用它,请确保同时包含以下配置:

prometheus: 
  enabled: false 
  • 1.
  • 2.

Helm

使用 Helm 时,可以通过 values.yaml 应用相同的配置。应用后,Helm 会确保配置在升级过程中保持不变。

 

责任编辑:姜华 来源: 黑客下午茶
相关推荐

2021-06-16 17:42:48

Linkerd 配置CPU

2021-06-22 06:24:57

Linkerd Ingress 流量网络技术

2021-06-17 06:20:43

Linkerd Kustomize网络技术

2021-06-22 06:41:38

Linkerd 安装多集群组件网络技术

2021-06-22 06:16:24

Linkerd books webapp

2021-06-17 14:29:39

Linkerd 分布式跟踪Linkerd 2.1

2021-06-15 05:45:56

Linkerd annotations网络技术

2021-06-24 07:20:21

Linked GitOps Argo CD

2021-06-15 05:52:33

Linkerd canary网络技术

2021-06-16 06:31:55

Linkerd 2.1Step by SteWebhook TLS

2021-06-29 13:09:07

服务配置文件

2011-04-19 14:02:09

SSAS

2010-09-08 09:41:03

私有云部署

2009-04-22 17:18:29

Vxworks驱动加载step by ste

2024-01-25 11:38:11

AI数据

2010-04-06 15:09:16

无线路由器安全配置

2010-08-04 14:30:25

2022-08-30 22:22:23

developerArchitectu

2023-01-06 13:48:21

自然语言推理算法

2023-06-19 09:16:41

CSSstep函数
点赞
收藏

51CTO技术栈公众号