logstash/docs/static/spec/openapi/logstash-api.yaml
2025-03-14 15:47:16 -04:00

2341 lines
No EOL
96 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

openapi: 3.1.0
info:
title: Logstash APIs
description: |
When you run Logstash, it automatically captures runtime metrics that you can use to monitor the health and performance of your Logstash deployment.
The metrics collected by Logstash include:
- Health report.
- Hot threads.
- Logstash node info, like pipeline settings, OS info, and JVM info.
- Node stats, like JVM stats, process stats, event-related stats, and pipeline runtime stats.
- Plugins info, including a list of installed plugins.
The APIs that retrieve these metrics are available by default, with no extra configuration needed.
## Documentation source and versions
This documentation is derived from the `main` branch of the [logstash](https://github.com/elastic/logstash) repository.
It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/).
version: '1.0'
x-doc-license:
name: Attribution-NonCommercial-NoDerivatives 4.0 International
url: https://creativecommons.org/licenses/by-nc-nd/4.0/
x-feedbackLink:
label: Feedback
url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+
servers:
- url: /
security:
- {} # Allows requests without authentication
- BasicAuth: [] # Allows requests with Basic Authentication
tags:
- name: health
x-displayName: Health report
# description:
# externalDocs:
# description:
# url:
- name: hot threads
x-displayName: Hot threads
# description:
# externalDocs:
# description:
# url:
- name: node info
x-displayName: Node info
description: |
Logstash node info, like pipeline settings, OS info, and JVM info.
# externalDocs:
# description:
# url:
- name: node stats
x-displayName: Node stats
description: |
Node stats, like JVM stats, process stats, event-related stats, and pipeline runtime stats.
# externalDocs:
# description:
# url:
- name: plugin info
x-displayName: Plugins info
description: |
Plugin info, including a list of installed plugins.
# externalDocs:
# description:
# url:
paths:
/_node/jvm:
get:
summary: Gets node-level JVM info
description: |
Show node-level JVM stats, such as the JVM process id, version, VM info, memory usage, and info about garbage collectors.
operationId: nodeInfoJVM
tags:
- node info
parameters:
- $ref: "#/components/parameters/pretty"
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
# - $ref: '#/components/schemas/Common'
# - $ref: '#/components/schemas/PipelineSettings'
- type: object
properties:
jvm:
type: object
properties:
pid:
type: integer
version:
type: string
vm_name:
type: string
vm_version:
type: string
vm_vendor:
type: string
start_time_in_millis:
type: integer
mem:
type: object
properties:
heap_init_in_bytes:
type: integer
heap_max_in_bytes:
type: integer
non_heap_init_in_bytes:
type: integer
non_heap_max_in_bytes:
type: integer
gc_collectors:
type: array
items:
type: string
example:
jvm:
pid: 84013
version: "21.0.4"
vm_name: "OpenJDK 64-Bit Server VM"
vm_version: "21.0.4"
vm_vendor: "Eclipse Adoptium"
start_time_in_millis: 1630980000000
mem:
heap_init_in_bytes: 1073741824
heap_max_in_bytes: 1073741824
non_heap_init_in_bytes: 2555904
non_heap_max_in_bytes: 0
gc_collectors:
- "G1 Young Generation"
- "G1 Concurrent GC"
- "G1 Old Generation"
/_node/os:
get:
summary: Get node-level OS info
description: |
Get the operating system (OS) name, architecture, version, and available processors.
operationId: nodeInfoOS
tags:
- node info
parameters:
- $ref: "#/components/parameters/pretty"
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
# - $ref: '#/components/schemas/Common'
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: '#/components/schemas/OSStats'
example:
os:
name: "Mac OS X"
arch: "aarch64"
version: "15.3.1"
available_processors: 12
/_node/pipelines:
get:
summary: Get settings for pipelines
description: |
Get information and settings for all pipelines.
operationId: nodeInfoPipelines
tags:
- node info
parameters:
- $ref: "#/components/parameters/pretty"
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
# - $ref: '#/components/schemas/Common'
# - $ref: '#/components/schemas/PipelineSettings'
- type: object
properties:
pipelines:
type: object
additionalProperties:
$ref: '#/components/schemas/NodeInfoPipeline'
example:
pipelines:
aggregation-pipeline:
workers: 1
batch_size: 125
batch_delay: 50
config_reload_automatic: false
config_reload_interval: 3
dead_letter_queue_enabled: false
ingestion-pipeline:
workers: 8
batch_size: 125
batch_delay: 5
config_reload_automatic: false
config_reload_interval: 3
dead_letter_queue_enabled: false
/_node/pipelines/{pipeline_name}:
get:
summary: Get settings for a pipeline
description: Get information and settings for all pipelines.
operationId: nodeInfoPipeline
tags:
- node info
parameters:
- name: pipeline_name
in: path
required: true
schema:
type: string
description: The name of the pipeline to retrieve information for.
- $ref: "#/components/parameters/pretty"
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
# - $ref: '#/components/schemas/Common'
# - $ref: '#/components/schemas/PipelineSettings'
- type: object
properties:
pipelines:
type: object
additionalProperties:
$ref: '#/components/schemas/NodeInfoPipeline'
example:
pipelines:
aggregation-pipeline:
workers: 1
batch_size: 125
batch_delay: 50
config_reload_automatic: false
config_reload_interval: 3
dead_letter_queue_enabled: false
/_node/plugins:
get:
summary: Get plugin info
description: >
Get information about all Logstash plugins that are currently installed.
This API returns the same output you get by running the `bin/logstash-plugin list --verbose` command.
operationId: nodePlugins
tags:
- plugin info
parameters:
- $ref: "#/components/parameters/pretty"
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
# - $ref: '#/components/schemas/Common'
# - $ref: '#/components/schemas/PipelineSettings'
- type: object
properties:
total:
type: integer
plugins:
type: array
items:
type: object
properties:
name:
type: string
version:
type: string
examples:
nodePluginsExample1:
value:
total: 4
plugins:
- name: logstash-codec-cef
version: 6.2.8
- name: logstash-codec-collectd
version: 3.0.3
- name: logstash-codec-dots
version: 3.0.2
- name: logstash-coded-edn
version: 3.0.2
/_node/stats:
get:
summary: Get node statistics
description: Get node statistics including information about the JVM, process, events, flow, and queue.
operationId: nodeStats
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing pipelines statistics.
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/Common"
- $ref: '#/components/schemas/PipelineSettings'
- $ref: '#/components/schemas/JVMStats'
- $ref: '#/components/schemas/ProcessStats'
- $ref: '#/components/schemas/EventsStats'
- $ref: '#/components/schemas/NodeStatsFlow'
- $ref: "#/components/schemas/PipelinesStats"
- $ref: '#/components/schemas/ReloadStats'
- $ref: '#/components/schemas/OSStats'
- $ref: '#/components/schemas/QueueStats'
example:
host: Mac
version: 9.1.0
http_address: 127.0.0.1:9600
id: 46e32c2e-b41f-45b7-84c1-1642457f3eba
name: Mac
ephemeral_id: 1752e2fe-7710-44d0-a2f8-a3005b6273c8
snapshot:
status: green
pipeline:
workers: 12
batch_size: 125
batch_delay: 50
jvm:
threads:
count: 47
peak_count: 47
mem:
heap_used_percent: 20
heap_committed_in_bytes: 1073741824
heap_max_in_bytes: 1073741822
heap_used_in_bytes: 222298112
non_heap_used_in_bytes: 170675352
non_heap_committed_in_bytes: 176553984
pools:
survivor:
max_in_bytes: -1
peak_used_in_bytes: 42991616
peak_max_in_bytes: -1
committed_in_bytes: 26214400
used_in_bytes: 26214400
old:
max_in_bytes: 1073741824
peak_used_in_bytes: 96468992
peak_max_in_bytes: 1073741824
committed_in_bytes: 848297984
used_in_bytes: 96468992
young:
max_in_bytes: -1
peak_used_in_bytes: 329252864
peak_max_in_bytes: -1
committed_in_bytes: 199229440
used_in_bytes: 99614720
gc:
collectors:
old:
collection_time_in_millis: 0
collection_count: 0
young:
collection_time_in_millis: 49
collection_count: 7
uptime_in_millis: 14712
process:
open_file_descriptors: 87
peak_open_file_descriptors: 87
max_file_descriptors: 10240
mem:
total_virtual_in_bytes: 425113862144
cpu:
total_in_millis: 20823
percent: 0
load_average:
1m: 4.07177734375
events:
in: 1
filtered: 1
out: 1
duration_in_millis: 6
queue_push_duration_in_millis: 0
flow:
input_throughput:
current: 0.0776
lifetime: 0.0776
filter_throughput:
current: 0.07759
lifetime: 0.07759
output_throughput:
current: 0.07759
lifetime: 0.07759
queue_backpressure:
current: 0
lifetime: 0
worker_concurrency:
current: 0.0004656
lifetime: 0.0004656
pipelines:
heartbeat-ruby-stdout:
events:
queue_push_duration_in_millis: 0
filtered: 1
out: 1
duration_in_millis: 6
in: 1
flow:
worker_concurrency:
current: 0.0004779
lifetime: 0.0004779
filter_throughput:
current: 0.07963
lifetime: 0.07963
worker_utilization:
current: 0.003982
lifetime: 0.003982
queue_backpressure:
current: 0
lifetime: 0
output_throughput:
current: 0.07963
lifetime: 0.07963
input_throughput:
current: 0.07962
lifetime: 0.07962
plugins:
inputs:
- id: c9ca46e359d73146590ca8af40092342afa922f3cbf07adc4b5009e346cb19f7
flow:
throughput:
current: 0.07963
lifetime: 0.07963
name: heartbeat
events:
queue_push_duration_in_millis: 0
out: 1
codecs:
- id: be3a3aba-ee75-4978-af58-d22b856d0e35
name: rubydebug
- id: plain_22e7b41b-756a-4b52-b03c-a30b31bb6266
name: plain
decode:
out: 0
duration_in_millis: 0
writes_in: 0
encode:
duration_in_millis: 0
writes_in: 0
filters:
- id: 585fa932a4fd506055ead07ee5ebcb3033c27c82ba90cbee73d6ac7e9357333a
flow:
worker_utilization:
current: 0.0006636
lifetime: 0.0006636
worker_millis_per_event:
current: 1
lifetime: 1
name: ruby
events:
out: 1
in: 1
duration_in_millis: 1
outputs:
- id: c4f801c8f170b4cb0679f704413773acd5f291929f42302d0a56361400c3741b
flow:
worker_utilization:
current: 0.001991
lifetime: 0.001991
worker_millis_per_event:
current: 3
lifetime: 3
name: stdout
events:
out: 1
in: 1
duration_in_millis: 3
reloads:
last_failure_timestamp:
successes: 0
last_success_timestamp:
last_error:
failures: 0
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: cd90b521-c192-437e-a49e-62fabebde7e2
reloads:
successes: 0
failures: 0
os: { }
queue:
events_count: 0
/_node/stats/events:
get:
summary: Get events statistics
description: Get statistics related to event processing.
operationId: nodeStatsEvents
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing events statistics.
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/EventsStats"
example:
events:
duration_in_millis: 1109
in: 56
filtered: 56
out: 56
queue_push_duration_in_millis: 2
/_node/stats/flow:
get:
summary: Get flow statistics
description: Get throughput and backpressure details.
operationId: nodeStatsFlow
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: |
Flow rates provide visibility into how a Logstash instance or an individual pipeline is currently performing relative to itself over time. This allows us to attach meaning to the cumulative-value metrics that are also presented by this API, and to determine whether an instance or pipeline is behaving better or worse than it has in the past.
The following flow rates are available for the logstash process as a whole and for each of its pipelines individually. In addition, pipelines may have [additional flow rates](https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#pipeline-flow-rates) depending on their configuration.
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/NodeStatsFlow"
example:
flow:
input_throughput:
current: 0.07381
last_1_minute: 0.01572
last_5_minutes: 0.01618
last_15_minutes: 0.0173
lifetime: 0.01701
filter_throughput:
current: 0.07379
last_1_minute: 0.01572
last_5_minutes: 0.01618
last_15_minutes: 0.0173
lifetime: 0.01701
output_throughput:
current: 0.07379
last_1_minute: 0.01572
last_5_minutes: 0.01618
last_15_minutes: 0.0173
lifetime: 0.01701
queue_backpressure:
current: 0.00007379
last_1_minute: 0.00001572
last_5_minutes: 0.00004532
last_15_minutes: 0.00005407
lifetime: 0.00006464
worker_concurrency:
current: 0.0001476
last_1_minute: 0.0001257
last_5_minutes: 0.000246
last_15_minutes: 0.0002941
lifetime: 0.000242
/_node/stats/geoip_download_manager:
get:
summary: Get geoip databases statistics
description: Get license checks and download status of [Geoip filter plugin](https://www.elastic.co/guide/en/logstash/current/plugins-filters-geoip.html).
operationId: nodeStatsGeoIPDownloadManager
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing geoip database license and download status.
content:
application/json:
schema:
type: object
properties:
geoip_download_manager:
type: object
properties:
database:
type: object
properties:
ASN:
$ref: "#/components/schemas/GeoIPDBLicenseStats"
CITY:
$ref: "#/components/schemas/GeoIPDBLicenseStats"
download_stats:
type: object
properties:
successes:
description: "The number of successful checks and downloads"
type: integer
failures:
description: "The number of failed check or downloads"
type: integer
last_checked_at:
type: string
format: date-time
status:
description: "The last download status."
type: string
enum: [ "succeeded", "failed", "updating" ]
/_node/stats/jvm:
get:
summary: Get JVM statistics
description: Get threads count, garbage collators(GC) and memory details.
operationId: nodeStatsJVM
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing jvm statistics.
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/JVMStats"
example:
jvm:
threads:
count: 117
peak_count: 119
mem:
heap_used_percent: 4
heap_committed_in_bytes: 245366784
heap_max_in_bytes: 4294967294
heap_used_in_bytes: 206685392
non_heap_used_in_bytes: 175223280
non_heap_committed_in_bytes: 196739072
pools:
young:
committed_in_bytes: 92274688
max_in_bytes: -1
used_in_bytes: 69206016
peak_max_in_bytes: -1
peak_used_in_bytes: 171966464
old:
committed_in_bytes: 146800640
max_in_bytes: 4294967296
used_in_bytes: 131187920
peak_max_in_bytes: 4294967296
peak_used_in_bytes: 135186368
survivor:
committed_in_bytes: 6291456
max_in_bytes: -1
used_in_bytes: 6291456
peak_max_in_bytes: -1
peak_used_in_bytes: 23068672
gc:
collectors:
young:
collection_count: 37
collection_time_in_millis: 192
old:
collection_count: 0
collection_time_in_millis: 0
uptime_in_millis: 2512572
/_node/stats/os:
get:
summary: Get Cgroup statistics
description: Get a more accurate view of CPU statistics from control groups (Cgroup) if available.
operationId: nodeStatsOS
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing OS statistics.
content:
application/json:
schema:
type: object
properties:
os:
type: object
properties:
cgroup:
type: object
properties:
cpuacct:
type: object
properties:
control_group:
type: string
usage_nanos:
type: integer
format: int64
cpu:
type: object
properties:
control_group:
type: string
cfs_period_micros:
type: integer
format: int64
cfs_quota_micros:
type: integer
format: int64
stat:
type: object
properties:
number_of_elapsed_periods:
type: integer
format: int64
number_of_times_throttled:
type: integer
format: int64
time_throttled_nanos:
type: integer
format: int64
example:
os:
cgroup:
cpuacct:
control_group: "/elastic1"
usage_nanos: 378477588075
cpu:
control_group: "/elastic1"
cfs_period_micros: 1000000
cfs_quota_micros: 800000
stat:
number_of_elapsed_periods: 4157
number_of_times_throttled: 460
time_throttled_nanos: 581617440755
/_node/stats/pipelines:
get:
summary: Get statistics for pipelines
description: Get pipeline performance metrics and plugin details.
operationId: nodeStatsPipelines
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: |
A JSON object containing pipelines statistics.
- the number of events that were input, filtered, or output by each pipeline
- the current and lifetime [flow rates](https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#flow-stats for each pipeline
- stats for each configured filter or output stage
- info about config reload successes and failures (when [config reload](https://www.elastic.co/guide/en/logstash/current/reloading-config.html) is enabled)
- info about the persistent queue (when [persistent queues](https://www.elastic.co/guide/en/logstash/current/persistent-queues.html) are enabled)
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/PipelinesStats"
example:
pipelines:
beats-es:
events:
duration_in_millis: 365495
in: 216610
filtered: 216485
out: 216485
queue_push_duration_in_millis: 342466
flow:
input_throughput:
current: 603.1
lifetime: 575.4
filter_throughput:
current: 604.2
lifetime: 575.1
output_throughput:
current: 604.8
lifetime: 575.1
queue_backpressure:
current: 0.214
lifetime: 0.937
worker_concurrency:
current: 0.941
lifetime: 0.9709
worker_utilization:
current: 93.092
lifetime: 92.187
plugins:
inputs:
- id: 35131f351e2dc5ed13ee04265a8a5a1f95292165-1
events:
out: 216485
queue_push_duration_in_millis: 342466
flow:
throughput:
current: 603.1
lifetime: 590.7
name: beats
filters:
- id: 35131f351e2dc5ed13ee04265a8a5a1f95292165-2
events:
duration_in_millis: 55969
in: 216485
out: 216485
failures: 216485
patterns_per_field:
message: 1
flow:
worker_utilization:
current: 16.71
lifetime: 15.27
worker_millis_per_event:
current: 2829
lifetime: 0.2585
name: grok
- id: 35131f351e2dc5ed13ee04265a8a5a1f95292165-3
events:
duration_in_millis: 3326
in: 216485
out: 216485
flow:
worker_utilization:
current: 1.042
lifetime: 0.9076
worker_millis_per_event:
current: 0.01763
lifetime: 0.01536
name: geoip
outputs:
- id: 35131f351e2dc5ed13ee04265a8a5a1f95292165-4
events:
duration_in_millis: 278557
in: 216485
out: 216485
flow:
worker_utilization:
current: 75.34
lifetime: 76.01
worker_millis_per_event:
current: 1.276
lifetime: 1.287
name: elasticsearch
reloads:
last_error:
successes: 0
last_success_timestamp:
last_failure_timestamp:
failures: 0
queue:
type: memory
pipeline:
workers: 4
batch_size: 125
batch_delay: 50
heartbeat-ruby-stdout:
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
/_node/stats/pipelines/{pipeline_name}:
get:
summary: Get statistics for a pipeline
description: Get performance metrics and plugin details for a pipeline.
operationId: nodeStatsPipeline
tags:
- node stats
parameters:
- name: pipeline_name
in: path
required: true
schema:
type: string
description: The name of the pipeline to retrieve information for.
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing a single pipeline statistics.
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/PipelinesStats"
examples:
PipelineWithPersistedQueue:
description: A pipeline with a persisted queue.
value:
pipelines:
heartbeat-ruby-stdout:
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
PipelineWithMemoryQueue:
description: A pipeline with a memory queue.
value:
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
/_node/stats/process:
get:
summary: Get process statistics
description: Get system-level process statistics.
operationId: nodeStatsProcess
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing process statistics.
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/ProcessStats"
example:
process:
open_file_descriptors: 221
peak_open_file_descriptors: 221
max_file_descriptors: 10240
mem:
total_virtual_in_bytes: 428771917824
cpu:
total_in_millis: 74913
percent: 0
load_average:
1m: 6.06201171875
/_node/stats/reloads:
get:
summary: Get config reload statistics
description: Get information about config reload successes and failures.
operationId: nodeStatsReloads
tags:
- node stats
parameters:
- $ref: "#/components/parameters/pretty"
responses:
"200":
description: A JSON object containing process statistics.
content:
application/json:
schema:
allOf:
# - $ref: "#/components/schemas/Common"
# - $ref: '#/components/schemas/PipelineSettings'
- $ref: "#/components/schemas/ReloadStats"
example:
reloads:
successes: 0
failures: 0
/_node/hot_threads:
get:
summary: Get hot threads
description: >
Get information about current hot threads for Logstash.
A hot thread is a Java thread that has high CPU usage and takes longer than normal to execute.
operationId: nodeHotThreads
tags:
- hot threads
parameters:
- name: threads
in: query
schema:
type: integer
default: 10
description: The number of hot threads to return.
- name: stacktrace_size
in: query
schema:
type: integer
default: 50
description: The depth of the stack trace to report for each thread.
- name: ignore_idle_threads
in: query
schema:
type: boolean
default: true
description: If true, does not return idle threads.
- $ref: "#/components/parameters/pretty"
- name: human
in: query
schema:
type: boolean
description: If you append `?human=true` to the request, the JSON returned will be in a human-readable format.
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
# - $ref: '#/components/schemas/Common'
# - $ref: '#/components/schemas/PipelineSettings'
- type: object
properties:
hot_threads:
type: object
properties:
time:
type: string
busiest_threads:
type: integer
threads:
type: array
items:
$ref: '#/components/schemas/Thread'
examples:
nodeHotThreadsExample1:
value:
hot_threads:
time: 2025-01-06T18:25:28-07:00
busiest_threads: 3
threads:
- name: Ruby-0-Thread-7
thread_id: 37
percent_of_cpu_time: 0.0
state: timed_waiting
traces:
- "java.lang.Object.wait(Native Method)"
- "org.jruby.RubyThread.sleep(RubyThread.java:1002)"
- "org.jruby.RubyKernel.sleep(RubyKernel.java:803)"
- name: "[test2]>worker3"
thread_id: 10
percent_of_cpu_time: 0.85
state: waiting
traces:
- "sun.misc.Unsafe.park(Native Method)"
- "java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)"
- "java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)"
- name: "[test2]>worker2"
thread_id: 11
percent_of_cpu_time: 0.85
state: runnable
traces:
- "org.jruby.RubyClass.allocate(RubyClass.java:225)"
- "org.jruby.RubyClass.newInstance(RubyClass.java:856)"
- "org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen)"
/_health_report:
get:
summary: Get health status
description: |
The health API returns a report with the health status of Logstash and the pipelines that are running inside of it.
The report contains a list of indicators that compose Logstash functionality.
Each indicator has a health status of: green, unknown, yellow, or red.
The indicator provides an explanation and metadata describing the reason for its current health status.
The top-level status is controlled by the worst indicator status.
In the event that an indicator status is non-green, a list of impacts may be present in the indicator result which detail the functionalities that are negatively affected by the health issue.
Each impact carries with it a severity level, an area of the system that is affected, and a simple description of the impact on the system.
Some health indicators can determine the root cause of a health problem and prescribe a set of steps that can be performed in order to improve the health of the system.
The root cause and remediation steps are encapsulated in a diagnosis.
A diagnosis contains a cause detailing a root cause analysis, an action containing a brief description of the steps to take to fix the problem, and the URL for detailed troubleshooting help.
NOTE: The health indicators perform root cause analysis of non-green health statuses.
This can be computationally expensive when called frequently.
operationId: healthReport
tags:
- health
parameters:
- $ref: "#/components/parameters/pretty"
responses:
'200':
description: Indicates a successful call
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Common'
- type: object
properties:
symptom:
type: string
example: "3 indicators are healthy"
indicators:
description: Information about the health of Logstash indicators.
type: object
properties:
pipelines:
type: object
properties:
status:
$ref: '#/components/schemas/Status'
symptom:
type: string
indicators:
type: object
additionalProperties:
description: "pipeline name"
type: object
properties:
status:
$ref: '#/components/schemas/Status'
symptom:
type: string
description: "A message providing information about the current health status."
example: "The pipeline is healthy"
details:
type: object
description: "An object that contains additional information about the indicator that has led to the current health status result."
properties:
status:
type: object
properties:
state:
type: string
enum:
- LOADING
- RUNNING
- FINISHED
- TERMINATED
flow:
type: object
properties:
worker_utilization:
$ref: '#/components/schemas/FlowWindows'
impacts:
type: array
description: "If a non-healthy status is returned, indicators may include a list of impacts that this health status will have on Logstash."
items:
type: object
properties:
id:
type: string
description: |
A unique identifier that may appear associated with a known impacts or issue.
This ID follows a structured format that helps identify the specific problem.
example: "logstash:health:pipeline:flow:impact:blocked_processing"
severity:
type: integer
minimum: 1
maximum: 10
description: "How important this impact is to the functionality of Logstash. A value of 1 is the highest severity, with larger values indicating lower severity."
description:
type: string
description: "A description of the impact on Logstash."
impact_areas:
type: array
description: "The areas of Logstash affected by the health status. Possible values are:"
example: ["pipeline_execution"]
items:
type: string
diagnosis:
type: array
items:
type: object
properties:
id:
type: string
description: |
A unique identifier that may appear associated with a known diagnosis or issue.
This ID follows a structured format that helps identify the specific problem.
example: "logstash:health:pipeline:flow:worker_utilization:diagnosis:5m-blocked"
cause:
type: string
description: "A description of a root cause of this health problem."
action:
type: string
description: "A brief description of the steps that should be taken to remediate the problem. A more detailed step-by-step guide to remediate the problem is provided by the `help_url` field."
help_url:
type: string
format: uri
description: "A link to the troubleshooting guide that will fix the health problem."
examples:
normalTerminatedCase:
description: "The pipeline has finished without errors or interruptions."
value:
symptom: "1 indicator is concerning (`pipelines`)"
indicators:
pipelines:
status: "yellow"
symptom: "1 indicator is concerning (`normal-completion-pipeline`)"
indicators:
normal-completion-pipeline:
status: "yellow"
symptom: "The pipeline is concerning; 1 area is impacted and 1 diagnosis is available"
diagnosis:
- cause: "pipeline has finished running because its inputs have been closed and events have been processed"
action: "if you expect this pipeline to run indefinitely, you will need to configure its inputs to continue receiving or fetching events"
impacts:
- impact_areas: ["pipeline_execution"]
details:
status:
state: "FINISHED"
abnormalTerminatedCase:
description: "The pipeline is terminated with errors."
value:
status: "red"
symptom: "1 indicator is unhealthy (`pipelines`)"
indicators:
pipelines:
status: "red"
symptom: "1 indicator is unhealthy (`abnormal-termination-pipeline`)"
indicators:
abnormal-termination-pipeline:
status: "red"
symptom: "The pipeline is unhealthy; 1 area is impacted and 1 diagnosis is available"
diagnosis:
- cause: "pipeline is not running, likely because it has encountered an error"
action: "view logs to determine the cause of abnormal pipeline shutdown"
impacts:
- description: "the pipeline is not currently processing"
impact_areas: [ "pipeline_execution" ]
details:
status:
state: "TERMINATED"
backpressureCase:
description: "A pipeline is blocked by slow downstream processing."
value:
status: "red"
symptom: "1 indicator is unhealthy (`pipelines`)"
indicators:
pipelines:
status: "red"
symptom: "1 indicator is unhealthy (`blocked-pipeline`)"
indicators:
blocked-pipeline:
status: "red"
symptom: "The pipeline is unhealthy; 1 area is impacted and 1 diagnosis is available"
diagnosis:
- id: "logstash:health:pipeline:flow:worker_utilization:diagnosis:5m-blocked"
cause: "pipeline workers have been completely blocked for at least five minutes"
action: "address bottleneck or add resources"
impacts:
- id: "logstash:health:pipeline:flow:impact:blocked_processing"
severity: 1
description: "the pipeline is blocked"
impact_areas: [ "pipeline_execution" ]
details:
status:
state: "RUNNING"
flow:
worker_utilization:
last_1_minute: 100.0
last_5_minutes: 100.0
components:
parameters:
pretty:
name: pretty
in: query
schema:
type: boolean
description: >
If you append `?pretty=true` to the request, the JSON returned will be pretty formatted. Use it for debugging only!
securitySchemes:
BasicAuth:
type: http
scheme: basic
schemas:
Common:
type: object
properties:
host:
type: string
description: The name of the host machine.
version:
type: string
description: The version of the Logstash instance.
http_address:
type: string
description: The HTTP address where the Logstash instance is accessible, including the port number.
id:
type: string
description: A unique identifier (uuid) for the Logstash instance.
name:
type: string
description: The name of the Logstash instance.
ephemeral_id:
type: string
description: A unique identifier for the ephemeral session of the Logstash instance.
snapshot:
type: boolean
nullable: true
status:
$ref: '#/components/schemas/Status'
PipelineSettings:
type: object
properties:
pipeline:
type: object
properties:
workers:
type: integer
batch_size:
type: integer
batch_delay:
type: integer
NodeInfoPipeline:
type: object
properties:
workers:
type: integer
batch_size:
type: integer
batch_delay:
type: integer
config_reload_automatic:
type: boolean
config_reload_interval:
type: integer
dead_letter_queue_enabled:
type: boolean
Status:
type: string
description: |
Health status of Logstash, based on the aggregated status of all indicators.
Statuses are:
- `green`: Logstash is healthy.
- `unknown`: Logstash health could not be determined.
- `yellow`: The functionality of Logstash is in a degraded state and may need remediation to avoid the health becoming red.
- `red`: Logstash is experiencing an outage or certain features are unavailable for use.
enum:
- green
- red
- unknown
- yellow
FlowWindows:
type: object
description: |
When the rate for a given flow metric window is infinite, it is presented as a string.
This occurs when the numerator metric has changed during the window without a change in the rates denominator metric.
properties:
current:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
description: "The most recent ~10s."
last_1_minute:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
last_5_minutes:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
last_15_minutes:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
last_1_hour:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
last_24_hours:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
lifetime:
oneOf:
- type: number
format: double
- type: string
enum: ["Infinity"]
description: "The lifetime of the relevant pipeline or process."
FlowStatsPart1:
type: object
properties:
input_throughput:
description: |
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.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
filter_throughput:
description: |
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).
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
output_throughput:
description: |
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).
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
queue_backpressure:
description: |
This is a unitless metric representing the cumulative time spent by all inputs blocked pushing events into their pipelines 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.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
worker_concurrency:
description: |
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 pipelines 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.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
FlowStatsPart2:
type: object
properties:
worker_utilization:
description: |
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 pipelines 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.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
FlowStatsPart3:
type: object
properties:
queue_persisted_growth_bytes:
description: |
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)).
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
queue_persisted_growth_events:
description: |
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 queues event-count is growing, and a negative number indicates that the queue is shrinking.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
PipelineMQFlowStats:
type: object
allOf:
- $ref: "#/components/schemas/FlowStatsPart1"
- $ref: "#/components/schemas/FlowStatsPart2"
PipelinePQFlowStats:
type: object
allOf:
- $ref: "#/components/schemas/FlowStatsPart1"
- $ref: "#/components/schemas/FlowStatsPart2"
- $ref: "#/components/schemas/FlowStatsPart3"
PipelineFlowStats:
type: object
description: |
Each pipelines entry in the API response includes a number of pipeline-scoped [flow rates](https://www.elastic.co/guide/en/logstash/current/node-stats-api.html#flow-stats) such as `input_throughput`, `worker_concurrency`, and `queue_backpressure` to provide visibility into the flow of events through the pipeline.
When configured with a [persistent queue](https://www.elastic.co/guide/en/logstash/current/persistent-queues.html, the pipelines flow will include additional rates to provide visibility into the health of the pipelines persistent queue:
properties:
flow:
type: object
oneOf:
- $ref: "#/components/schemas/PipelineMQFlowStats" # For memory queue
- $ref: "#/components/schemas/PipelinePQFlowStats" # For persisted queue
NodeStatsFlow:
type: object
properties:
flow:
$ref: "#/components/schemas/FlowStatsPart1"
Thread:
type: object
properties:
name:
type: string
thread_id:
type: integer
percent_of_cpu_time:
type: number
format: double
state:
type: string
traces:
type: array
items:
type: string
EventsStats:
type: object
properties:
events:
type: object
properties:
in:
type: integer
format: int64
filtered:
type: integer
format: int64
out:
type: integer
format: int64
duration_in_millis:
type: integer
format: int64
queue_push_duration_in_millis:
type: integer
format: int64
JVMStats:
type: object
properties:
jvm:
type: object
properties:
threads:
type: object
properties:
count:
type: integer
description: The number of active JVM threads.
peak_count:
type: integer
description: The peak number of active JVM threads.
mem:
type: object
properties:
heap_used_percent:
type: integer
description: The percentage of heap memory used.
heap_committed_in_bytes:
type: integer
format: int64
description: The committed heap memory in bytes.
heap_max_in_bytes:
type: integer
format: int64
description: The maximum heap memory in bytes.
heap_used_in_bytes:
type: integer
format: int64
description: The used heap memory in bytes.
non_heap_used_in_bytes:
type: integer
format: int64
description: The used non-heap memory in bytes.
non_heap_committed_in_bytes:
type: integer
format: int64
description: The committed non-heap memory in bytes.
pools:
$ref: "#/components/schemas/JVMMemoryPools"
gc:
type: object
properties:
collectors:
$ref: "#/components/schemas/JVMGCCollectors"
uptime_in_millis:
type: integer
format: int64
description: The JVM uptime in milliseconds.
JVMMemoryPool:
type: object
properties:
peak_used_in_bytes:
type: integer
format: int64
used_in_bytes:
type: integer
format: int64
peak_max_in_bytes:
type: integer
format: int64
max_in_bytes:
type: integer
format: int64
committed_in_bytes:
type: integer
format: int64
JVMMemoryPools:
type: object
properties:
survivor:
$ref: "#/components/schemas/JVMMemoryPool"
old:
$ref: "#/components/schemas/JVMMemoryPool"
young:
$ref: "#/components/schemas/JVMMemoryPool"
JVMGCCollector:
type: object
properties:
collection_time_in_millis:
type: integer
format: int64
collection_count:
type: integer
JVMGCCollectors:
type: object
properties:
old:
$ref: "#/components/schemas/JVMGCCollector"
young:
$ref: "#/components/schemas/JVMGCCollector"
OSStats:
type: object
properties:
os:
type: object
properties:
name:
type: string
arch:
type: string
version:
type: string
available_processors:
type: integer
ProcessStats:
type: object
properties:
process:
type: object
properties:
open_file_descriptors:
type: integer
peak_open_file_descriptors:
type: integer
max_file_descriptors:
type: integer
mem:
type: object
properties:
total_virtual_in_bytes:
type: integer
cpu:
type: object
properties:
total_in_millis:
type: integer
percent:
type: integer
load_average:
type: object
properties:
"1m":
type: number
ThroughputStats:
type: object
properties:
throughput:
description: |
This metric is expressed in events-per-second, and is the rate of events this input plugin is pushing into the pipelines queue relative to wall-clock time (`events.in` / second). It includes events that are blocked by the queue and have not yet been accepted.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
WorkerStats:
type: object
properties:
worker_utilization:
description: |
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.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
worker_millis_per_event:
description: |
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.
allOf: # need to use allOf to keep the description
- $ref: "#/components/schemas/FlowWindows"
InputPluginEventsStats:
type: object
properties:
out:
type: integer
format: int64
queue_push_duration_in_millis:
type: integer
format: int64
InputPluginStats:
type: object
properties:
id:
type: string
name:
type: string
flow:
$ref: "#/components/schemas/ThroughputStats"
events:
$ref: "#/components/schemas/InputPluginEventsStats"
FilterOutputPluginEventsStats:
type: object
properties:
in:
type: integer
format: int64
out:
type: integer
format: int64
duration_in_millis:
type: integer
format: int64
FilterOutputPluginStats:
type: object
properties:
id:
type: string
name:
type: string
flow:
$ref: "#/components/schemas/WorkerStats"
events:
$ref: "#/components/schemas/FilterOutputPluginEventsStats"
CodecPluginStats:
type: object
properties:
id:
type: string
name:
type: string
decode:
type: object
properties:
duration_in_millis:
type: integer
writes_in:
type: integer
out:
type: integer
encode:
type: object
properties:
duration_in_millis:
type: integer
writes_in:
type: integer
PipelinesStats:
type: object
properties:
pipelines:
type: object
description: |
A map where each key is a user-defined pipeline name, and the value contains the metrics for that pipeline.
additionalProperties:
description: "Metrics of each plugin in the pipeline, flow statistics, event statistics and queue statistics."
type: object
allOf:
- $ref: "#/components/schemas/EventsStats"
- $ref: "#/components/schemas/PipelineFlowStats"
- type: object
properties:
plugins:
type: object
properties:
inputs:
type: array
items:
$ref: "#/components/schemas/InputPluginStats"
codecs:
type: array
items:
$ref: "#/components/schemas/CodecPluginStats"
filters:
type: array
items:
$ref: "#/components/schemas/FilterOutputPluginStats"
outputs:
type: array
items:
$ref: "#/components/schemas/FilterOutputPluginStats"
- $ref: "#/components/schemas/PipelineReloadStats"
- $ref: "#/components/schemas/PipelineQueueStats"
- $ref: "#/components/schemas/PipelineSettings"
- type: object
properties:
hash:
type: string
description: "A unique hash identifier."
ephemeral_id:
type: string
format: uuid
description: "A temporary unique identifier for the instance."
PipelineReloadStats:
type: object
properties:
reloads:
type: object
properties:
last_error:
type: string
nullable: true
successes:
type: integer
format: int64
last_success_timestamp:
type: string
format: date-time
nullable: true
last_failure_timestamp:
type: string
format: date-time
nullable: true
failures:
type: integer
format: int64
ReloadStats:
type: object
properties:
reloads:
type: object
properties:
successes:
type: integer
format: int64
failures:
type: integer
format: int64
PipelineQueueStats:
type: object
properties:
queue:
type: object
oneOf:
- type: object
description: "The metrics of persisted queue."
properties:
type:
type: string
enum:
- persisted
capacity:
type: object
properties:
max_unread_events:
type: integer
format: int64
page_capacity_in_bytes:
type: integer
format: int64
max_queue_size_in_bytes:
type: integer
format: int64
queue_size_in_bytes:
type: integer
format: int64
data:
type: object
properties:
path:
type: string
free_space_in_bytes:
type: integer
format: int64
storage_type:
type: string
events:
type: integer
format: int64
events_count:
type: integer
format: int64
queue_size_in_bytes:
type: integer
format: int64
max_queue_size_in_bytes:
type: integer
format: int64
- type: object
description: "The metrics of memory queue."
properties:
type:
type: string
enum:
- memory
events_count:
type: integer
format: int64
queue_size_in_bytes:
type: integer
format: int64
max_queue_size_in_bytes:
type: integer
format: int64
discriminator:
propertyName: type
QueueStats:
type: object
properties:
queue:
type: object
properties:
events_count:
type: integer
format: int64
GeoIPDBLicenseStats:
type: object
properties:
status:
type: string
enum: [ "init", "up_to_date", "to_be_expired", "expired" ]
description: The status of the database license.
fail_check_in_days:
type: integer
description: The number of days since the last successful check.
last_updated_at:
type: string
format: date-time
description: The last update timestamp.