zoukankan      html  css  js  c++  java
  • Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 实例

    Linkerd 2.10 系列

    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
    这可以通过 CLIHelm 实现。

    CLI

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

    prometheusUrl: existing-prometheus.xyz:9090
    

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

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

    prometheus:
      enabled: false
    

    Helm

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

    我是为少
    微信:uuhells123
    公众号:黑客下午茶
    加我微信(互相学习交流),关注公众号(获取更多学习资料~)
    
  • 相关阅读:
    STM32 Cubemx 输出可调频率与占空比的PWM
    程序员必知的十大基础实用算法及其讲解
    [51单片机]18B20驱动函数
    《嵌入式怎么学?新人十问及解答》
    Google Chrome快捷键大全
    SSD、高级格式化硬盘,4K,分区,对齐,Ghost能不能用的解释用SSD的都可以看看
    资源下载
    Nexus Root Toolkit教程——刷机
    校园卡植入手机教程
    基于Visual c++ 2012的php扩展开发
  • 原文地址:https://www.cnblogs.com/hacker-linner/p/14888803.html
Copyright © 2011-2022 走看看