减少一个Pod在k8s上的Prometheus刮擦间隔

时间:2019-10-02 10:30:36

标签: kubernetes prometheus

我们在k8s上的全局Prometheus刮擦间隔为60s,但我希望一个应用程序具有300s刮擦间隔。

我将以下内容附加到自己的广告连播中,以便取消指标。

prometheus.io/scrape: 'true'
prometheus.io/port: '{{ .Values.prometheus.port }}'
prometheus.io/path: '{{ .Values.prometheus.path }}'

现在,我想专门降低此应用程序的运行频率,并通过

进行测试
prometheus.io/interval: '300s'

但是它不起作用。我认为这需要relabel或其他建议吗? https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml#L251

2 个答案:

答案 0 :(得分:1)

我想补充一些细节。如果您使用正式的Prometheus Helm图表,则应在您的values-prometheus.yaml文件中:

# extra scraping configs
# | is required, because extraScrapeConfigs is expected to be a string
extraScrapeConfigs: |
  - job_name: 'kubernetes-service-endpoints-scrape-every-2s'

    scrape_interval: 2s

    kubernetes_sd_configs:
      - role: endpoints

    relabel_configs:
      #Custom
      - source_labels: [__meta_kubernetes_service_annotation_example_com_scrape_every_2s]
        action: keep
        regex: true

      # Boilerplate
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
        action: replace
        target_label: __scheme__
        regex: (https?)
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
        action: replace
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
        action: replace
        target_label: __address__
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:$2
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: kubernetes_namespace
      - source_labels: [__meta_kubernetes_service_name]
        action: replace
        target_label: kubernetes_name
      - source_labels: [__meta_kubernetes_pod_node_name]
        action: replace
        target_label: kubernetes_node

要升级现有(默认)安装,请执行以下操作:

helm upgrade prometheus --values values-prometheus.yaml stable/prometheus

现在可以在服务或窗格上添加这些注释:

prometheus.io/path: /metrics
prometheus.io/port: "9090"
example.com/scrape_every_2s: "true"

删除原始的prometheus.io/scrape: "true",因为否则您的服务将显示为两个单独的Prometheus目标,这可能不是您想要的。

答案 1 :(得分:0)

在Prometheus中,您可以全局设置scrape_interval,更具体地说,可以每个作业设置。为每个作业定义的值将覆盖全局作业。与this示例进行比较。

有关更多详细信息,请参阅官方的Prometheus documentation