searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Prometheus的服务发现机制与自定义服务发现方法

2024-10-10 02:06:24
63
0

1、Prometheus 服务发现简介

Prometheus 的服务发现机制可以在动态监控场景中,自动化配置、变更监控目标。Prometheus提供多种服务发现机制支持,例如从k8s、consul甚至http接口获取监控目标,而无需手动干预。在监控目标频繁变化的场景中,Prometheus的动态监控能力,提供了极大的便捷性和自动性,易于运维管理。

下面以云场景常见的k8s服务发现为例,讲解Prometheus的服务发现机制。代码块给出了一段k8s服务发现配置,服务发现的目标是k8s集群中的pod对象。并通过relabel_config功能,从k8s pod的元数据标签中,获取__meta_kubernetes_namespace、__meta_kubernetes_pod_name、__meta_kubernetes_pod_container_name等信息,自动对不同ns、pod、container的监控指标完成了标记。并通过__meta_kubernetes_pod_annotation_prometheus_io_path、__meta_kubernetes_pod_annotation_prometheus_io_port等元数据标签,自动获取了pod对象监控数据的采集地址。

通过Prometheus的服务发现机制,可以灵活获取监控对象的元数据标签、监控地址等信息,不仅可以自动完成监控对象的区分打标,还可以灵活获取监控对象的监控地址信息,提供了极大的便捷性和自动性,降低运维管理成本。

scrape_configs:
  - job_name: 'kubernetes-pods'
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_namespace]
        target_label: namespace
      - source_labels: [__meta_kubernetes_pod_name]
        target_label: pod
      - source_labels: [__meta_kubernetes_pod_container_name]
        target_label: container
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
        target_label: __address__
        regex: (.+);(.+)
        replacement: $1:$2

2、通过 http_sd_config 实现自定义服务发现

在不同业务场景中,有时需要更灵活、更符合业务场景的服务发现机制,这时可以通过http_sd_config实现自定义的服务发现机制。只需要按照Prometheus的服务发现规范,在http接口中暴露需要监控的目标对象,就可以接入Prometheus的服务发现机制,实现动态配置监控目标的需求。

下面给出一个接口示例。如下的http接口向Prometheus提供了2个监控目标。第一个对象有两个目标:10.0.0.1:9100和10.0.0.2:9100。第二个对象只有一个目标10.0.0.3:9100。每个监控目标有不同的标签,这些标签会用于标记和区分监控数据。

使用http_sd_config功能,可以按不同业务场景,灵活动态配置监控目标。

[
  {
    "targets": ["10.0.0.1:9100", "10.0.0.2:9100"],
    "labels": {
      "job": "node_exporter",
      "env": "production",
      "region": "us-west"
    }
  },
  {
    "targets": ["10.0.0.3:9100"],
    "labels": {
      "job": "node_exporter",
      "env": "staging",
      "region": "us-east"
    }
  }
]
0条评论
0 / 1000
董****薇
4文章数
0粉丝数
董****薇
4 文章 | 0 粉丝
原创

Prometheus的服务发现机制与自定义服务发现方法

2024-10-10 02:06:24
63
0

1、Prometheus 服务发现简介

Prometheus 的服务发现机制可以在动态监控场景中,自动化配置、变更监控目标。Prometheus提供多种服务发现机制支持,例如从k8s、consul甚至http接口获取监控目标,而无需手动干预。在监控目标频繁变化的场景中,Prometheus的动态监控能力,提供了极大的便捷性和自动性,易于运维管理。

下面以云场景常见的k8s服务发现为例,讲解Prometheus的服务发现机制。代码块给出了一段k8s服务发现配置,服务发现的目标是k8s集群中的pod对象。并通过relabel_config功能,从k8s pod的元数据标签中,获取__meta_kubernetes_namespace、__meta_kubernetes_pod_name、__meta_kubernetes_pod_container_name等信息,自动对不同ns、pod、container的监控指标完成了标记。并通过__meta_kubernetes_pod_annotation_prometheus_io_path、__meta_kubernetes_pod_annotation_prometheus_io_port等元数据标签,自动获取了pod对象监控数据的采集地址。

通过Prometheus的服务发现机制,可以灵活获取监控对象的元数据标签、监控地址等信息,不仅可以自动完成监控对象的区分打标,还可以灵活获取监控对象的监控地址信息,提供了极大的便捷性和自动性,降低运维管理成本。

scrape_configs:
  - job_name: 'kubernetes-pods'
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_namespace]
        target_label: namespace
      - source_labels: [__meta_kubernetes_pod_name]
        target_label: pod
      - source_labels: [__meta_kubernetes_pod_container_name]
        target_label: container
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
        target_label: __address__
        regex: (.+);(.+)
        replacement: $1:$2

2、通过 http_sd_config 实现自定义服务发现

在不同业务场景中,有时需要更灵活、更符合业务场景的服务发现机制,这时可以通过http_sd_config实现自定义的服务发现机制。只需要按照Prometheus的服务发现规范,在http接口中暴露需要监控的目标对象,就可以接入Prometheus的服务发现机制,实现动态配置监控目标的需求。

下面给出一个接口示例。如下的http接口向Prometheus提供了2个监控目标。第一个对象有两个目标:10.0.0.1:9100和10.0.0.2:9100。第二个对象只有一个目标10.0.0.3:9100。每个监控目标有不同的标签,这些标签会用于标记和区分监控数据。

使用http_sd_config功能,可以按不同业务场景,灵活动态配置监控目标。

[
  {
    "targets": ["10.0.0.1:9100", "10.0.0.2:9100"],
    "labels": {
      "job": "node_exporter",
      "env": "production",
      "region": "us-west"
    }
  },
  {
    "targets": ["10.0.0.3:9100"],
    "labels": {
      "job": "node_exporter",
      "env": "staging",
      "region": "us-east"
    }
  }
]
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0