Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 例項
Linkerd 2.10 系列
- 快速上手 Linkerd v2 Service Mesh(服務網格)
- 騰訊雲 K8S 叢集實戰 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 應用
- 詳細瞭解 Linkerd 2.10 基礎功能,一起步入 Service Mesh 微服務架構時代
- Linkerd 2.10(Step by Step)—1. 將您的服務新增到 Linkerd
- Linkerd 2.10(Step by Step)—2. 自動化的金絲雀釋出
- Linkerd 2.10(Step by Step)—3. 自動輪換控制平面 TLS 與 Webhook TLS 憑證
Linkerd 2.10 中文手冊持續修正更新中:
儘管 linkerd-viz
擴充套件帶有自己的 Prometheus
例項,
但在某些情況下,由於各種原因使用外部例項更有意義。
請注意,此方法要求您在 Prometheus
配置中手動新增和維護額外的抓取配置。
本教程展示瞭如何配置外部 Prometheus
例項,
以使用者和 Linkerd
控制平面元件(如 web
等)均
可使用的格式抓取控制平面和代理的指標。
這裡有兩個重要的點需要解決。
- 配置外部
Prometheus
例項以獲取Linkerd
指標。 - 配置
linkerd-viz
Prometheus
。
Prometheus 抓取配置
以下抓取配置必須應用於外部 Prometheus
例項。
下面的抓取配置是 linkerd-prometheus
抓取配置的一個子集。
在應用之前,重要的是將模板值(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] action: replace 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] action: replace 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] action: replace target_label: namespace - source_labels: [__meta_kubernetes_pod_name] action: replace 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] action: replace 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_(.+)
內建 prometheus
的執行配置可以作為參考。
kubectl -n linkerd-viz get configmap prometheus-config -o yaml
Linkerd-Viz 擴充套件配置
Linkerd
的視覺化擴充套件元件(如 metrics-api
等)依賴
於 Prometheus
例項來為儀表板和 CLI
提供支援。
prometheusUrl
欄位為您提供了一個位置,
所有這些元件都可以通過該位置配置為外部 Prometheus URL
。
這可以通過 CLI
和 Helm
實現。
CLI
這可以通過將具有上述欄位的檔案傳遞給 values
標誌來完成,
該標誌可通過 linkerd viz install
命令獲得。
prometheusUrl: existing-prometheus.xyz:9090
一旦應用,此配置在安裝中不會持久化(persistent
)。
在重新安裝、升級等過程中,使用者必須再次傳遞相同的資訊。
當使用外部 Prometheus
並配置 prometheusUrl
欄位時,
Linkerd
的 Prometheus
仍將包含在安裝中。
如果您想禁用它,請確保同時包含以下配置:
prometheus:
enabled: false
Helm
使用 Helm 時,可以通過 values.yaml
應用相同的配置。
應用後,Helm 會確保配置在升級過程中保持不變。
我是為少
微信:uuhells123
公眾號:黑客下午茶
加我微信(互相學習交流),關注公眾號(獲取更多學習資料~)