You are viewing docs on Elastic's new documentation system, currently in technical preview. For all other Elastic docs, visit

Prometheus Input

Collects metrics from Prometheus exporter.

Beta feature

This functionality is in beta and is subject to change. The design and code is less mature than official generally available features and is being provided as-is with no warranties. Beta features are not subject to the support service level agreement of official generally available features.

What is an Elastic integration?

This integration is powered by Elastic Agent. Elastic Agent is a single, unified way to add monitoring for logs, metrics, and other types of data to a host. It can also protect hosts from security threats, query data from operating systems, forward data from remote services or hardware, and more. Refer to our documentation for a detailed comparison between Beats and Elastic Agent.

Prefer to use Beats for this use case? See Filebeat modules for logs or Metricbeat modules for metrics.

This input package can collect metrics from Prometheus Exporters (Collectors). It gives users the flexibility to add custom mappings and ingest pipelines.


Scraping from a Prometheus exporter

To scrape metrics from a Prometheus exporter, configure the hosts setting to it. The path to retrieve the metrics from (/metrics by default) is appended to the hostname as below:

Host Configuration Format: http[s]://<hostname>:<port>/<metrics_path> Example Host Configuration: http://localhost:9090/metrics

Histograms and types

Use Types parameter (default: true) enables a different layout for metrics storage, leveraging Elasticsearch types, including histograms

Rate Counters parameter (default: true) enables calculating a rate out of Prometheus counters. When enabled, integration stores the counter increment since the last collection. This metric provides better aggregation. This parameter can only be enabled in combination with Use Types.

When Use Types and Rate Counters are enabled, metrics are stored like this:

    "prometheus": {
        "labels": {
            "instance": "",
            "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": {
            "histogram": {
                "values": [50, 300, 1000, 4000, 16000],
                "counts": [10, 2, 34, 7]

Filtering metrics

In order to filter out/in metrics one can make use of Metrics Filters Include, Metrics Filters Exclude settings:

Metrics Filters Include: ["node_filesystem_*"]
Metrics Filters Exclude: ["node_filesystem_device_*"]

The configuration above will include only metrics that match node_filesystem_* pattern and do not match node_filesystem_device_*.

To keep only specific metrics, anchor the start and the end of the regexp of each metric:

  • the caret ^ matches the beginning of a text
  • the dollar $ matches the end of a text
Metrics Filters Include: ["^node_network_net_dev_group$", "^node_network_up$"]

Datastream Dataset Name

The users of the Prometheus Input Package have the option of adding their own dataset name, to which the events get added. Prometheus Metrics from different services can be collected by adding multiple instances of Input package. The metrics can be filtered on the basis of dataset name.


Enhancement View pull request
Add system test cases
Bug fix View pull request
Fix the typos in package
Bug fix View pull request
Update the url's in README
Enhancement View pull request
Rename ownership from obs-service-integrations to obs-infraobs-integrations
Enhancement View pull request
Add base fields mappings
Enhancement View pull request
Initial draft of the Prometheus Input Package