Prometheus 收集器指标集

编辑

Prometheus 的 collector 指标集从 Prometheus 导出器 采集数据。

从 Prometheus 导出器采集数据

编辑

要从 Prometheus 导出器采集指标,请将其配置到 hosts 字段中。从中检索指标的路径(默认情况下为 /metrics)可以通过 metrics_path 配置。

- module: prometheus
  period: 10s
  hosts: ["node:9100"]
  metrics_path: /metrics

  #username: "user"
  #password: "secret"

  # This can be used for service account based authorization:
  #bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  #ssl.certificate_authorities:
  #  - /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt

直方图和类型

编辑

此功能处于 Beta 阶段,可能会发生变化。其设计和代码不如正式 GA 功能成熟,并且按原样提供,不提供任何担保。Beta 功能不受正式 GA 功能的支持 SLA 约束。

metricbeat.modules:
- module: prometheus
  period: 10s
  hosts: ["localhost:9090"]
  use_types: true
  rate_counters: false

use_types 参数(默认值:false)启用指标存储的不同布局,利用 Elasticsearch 类型,包括 直方图

rate_counters 参数(默认值:false)启用从 Prometheus 计数器计算速率。启用后,Metricbeat 会存储自上次收集以来计数器的增量。此指标应使某些聚合更容易且性能更好。此参数只能与 use_types 结合使用。

当启用 use_typesrate_counters 时,指标将按以下方式存储

{
    "prometheus": {
        "labels": {
            "instance": "172.27.0.2:9090",
            "job": "prometheus"
        },
        "prometheus_target_interval_length_seconds_count": {
            "counter": 1,
            "rate": 0
        },
        "prometheus_target_interval_length_seconds_sum": {
            "counter": 15.000401344,
            "rate": 0
        }
        "prometheus_tsdb_compaction_chunk_range_seconds_bucket": {
            "histogram": {
                "values": [50, 300, 1000, 4000, 16000],
                "counts": [10, 2, 34, 7]
            }
        }
    },
}

从 Prometheus 服务器采集所有指标

编辑

根据您的规模,此方法可能不适用。我们建议为此使用 remote_write 指标集,并使 Prometheus 将指标推送到 Metricbeat。

此模块可以通过使用 联合 API 采集存储在 Prometheus 服务器中的所有指标。通过将此配置指向 Prometheus 服务器

metricbeat.modules:
- module: prometheus
  period: 10s
  hosts: ["localhost:9090"]
  metrics_path: '/federate'
  query:
    'match[]': '{__name__!=""}'

联合 API 将所有指标作为未类型化返回,因此即使在启用 use_typesrate_counters 参数的情况下,也不会从 Prometheus 计数器计算速率指标。要获取计算出的速率指标,应改用 remote_write 指标集。

过滤指标

编辑

为了过滤指标,可以使用 metrics_filters.include metrics_filters.exclude 设置

- module: prometheus
  period: 10s
  hosts: ["localhost:9090"]
  metrics_path: /metrics
  metrics_filters:
    include: ["node_filesystem_*"]
    exclude: ["node_filesystem_device_*"]

上面的配置将仅包含与 node_filesystem_* 模式匹配且与 node_filesystem_device_* 不匹配的指标。

要仅保留特定指标,请为每个指标的正则表达式的开头和结尾添加锚点

  • 脱字符 ^ 匹配文本或行的开头,
  • 美元符号 $ 匹配文本的结尾。
- module: prometheus
  period: 10s
  hosts: ["localhost:9090"]
  metrics_path: /metrics
  metrics_filters:
    include: ["^node_network_net_dev_group$", "^node_network_up$"]

这是一个默认指标集。如果主机模块未配置,则默认启用此指标集。

字段

有关指标集中的每个字段的说明,请参阅 导出字段 部分。

以下是由此指标集生成的示例文档

{
    "@timestamp": "2019-03-01T08:05:34.853Z",
    "event": {
        "dataset": "prometheus.collector",
        "duration": 115000,
        "module": "prometheus"
    },
    "metrics_count": 2,
    "metricset": {
        "name": "collector",
        "period": 10000
    },
    "prometheus": {
        "labels": {
            "job": "prometheus",
            "listener_name": "http"
        },
        "metrics": {
            "net_conntrack_listener_conn_accepted_total": 3,
            "net_conntrack_listener_conn_closed_total": 0
        }
    },
    "service": {
        "address": "127.0.0.1:55555",
        "type": "prometheus"
    }
}