---
type: api
title: Get statistics for a pipeline
description: Get performance metrics and plugin details for a pipeline.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/logstash/v9/operation/operation-nodestatspipeline
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/logstash/v9/operation/operation-nodestatspipeline
products:
  - Logstash
---

# Get statistics for a pipeline

- Server: `/`

## Paths

- `GET` `/_node/stats/pipelines/{pipeline_name}`

- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/logstash/v9/authentication#basicauth)

#### Path Parameters

- `pipeline_name` (string)
  The name of the pipeline to retrieve information for.

## Description

Get performance metrics and plugin details for a pipeline.

## Query String Parameters

- `pretty` (boolean)
  If you append `?pretty=true` to the request, the JSON returned will be pretty formatted. Use it for debugging only!

## Response

A JSON object containing a single pipeline statistics.

`application/json`

- `pipelines` (map string to EventsStats)
  A map where each key is a user-defined pipeline name, and the value contains the metrics for that pipeline.
  Map values ({} EventsStats)
  - `events` (object)
    - `in` (integer)
    - `filtered` (integer)
    - `out` (integer)
    - `duration_in_millis` (integer)
    - `queue_push_duration_in_millis` (integer)
  - `flow` (union oneOf)
    - **PipelineMQFlowStats**
      - `input_throughput` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of events being pushed into the pipeline(s) queue(s) relative to wall-clock time (`events.in` / second). It includes events that are blocked by the queue and have not yet been accepted.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `filter_throughput` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of events flowing through the filter phase of the pipeline(s) relative to wall-clock time (`events.filtered` / second).
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `output_throughput` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of events flowing through the output phase of the pipeline(s) relative to wall-clock time (`events.out` / second).
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `queue_backpressure` ({} FlowWindows)
        This is a unitless metric representing the cumulative time spent by all inputs blocked pushing events into their pipeline’s queue, relative to wall-clock time (queue_push_duration_in_millis / millisecond). It is typically most useful when looking at the stats for an individual pipeline.

While a "zero" value indicates no back-pressure to the queue, the magnitude of this metric is highly dependent on the shape of the pipelines and their inputs. It cannot be used to compare one pipeline to another or even one process to itself if the quantity or shape of its pipelines changes. A pipeline with only one single-threaded input may contribute up to 1.00, a pipeline whose inputs have hundreds of inbound connections may contribute much higher numbers to this combined value.

Additionally, some amount of back-pressure is both normal and expected for pipelines that are pulling data, as this back-pressure allows them to slow down and pull data at a rate its downstream pipeline can tolerate.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `worker_concurrency` ({} FlowWindows)
        This is a unitless metric representing the cumulative time spent by all workers relative to wall-clock time (duration_in_millis / millisecond).

A pipeline is considered "saturated" when its worker_concurrency flow metric approaches its available pipeline.workers, because it indicates that all of its available workers are being kept busy. Tuning a saturated pipeline to have more workers can often work to increase that pipeline’s throughput and decrease back-pressure to its queue, unless the pipeline is experiencing back-pressure from its outputs.

A process is also considered "saturated" when its top-level worker_concurrency flow metric approaches the cumulative pipeline.workers across all pipelines, and similarly can be addressed by tuning the individual pipelines that are saturated.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `worker_utilization` ({} FlowWindows)
        This is a unitless metric that indicates the percentage of available worker time being used by this individual plugin (duration / (uptime * `pipeline.workers`). It is useful for identifying which plugins in a pipeline are using the available worker resources.

A pipeline is considered "saturated" when `worker_utilization` approaches 100, because it indicates that all of its workers are being kept busy. This is typically an indication of either downstream back-pressure or insufficient resources allocated to the pipeline. Tuning a saturated pipeline to have more workers can often work to increase that pipeline’s throughput and decrease back-pressure to its queue, unless the pipeline is experiencing back-pressure from its outputs.

A pipeline is considered "starved" when `worker_utilization` approaches 0, because it indicates that none of its workers are being kept busy. This is typically an indication that the inputs are not receiving or retrieving enough volume to keep the pipeline workers busy. Tuning a starved pipeline to have fewer workers can help it to consume less memory and CPU, freeing up resources for other pipelines.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
    - **PipelinePQFlowStats**
      - `input_throughput` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of events being pushed into the pipeline(s) queue(s) relative to wall-clock time (`events.in` / second). It includes events that are blocked by the queue and have not yet been accepted.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `filter_throughput` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of events flowing through the filter phase of the pipeline(s) relative to wall-clock time (`events.filtered` / second).
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `output_throughput` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of events flowing through the output phase of the pipeline(s) relative to wall-clock time (`events.out` / second).
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `queue_backpressure` ({} FlowWindows)
        This is a unitless metric representing the cumulative time spent by all inputs blocked pushing events into their pipeline’s queue, relative to wall-clock time (queue_push_duration_in_millis / millisecond). It is typically most useful when looking at the stats for an individual pipeline.

While a "zero" value indicates no back-pressure to the queue, the magnitude of this metric is highly dependent on the shape of the pipelines and their inputs. It cannot be used to compare one pipeline to another or even one process to itself if the quantity or shape of its pipelines changes. A pipeline with only one single-threaded input may contribute up to 1.00, a pipeline whose inputs have hundreds of inbound connections may contribute much higher numbers to this combined value.

Additionally, some amount of back-pressure is both normal and expected for pipelines that are pulling data, as this back-pressure allows them to slow down and pull data at a rate its downstream pipeline can tolerate.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `worker_concurrency` ({} FlowWindows)
        This is a unitless metric representing the cumulative time spent by all workers relative to wall-clock time (duration_in_millis / millisecond).

A pipeline is considered "saturated" when its worker_concurrency flow metric approaches its available pipeline.workers, because it indicates that all of its available workers are being kept busy. Tuning a saturated pipeline to have more workers can often work to increase that pipeline’s throughput and decrease back-pressure to its queue, unless the pipeline is experiencing back-pressure from its outputs.

A process is also considered "saturated" when its top-level worker_concurrency flow metric approaches the cumulative pipeline.workers across all pipelines, and similarly can be addressed by tuning the individual pipelines that are saturated.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `worker_utilization` ({} FlowWindows)
        This is a unitless metric that indicates the percentage of available worker time being used by this individual plugin (duration / (uptime * `pipeline.workers`). It is useful for identifying which plugins in a pipeline are using the available worker resources.

A pipeline is considered "saturated" when `worker_utilization` approaches 100, because it indicates that all of its workers are being kept busy. This is typically an indication of either downstream back-pressure or insufficient resources allocated to the pipeline. Tuning a saturated pipeline to have more workers can often work to increase that pipeline’s throughput and decrease back-pressure to its queue, unless the pipeline is experiencing back-pressure from its outputs.

A pipeline is considered "starved" when `worker_utilization` approaches 0, because it indicates that none of its workers are being kept busy. This is typically an indication that the inputs are not receiving or retrieving enough volume to keep the pipeline workers busy. Tuning a starved pipeline to have fewer workers can help it to consume less memory and CPU, freeing up resources for other pipelines.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `queue_persisted_growth_bytes` ({} FlowWindows)
        This metric is expressed in bytes-per-second, and is the rate of change of the size of the persistent queue on disk, relative to wall-clock time (`queue.queue_size_in_bytes` / second). A positive number indicates that the queue size-on-disk is growing, and a negative number indicates that the queue is shrinking.

NOTE: The size of a PQ on disk includes both unacknowledged events and previously-acknowledged events from pages that contain one or more unprocessed events. This means it grows gradually as individual events are added, but shrinks in large chunks each time a whole page of processed events is reclaimed (read more: [PQ disk garbage collection](https://www.elastic.co/guide/en/logstash/current/persistent-queues.html#garbage-collection)).
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
      - `queue_persisted_growth_events` ({} FlowWindows)
        This metric is expressed in events-per-second, and is the rate of change of the number of unacknowledged events in the queue, relative to wall-clock time (`queue.events_count` / second). A positive number indicates that the queue’s event-count is growing, and a negative number indicates that the queue is shrinking.
        - `current` (union number | enum)
          The most recent ~10s.
          Values: `Infinity`
        - `last_1_minute` (union number | enum)
          Values: `Infinity`
        - `last_5_minutes` (union number | enum)
          Values: `Infinity`
        - `last_15_minutes` (union number | enum)
          Values: `Infinity`
        - `last_1_hour` (union number | enum)
          Values: `Infinity`
        - `last_24_hours` (union number | enum)
          Values: `Infinity`
        - `lifetime` (union number | enum)
          The lifetime of the relevant pipeline or process.
          Values: `Infinity`
  - `plugins` (object)
    - `inputs` ([] InputPluginStats)
      - `id` (string)
      - `name` (string)
      - `flow` ({} ThroughputStats)
        - `throughput` ({} FlowWindows)
          This metric is expressed in events-per-second, and is the rate of events this input plugin is pushing into the pipeline’s queue relative to wall-clock time (`events.in` / second). It includes events that are blocked by the queue and have not yet been accepted.
          - `current` (union number | enum)
            The most recent ~10s.
            Values: `Infinity`
          - `last_1_minute` (union number | enum)
            Values: `Infinity`
          - `last_5_minutes` (union number | enum)
            Values: `Infinity`
          - `last_15_minutes` (union number | enum)
            Values: `Infinity`
          - `last_1_hour` (union number | enum)
            Values: `Infinity`
          - `last_24_hours` (union number | enum)
            Values: `Infinity`
          - `lifetime` (union number | enum)
            The lifetime of the relevant pipeline or process.
            Values: `Infinity`
      - `events` ({} InputPluginEventsStats)
        - `out` (integer)
        - `queue_push_duration_in_millis` (integer)
    - `codecs` ([] CodecPluginStats)
      - `id` (string)
      - `name` (string)
      - `decode` (object)
        - `duration_in_millis` (integer)
        - `writes_in` (integer)
        - `out` (integer)
      - `encode` (object)
        - `duration_in_millis` (integer)
        - `writes_in` (integer)
    - `filters` ([] FilterOutputPluginStats)
      - `id` (string)
      - `name` (string)
      - `flow` ({} WorkerStats)
        - `worker_utilization` ({} FlowWindows)
          This is a unitless metric that indicates the percentage of available worker time being used by this individual plugin (`duration` / (`uptime` * `pipeline.workers`). It is useful for identifying which plugins in a pipeline are using the available worker resources.
          - `current` (union number | enum)
            The most recent ~10s.
            Values: `Infinity`
          - `last_1_minute` (union number | enum)
            Values: `Infinity`
          - `last_5_minutes` (union number | enum)
            Values: `Infinity`
          - `last_15_minutes` (union number | enum)
            Values: `Infinity`
          - `last_1_hour` (union number | enum)
            Values: `Infinity`
          - `last_24_hours` (union number | enum)
            Values: `Infinity`
          - `lifetime` (union number | enum)
            The lifetime of the relevant pipeline or process.
            Values: `Infinity`
        - `worker_millis_per_event` ({} FlowWindows)
          This metric is expressed in worker-millis-spent-per-event (`duration_in_millis` / `events.in`) with higher scores indicating more resources spent per event. It is especially useful for identifying issues with plugins that operate on a small subset of events. An "Infinity" value for a given flow window indicates that worker millis have been spent without any events completing processing; this can indicate a plugin that is either stuck or handling only empty batches.
          - `current` (union number | enum)
            The most recent ~10s.
            Values: `Infinity`
          - `last_1_minute` (union number | enum)
            Values: `Infinity`
          - `last_5_minutes` (union number | enum)
            Values: `Infinity`
          - `last_15_minutes` (union number | enum)
            Values: `Infinity`
          - `last_1_hour` (union number | enum)
            Values: `Infinity`
          - `last_24_hours` (union number | enum)
            Values: `Infinity`
          - `lifetime` (union number | enum)
            The lifetime of the relevant pipeline or process.
            Values: `Infinity`
      - `events` ({} FilterOutputPluginEventsStats)
        - `in` (integer)
        - `out` (integer)
        - `duration_in_millis` (integer)
    - `outputs` ([] FilterOutputPluginStats)
      Same fields as `filters` in `plugins`
  - `reloads` (object)
    - `last_error` (string) — nullable
    - `successes` (integer)
    - `last_success_timestamp` (string) — nullable
    - `last_failure_timestamp` (string) — nullable
    - `failures` (integer)
  - `queue` (union oneOf)
    - **type: persisted** (`type: persisted`)
      The metrics of persisted queue.
      - `type` (enum)
        Values: `persisted`
      - `capacity` (object)
        - `max_unread_events` (integer)
        - `page_capacity_in_bytes` (integer)
        - `max_queue_size_in_bytes` (integer)
        - `queue_size_in_bytes` (integer)
      - `data` (object)
        - `path` (string)
        - `free_space_in_bytes` (integer)
        - `storage_type` (string)
      - `events` (integer)
      - `events_count` (integer)
      - `queue_size_in_bytes` (integer)
      - `max_queue_size_in_bytes` (integer)
      - `compression` (object)
        - `encode` (object)
          - `goal` (enum)
            Values: `speed`, `balanced`, `size`
          - `ratio` (object)
            the ratio of event size in bytes to its representation on disk
            - `lifetime` (union number | enum)
              Values: `Infinity`, `NaN`, `-Infinity`
          - `spend` (object)
            the fraction of wall-clock time spent encoding events
            - `lifetime` (union number | enum)
              Values: `Infinity`, `NaN`, `-Infinity`
        - `decode` (object)
          - `ratio` (object)
            the ratio of event representation on disk to event size
            - `lifetime` (union number | enum)
              Values: `Infinity`, `NaN`, `-Infinity`
          - `spend` (object)
            the fraction of wall-clock time spent decoding events
            - `lifetime` (union number | enum)
              Values: `Infinity`, `NaN`, `-Infinity`
    - **type: memory** (`type: memory`)
      The metrics of memory queue.
      - `type` (enum)
        Values: `memory`
      - `events_count` (integer)
      - `queue_size_in_bytes` (integer)
      - `max_queue_size_in_bytes` (integer)
  - `pipeline` (object)
    - `workers` (integer)
    - `batch_size` (integer)
    - `batch_delay` (integer)
  - `hash` (string)
    A unique hash identifier.
  - `ephemeral_id` (string)
    A temporary unique identifier for the instance.
## Code Examples

#### Console

```console
GET /_node/stats/pipelines/{pipeline_name}
```

#### curl

```curl
curl -X GET "/_node/stats/pipelines/{pipeline_name}"
```

## Response Examples

#### Pipeline with persisted queue

A pipeline with a persisted queue.

```json
{
  "pipelines": {
    "heartbeat-ruby-stdout": {
      "batch": {
        "event_count": {
          "current": 78,
          "average": {
            "lifetime": 115,
            "last_1_minute": 120,
            "last_5_minutes": 110,
            "last_15_minutes": 112
          },
          "p50": {
            "last_1_minute": 125,
            "last_5_minutes": 105,
            "last_15_minutes": 108
          },
          "p90": {
            "last_1_minute": 125,
            "last_5_minutes": 112,
            "last_15_minutes": 116
          }
        },
        "byte_size": {
          "current": 32767,
          "average": {
            "lifetime": 14820,
            "last_1_minute": 15234,
            "last_5_minutes": 14012,
            "last_15_minutes": 14567
          },
          "p50": {
            "lifetime": 14815,
            "last_1_minute": 15240,
            "last_5_minutes": 14030,
            "last_15_minutes": 14600
          },
          "p90": {
            "lifetime": 14825,
            "last_1_minute": 15300,
            "last_5_minutes": 14050,
            "last_15_minutes": 14630
          },
          "max": {
            "lifetime": 14830,
            "last_1_minute": 16000,
            "last_5_minutes": 14080,
            "last_15_minutes": 14670
          }
        }
      },
      "events": {
        "queue_push_duration_in_millis": 159,
        "in": 45,
        "duration_in_millis": 341,
        "filtered": 45,
        "out": 45
      },
      "flow": {
        "filter_throughput": {
          "current": 0,
          "last_1_minute": 0.01614,
          "last_5_minutes": 0.01627,
          "last_15_minutes": 0.01643,
          "lifetime": 0.0167
        },
        "queue_persisted_growth_bytes": {
          "current": 0,
          "last_1_minute": 4.068,
          "last_5_minutes": 4.101,
          "last_15_minutes": 4.14,
          "lifetime": 4.214
        },
        "queue_persisted_growth_events": {
          "current": 0,
          "last_1_minute": 0,
          "last_5_minutes": 0,
          "last_15_minutes": 0,
          "lifetime": 0
        },
        "queue_backpressure": {
          "current": 0,
          "last_1_minute": 1.614E-05,
          "last_5_minutes": 2.278E-05,
          "last_15_minutes": 4.272E-05,
          "lifetime": 5.901E-05
        },
        "output_throughput": {
          "current": 0,
          "last_1_minute": 0.01614,
          "last_5_minutes": 0.01627,
          "last_15_minutes": 0.01643,
          "lifetime": 0.0167
        },
        "worker_utilization": {
          "current": 0,
          "last_1_minute": 0.0004036,
          "last_5_minutes": 0.0006239,
          "last_15_minutes": 0.0009858,
          "lifetime": 0.001055
        },
        "worker_concurrency": {
          "current": 0,
          "last_1_minute": 4.843E-05,
          "last_5_minutes": 7.486E-05,
          "last_15_minutes": 0.0001183,
          "lifetime": 0.0001266
        },
        "input_throughput": {
          "current": 0,
          "last_1_minute": 0.01614,
          "last_5_minutes": 0.01627,
          "last_15_minutes": 0.01643,
          "lifetime": 0.0167
        }
      },
      "plugins": {
        "inputs": [
          {
            "id": "c9ca46e359d73146590ca8af40092342afa922f3cbf07adc4b5009e346cb19f7",
            "events": {
              "queue_push_duration_in_millis": 159,
              "out": 45
            },
            "name": "heartbeat",
            "flow": {
              "throughput": {
                "current": 0,
                "last_1_minute": 0.01614,
                "last_5_minutes": 0.01627,
                "last_15_minutes": 0.01643,
                "lifetime": 0.0167
              }
            }
          }
        ],
        "codecs": [
          {
            "id": "plain_b0090202-daac-428e-8355-18c35a0826cb",
            "decode": {
              "writes_in": 0,
              "duration_in_millis": 0,
              "out": 0
            },
            "name": "plain",
            "encode": {
              "writes_in": 0,
              "duration_in_millis": 0
            }
          },
          {
            "id": "6bff4bc6-3a8c-494c-aa65-d16e1eb09578",
            "name": "rubydebug"
          }
        ],
        "filters": [
          {
            "id": "585fa932a4fd506055ead07ee5ebcb3033c27c82ba90cbee73d6ac7e9357333a",
            "events": {
              "in": 45,
              "duration_in_millis": 86,
              "out": 45
            },
            "name": "ruby",
            "flow": {
              "worker_utilization": {
                "current": 0,
                "last_1_minute": 0.0001345,
                "last_5_minutes": 0.0001627,
                "last_15_minutes": 0.0002191,
                "lifetime": 0.000266
              },
              "worker_millis_per_event": {
                "last_1_minute": 1,
                "last_5_minutes": 1.2,
                "last_15_minutes": 1.6,
                "lifetime": 1.911
              }
            }
          }
        ],
        "outputs": [
          {
            "id": "c4f801c8f170b4cb0679f704413773acd5f291929f42302d0a56361400c3741b",
            "events": {
              "in": 45,
              "duration_in_millis": 216,
              "out": 45
            },
            "name": "stdout",
            "flow": {
              "worker_utilization": {
                "current": 0,
                "last_1_minute": 0.000269,
                "last_5_minutes": 0.000434,
                "last_15_minutes": 0.0006663,
                "lifetime": 0.000668
              },
              "worker_millis_per_event": {
                "last_1_minute": 2,
                "last_5_minutes": 3.2,
                "last_15_minutes": 4.867,
                "lifetime": 4.8
              }
            }
          }
        ]
      },
      "reloads": {
        "last_failure_timestamp": "",
        "successes": 0,
        "failures": 0,
        "last_success_timestamp": "",
        "last_error": ""
      },
      "queue": {
        "events": 0,
        "capacity": {
          "max_queue_size_in_bytes": 1073741824,
          "max_unread_events": 0,
          "queue_size_in_bytes": 11341,
          "page_capacity_in_bytes": 67108864
        },
        "data": {
          "free_space_in_bytes": 60833390592,
          "path": "/path/to/logstash/data/queue/heartbeat-ruby-stdout",
          "storage_type": "apfs"
        },
        "type": "persisted",
        "events_count": 0,
        "queue_size_in_bytes": 11341,
        "max_queue_size_in_bytes": 1073741824
      },
      "pipeline": {
        "workers": 12,
        "batch_size": 125,
        "batch_delay": 50
      },
      "hash": "c11e0502ebf98956dffa371775fd1cb719f85f819ee166b770b3e982da1c999d",
      "ephemeral_id": "6a218b06-9655-4ddc-84e9-d5bfa51e5dc7"
    }
  }
}
```

#### Pipeline with memory queue

A pipeline with a memory queue.

```json
{
  "pipelines": {
    "heartbeat-ruby-stdout": {
      "events": {
        "duration_in_millis": 14,
        "filtered": 2,
        "in": 2,
        "queue_push_duration_in_millis": 0,
        "out": 2
      },
      "flow": {
        "input_throughput": {
          "current": 0.09877,
          "last_1_minute": 0.01661,
          "lifetime": 0.03094
        },
        "output_throughput": {
          "current": 0.09877,
          "last_1_minute": 0.01661,
          "lifetime": 0.03094
        },
        "worker_utilization": {
          "current": 0.002469,
          "last_1_minute": 0.001384,
          "lifetime": 0.001805
        },
        "filter_throughput": {
          "current": 0.09877,
          "last_1_minute": 0.01661,
          "lifetime": 0.03094
        },
        "worker_concurrency": {
          "current": 0.0002963,
          "last_1_minute": 0.0001661,
          "lifetime": 0.0002166
        },
        "queue_backpressure": {
          "current": 0,
          "last_1_minute": 0,
          "lifetime": 0
        }
      },
      "plugins": {
        "inputs": [
          {
            "id": "c9ca46e359d73146590ca8af40092342afa922f3cbf07adc4b5009e346cb19f7",
            "events": {
              "queue_push_duration_in_millis": 0,
              "out": 2
            },
            "name": "heartbeat",
            "flow": {
              "throughput": {
                "current": 0.09876,
                "last_1_minute": 0.01661,
                "lifetime": 0.03094
              }
            }
          }
        ],
        "codecs": [
          {
            "id": "8b2798ec-d828-445a-a5c3-b0ebe2ec142a",
            "name": "rubydebug"
          },
          {
            "id": "plain_dc12bcf8-1c2e-4f28-b55d-a82ab127d00a",
            "encode": {
              "duration_in_millis": 0,
              "writes_in": 0
            },
            "name": "plain",
            "decode": {
              "duration_in_millis": 0,
              "writes_in": 0,
              "out": 0
            }
          }
        ],
        "filters": [
          {
            "id": "585fa932a4fd506055ead07ee5ebcb3033c27c82ba90cbee73d6ac7e9357333a",
            "events": {
              "duration_in_millis": 4,
              "in": 2,
              "out": 2
            },
            "name": "ruby",
            "flow": {
              "worker_millis_per_event": {
                "current": 1,
                "last_1_minute": 4,
                "lifetime": 2
              },
              "worker_utilization": {
                "current": 0.000823,
                "last_1_minute": 0.0005537,
                "lifetime": 0.0005157
              }
            }
          }
        ],
        "outputs": [
          {
            "id": "c4f801c8f170b4cb0679f704413773acd5f291929f42302d0a56361400c3741b",
            "events": {
              "duration_in_millis": 7,
              "in": 2,
              "out": 2
            },
            "name": "stdout",
            "flow": {
              "worker_millis_per_event": {
                "current": 3,
                "last_1_minute": 4,
                "lifetime": 3.5
              },
              "worker_utilization": {
                "current": 0.002469,
                "last_1_minute": 0.0005537,
                "lifetime": 0.0009025
              }
            }
          }
        ]
      },
      "reloads": {
        "successes": 0,
        "last_failure_timestamp": "",
        "failures": 0,
        "last_success_timestamp": "",
        "last_error": ""
      },
      "queue": {
        "type": "memory",
        "events_count": 0,
        "queue_size_in_bytes": 0,
        "max_queue_size_in_bytes": 0
      },
      "pipeline": {
        "workers": 12,
        "batch_size": 125,
        "batch_delay": 50
      },
      "hash": "c11e0502ebf98956dffa371775fd1cb719f85f819ee166b770b3e982da1c999d",
      "ephemeral_id": "c91bff2b-c92b-45ac-8c74-04783f6cc1dd"
    }
  }
}
```

