Skip to main content

vLLM

vLLM

Plugin: go.d.plugin Module: prometheus

Maintained by Netdata

Overview

Monitor vLLM inference-serving workload, latency, scheduling, token throughput, cache behavior, connector activity, and runtime health.

The built-in profiles follow requests through scheduling, prefill, decode, engine execution, and HTTP service boundaries. They separate model-engine, endpoint, parser, service-runtime, and Ray replica-worker identities, and organize KV cache residency and offloading, connector operations, speculative or diffusion decoding, and WebSocket activity under their causal owners. Optional charts appear when the corresponding vLLM features export metrics.

Netdata periodically scrapes either the vLLM server Prometheus /metrics endpoint or the Ray node metrics endpoint. Auto-selection applies one built-in vllm profile to native vllm:* and Ray ray_vllm_* metrics. The profile normalizes Ray metric names into the native vLLM namespace, preserves replica and worker identity, and suppresses Ray 2.48's deprecated unsuffixed counter aliases so each counter is presented once.

This collector is supported on all platforms.

This collector supports collecting metrics from multiple instances of this integration, including remote instances.

Default Behavior

Auto-Detection

By default, it detects instances running on the local host by trying to connect to known ports that are allocated to exporters.

Limits

The default configuration for this integration does not impose any limits on data collection.

Performance Impact

The default configuration for this integration is not expected to impose a significant performance impact on the system.

Setup

You can configure the prometheus collector in two ways:

MethodBest forHow to
UIFast setup without editing filesGo to Nodes → Configure this node → Collectors → Jobs, search for prometheus, then click + to add a job.
FileIf you prefer configuring via file, or need to automate deployments (e.g., with Ansible)Edit go.d/prometheus.conf and add a job.
important

UI configuration requires paid Netdata Cloud plan.

Prerequisites

Expose the vLLM metrics endpoint

Run a vLLM server with a reachable Prometheus /metrics endpoint, or configure a Ray deployment whose node metrics endpoint exposes ray_vllm_* families. For Ray, configure or discover each node's metrics export port; Ray commonly uses port 8080 when --metrics-export-port=8080 is set. Ray 2.48 exports an unsuffixed compatibility gauge beside most canonical _total counters unless RAY_EXPORT_COUNTER_AS_GAUGE=0 is set.

Configuration

Options

The following options can be defined globally: update_every, autodetection_retry.

Config options
GroupOptionDescriptionDefaultRequired
Collectionupdate_everyData collection interval (seconds).10no
autodetection_retryAutodetection retry interval (seconds). Set 0 to disable.0no
TargeturlTarget endpoint URL.yes
timeoutHTTP request timeout (seconds).10no
expected_prefixIf set, the job's check passes only when at least one post-job, pre-profile metric name starts with this prefix. Guards against scraping an unexpected endpoint; profile-owned relabeling cannot satisfy it.no
CustomizationappApplication name used as the app segment of chart contexts (prometheus.<app>.<metric>). When unset, it is taken from a matched profile, otherwise it falls back to the job name.no
FiltersselectorTime series selector (filter).no
Limitsmax_time_seriesGlobal time series limit applied after job and profile relabeling. If the final output exceeds it, the data is not processed.2000no
max_time_series_per_metricPer-metric time series limit applied to final metric families. Metrics exceeding it are skipped.200no
Customizationfallback_typeJob-level fallback type overrides for untyped metrics.no
relabelingJob-owned Prometheus-compatible metric relabeling, applied before profile selection.no
profilesCurated, exporter-specific chart profiles with optional untyped classification, profile-owned normalization, and scoped fallback-chart policy. User profiles may constrain unmatched fallback charts; stock profiles preserve unknown future families. Disable profiles with mode none.autono
HTTP AuthusernameUsername for Basic HTTP authentication.no
passwordPassword for Basic HTTP authentication.no
bearer_token_filePath to a file containing a bearer token (used for Authorization: Bearer).no
TLStls_skip_verifySkip TLS certificate and hostname verification (insecure).nono
tls_caPath to CA bundle used to validate the server certificate.no
tls_certPath to client TLS certificate (for mTLS).no
tls_keyPath to client TLS private key (for mTLS).no
Proxyproxy_urlHTTP proxy URL.no
proxy_usernameUsername for proxy Basic HTTP authentication.no
proxy_passwordPassword for proxy Basic HTTP authentication.no
RequestmethodHTTP method to use.GETno
bodyRequest body (e.g., for POST/PUT).no
headersAdditional HTTP headers (one per line as key: value).no
not_follow_redirectsDo not follow HTTP redirects.nono
force_http2Force HTTP/2 (including h2c over TCP).nono
Virtual NodevnodeAssociates this data collection job with a Virtual Node.no
selector

This option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.

  • Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)
  • Pattern syntax: selector.
  • Option syntax:
selector:
allow:
- pattern1
- pattern2
deny:
- pattern3
- pattern4
fallback_type

This job option allows you to process untyped metrics as Counter or Gauge instead of ignoring them. Classification uses the post-job, pre-profile metric name. Profile relabeling preserves the selected type but cannot create or change it by renaming the final metric.

Selected profiles may provide exporter-owned fallback_type defaults inside their own match scope. Job gauge rules take precedence over job counter rules, and both job rule sets take precedence over every profile rule. Use them for deployment-specific overrides rather than exporter behavior that belongs in a profile. Keep patterns narrow: a broad job rule such as gauge: ['*'] overrides profile counter classifications. Blank patterns and patterns with leading or trailing whitespace are rejected.

fallback_type:
counter:
- metric_name_pattern1
- metric_name_pattern2
gauge:
- metric_name_pattern3
- metric_name_pattern4
relabeling

A list of job-owned relabeling blocks, applied after selector and before profile selection. Each block applies a list of Prometheus metric_relabel_configs rules to the metrics whose name matches match. Profiles may own the same block format for exporter normalization after selection. See the relabeling reference for the full action set and more examples.

  • match: Netdata simple patterns matched against the full metric name — including any _bucket/_sum/_count suffix, so prefer globs like app_lat* over an exact app_lat (space-separated; * matches any sequence, ? any character, a leading ! negates). Use * to target every metric. Required.
  • metric_relabel_configs: Prometheus relabel rules (source_labels, separator, regex, modulus, target_label, replacement, action), applied in order to the scraped samples before charts are built.

Relabeling that would corrupt a histogram or summary — splitting it, dropping a component, mutating the le/quantile label, or merging two families — is rejected.

relabeling:
- match: 'http_*'
metric_relabel_configs:
- source_labels: [code]
regex: '(\d)\d\d'
target_label: code_class
replacement: '${1}xx'
profiles

Profiles ship curated charts for recognized exporters -- see the profile format for the file format and how to author your own. profiles.mode selects them:

  • auto (default): every profile whose match hits at least one scraped metric.
  • exact: only the profiles named in mode_exact.entries (each must match, or the job fails its check).
  • combined: auto plus the profiles named in mode_combined.entries.
  • none: no profiles — generic autogen charts only (the pre-profile behavior).

Selection uses post-job, pre-profile family names. A selected profile may carry fallback_type rules that classify untyped scalar families inside its match scope and relabeling blocks that normalize matching source families automatically before chart routing. Job fallback policy takes precedence; conflicting profile rules use the same ordering as normalization. Each original family is processed only by the first applicable profile normalizer: profile-name order in auto, configured entry order in exact, and configured entries followed by remaining auto profiles in name order in combined. Later profile pipelines do not see the family. All selected templates consume the same final names and labels; the collector does not create a private metric stream per profile.

Only the block matching the selected mode (mode_exact or mode_combined) is read; entries under the other block are ignored. Metrics not covered by an authored profile chart keep their generic autogen charts unless an applicable profile autogen.selector rejects them. Every selector is limited to its profile's match scope; when scopes overlap, every applicable selector must accept the series. This changes fallback charts only; use selector or a relabeling drop rule to discard samples. Stock profiles leave unknown future families eligible for generic fallback; closed fallback selectors are a user-owned deployment policy, not a stock-profile authoring pattern.

profiles:
mode: exact
mode_exact:
entries:
- name: haproxy

via UI

Configure the prometheus collector from the Netdata web interface:

  1. Go to Nodes.
  2. Select the node where you want the prometheus data-collection job to run and click the (Configure this node). That node will run the data collection.
  3. The Collectors → Jobs view opens by default.
  4. In the Search box, type prometheus (or scroll the list) to locate the prometheus collector.
  5. Click the + next to the prometheus collector to add a new job.
  6. Fill in the job fields, then click Test to verify the configuration and Submit to save.
    • Test runs the job with the provided settings and shows whether data can be collected.
    • If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.

via File

The configuration file name for this integration is go.d/prometheus.conf.

The file format is YAML. Generally, the structure is:

update_every: 1
autodetection_retry: 0
jobs:
- name: some_name1
- name: some_name2

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/prometheus.conf
Examples
Native vLLM

Collect native vLLM server metrics with automatically matched application, FastAPI, process-runtime, and Python-GC profiles.

jobs:
- name: vllm
url: http://127.0.0.1:8000/metrics
expected_prefix: 'vllm:'

vLLM on Ray

Collect vLLM families from a Ray node metrics endpoint. The automatically matched unified profile normalizes them into the native vLLM namespace, removes Ray 2.48's deprecated unsuffixed compatibility gauges, and removes vLLM's pre-canonical KV-offload duplicates. Other Ray system families remain available for generic collection or another matching profile.

Config
jobs:
- name: vllm-ray
url: http://127.0.0.1:8080
expected_prefix: ray_vllm_

Alerts

There are no alerts configured by default for this integration.

Metrics

The built-in Prometheus profiles on this page map Prometheus metrics into 120 curated Netdata charts across the primary and applicable supporting profiles. The tables are generated from the same profile design and runtime chart contracts used by the Agent.

Eligible metrics that are not covered by a curated chart, including future exporter metrics, can still be collected through the generic Prometheus autogeneration behavior. This catalogue describes curated profile coverage; it is not an allowlist of every metric that the collector can render.

vLLM

Curated inference, scheduling, latency, token, cache, connector, engine, HTTP, and runtime metrics from vLLM and Ray.

Request Lifecycle

Prometheus metricNetdata chartDimensionUnitScope
vllm:corrupted_requests_totalRequest Lifecycle — Corrupted Requestscorruptedrequests/smodel_name and engine
vllm:time_to_first_token_seconds_bucketRequest Lifecycle — Time to First Tokenmatching seriesobservations/smodel_name and engine
vllm:e2e_request_latency_seconds_bucketRequest Lifecycle — End-to-End Request Latencymatching seriesobservations/smodel_name and engine
vllm:time_to_first_token_seconds_countRequest Lifecycle — Requests Reaching First Tokenrequestsrequests/smodel_name and engine
vllm:time_to_first_token_seconds_sumRequest Lifecycle — Completed Pre-Response Timetimeseconds/smodel_name and engine
vllm:e2e_request_latency_seconds_sumRequest Lifecycle — Completed End-to-End Request Timetimeseconds/smodel_name and engine
vllm:request_params_n_bucketRequest Lifecycle — Requested Sequencesmatching seriesobservations/smodel_name and engine
vllm:request_params_n_sumRequest Lifecycle — Requested Sequence Volumesequencessequences/smodel_name and engine
vllm:request_params_max_tokens_bucketRequest Lifecycle — Requested Token Limitmatching seriesobservations/smodel_name and engine
vllm:request_params_max_tokens_sumRequest Lifecycle — Requested Token Limits Sumtoken_limitstokens/smodel_name and engine
vllm:request_params_max_tokens_countRequest Lifecycle — Requests with Explicit Token Limitrequestsrequests/smodel_name and engine
vllm:request_max_num_generation_tokens_bucketRequest Lifecycle — Maximum Generated Tokensmatching seriesobservations/smodel_name and engine
vllm:request_max_num_generation_tokens_sumRequest Lifecycle — Maximum Generated Tokens Summaximumstokens/smodel_name and engine
vllm:request_params_n_countRequest Lifecycle — Parent Requestsrequestsrequests/smodel_name and engine
vllm:request_success_totalRequest Lifecycle / Outcomes — Request Outcomesrequestsrequests/smodel_name and engine and finished_reason

Scheduler

Prometheus metricNetdata chartDimensionUnitScope
vllm:num_requests_runningScheduler — Request Staterunningrequestsmodel_name and engine
vllm:num_requests_waiting_by_reason{reason="capacity"}Scheduler — Request Statewaiting_capacityrequestsmodel_name and engine
vllm:num_requests_waiting_by_reason{reason="deferred"}Scheduler — Request Statewaiting_deferredrequestsmodel_name and engine
vllm:num_preemptions_totalScheduler — Request Preemptionspreemptionspreemptions/smodel_name and engine
vllm:engine_sleep_stateScheduler — Engine Sleep Statevalues of label sleep_state{status}model_name and engine
vllm:request_queue_time_seconds_bucketScheduler — Request Queue Timematching seriesobservations/smodel_name and engine
vllm:request_queue_time_seconds_sumScheduler — Completed Request Queue Timetimeseconds/smodel_name and engine

Prefill

Prometheus metricNetdata chartDimensionUnitScope
vllm:prompt_tokens_by_source_totalPrefill — Prompt Tokens by Sourcevalues of label sourcetokens/smodel_name and engine
vllm:request_prompt_tokens_bucketPrefill — Prompt Sizematching seriesobservations/smodel_name and engine
vllm:request_prefill_time_seconds_bucketPrefill — Prefill Timematching seriesobservations/smodel_name and engine
vllm:request_prefill_kv_computed_tokens_bucketPrefill — Computed KV Tokensmatching seriesobservations/smodel_name and engine
vllm:request_prompt_tokens_sumPrefill — Completed Request Prompt Volumeprompt_tokenstokens/smodel_name and engine
vllm:request_prefill_kv_computed_tokens_sumPrefill — Computed KV Token Volumecomputed_tokenstokens/smodel_name and engine
vllm:request_prefill_time_seconds_sumPrefill — Completed Request Prefill Timetimeseconds/smodel_name and engine

Decode

Prometheus metricNetdata chartDimensionUnitScope
vllm:generation_tokens_totalDecode — Generated Tokensgeneratedtokens/smodel_name and engine
vllm:request_generation_tokens_bucketDecode — Output Sizematching seriesobservations/smodel_name and engine
vllm:request_decode_time_seconds_bucketDecode — Decode Timematching seriesobservations/smodel_name and engine
vllm:inter_token_latency_seconds_bucketDecode — Inter-Token Latencymatching seriesobservations/smodel_name and engine
vllm:request_time_per_output_token_seconds_bucketDecode — Mean Output-Token Timematching seriesobservations/smodel_name and engine
vllm:request_generation_tokens_sumDecode — Output Token Volumeoutput_tokenstokens/smodel_name and engine
vllm:request_decode_time_seconds_sumDecode — Completed Request Decode Timetimeseconds/smodel_name and engine
vllm:inter_token_latency_seconds_countDecode — Inter-Token Intervalsintervalsintervals/smodel_name and engine
vllm:inter_token_latency_seconds_sumDecode — Inter-Token Interval Timeintervalsseconds/smodel_name and engine
vllm:request_time_per_output_token_seconds_sumDecode — Accumulated Mean Output-Token Timerequest_meansseconds/smodel_name and engine

Engine Execution

Prometheus metricNetdata chartDimensionUnitScope
vllm:request_inference_time_seconds_bucketEngine Execution — Inference Timematching seriesobservations/smodel_name and engine
vllm:request_inference_time_seconds_sumEngine Execution — Completed Request Inference Timetimeseconds/smodel_name and engine
vllm:iteration_tokens_total_bucketEngine Execution — Tokens per Engine Stepmatching seriesobservations/smodel_name and engine
vllm:iteration_tokens_total_countEngine Execution — Engine Stepsstepssteps/smodel_name and engine
vllm:iteration_tokens_total_sumEngine Execution — Engine Step Token Volumetokenstokens/smodel_name and engine
vllm:estimated_flops_per_gpu_totalEngine Execution — Estimated Compute per GPUcomputeGFLOP/s/GPUmodel_name and engine
vllm:estimated_read_bytes_per_gpu_totalEngine Execution — Estimated Memory Bandwidth per GPUreadGB/s/GPUmodel_name and engine
vllm:estimated_write_bytes_per_gpu_totalEngine Execution — Estimated Memory Bandwidth per GPUwriteGB/s/GPUmodel_name and engine

KV Cache

Prometheus metricNetdata chartDimensionUnitScope
vllm:kv_cache_usage_percKV Cache — KV Cache Usageusedpercentagemodel_name and engine
vllm:prefix_cache_queries_totalKV Cache — Local Prefix Cachequeriestokens/smodel_name and engine
vllm:prefix_cache_hits_totalKV Cache — Local Prefix Cachehitstokens/smodel_name and engine
vllm:external_prefix_cache_queries_totalKV Cache — External Prefix Cachequeriestokens/smodel_name and engine
vllm:external_prefix_cache_hits_totalKV Cache — External Prefix Cachehitstokens/smodel_name and engine
vllm:mm_cache_queries_totalKV Cache — Multimodal Cachequeriesitems/smodel_name and engine
vllm:mm_cache_hits_totalKV Cache — Multimodal Cachehitsitems/smodel_name and engine

KV Cache Residency

Prometheus metricNetdata chartDimensionUnitScope
vllm:kv_block_lifetime_seconds_bucketKV Cache Residency — KV Block Lifetimematching seriesobservations/smodel_name and engine
vllm:kv_block_idle_before_evict_seconds_bucketKV Cache Residency — KV Block Idle Time Before Evictionmatching seriesobservations/smodel_name and engine
vllm:kv_block_reuse_gap_seconds_bucketKV Cache Residency — KV Block Reuse Gapmatching seriesobservations/smodel_name and engine
vllm:kv_block_lifetime_seconds_countKV Cache Residency — KV Cache Eventsevictionsblocks/smodel_name and engine
vllm:kv_block_reuse_gap_seconds_countKV Cache Residency — KV Cache Eventsreuse_gapsblocks/smodel_name and engine
vllm:kv_block_lifetime_seconds_sumKV Cache Residency — Accumulated KV Residency Timelifetimeseconds/smodel_name and engine
vllm:kv_block_idle_before_evict_seconds_sumKV Cache Residency — Accumulated KV Residency Timeidle_before_evictionseconds/smodel_name and engine
vllm:kv_block_reuse_gap_seconds_sumKV Cache Residency — Accumulated KV Residency Timereuse_gapseconds/smodel_name and engine

KV Offloading

Prometheus metricNetdata chartDimensionUnitScope
vllm:kv_offload_load_size_bucketKV Offloading — KV Offload Load Sizematching seriesobservations/smodel_name and engine
vllm:kv_offload_store_size_bucketKV Offloading — KV Offload Store Sizematching seriesobservations/smodel_name and engine
vllm:kv_offload_load_size_countKV Offloading — KV Offload Transfer Operationsloadsoperations/smodel_name and engine
vllm:kv_offload_store_size_countKV Offloading — KV Offload Transfer Operationsstoresoperations/smodel_name and engine
vllm:kv_offload_load_bytes_totalKV Offloading — KV Offload Transfer Throughputloadedbytes/smodel_name and engine
vllm:kv_offload_store_bytes_totalKV Offloading — KV Offload Transfer Throughputstoredbytes/smodel_name and engine
vllm:kv_offload_load_time_totalKV Offloading — Completed KV Offload Transfer Timeloadseconds/smodel_name and engine
vllm:kv_offload_store_time_totalKV Offloading — Completed KV Offload Transfer Timestoreseconds/smodel_name and engine
vllm:kv_offload_lookup_sync_delay_seconds_bucketKV Offloading — KV Offload Synchronous Lookup Delaymatching seriesobservations/smodel_name and engine
vllm:kv_offload_lookup_async_delay_seconds_bucketKV Offloading — KV Offload Asynchronous Lookup Delaymatching seriesobservations/smodel_name and engine
vllm:kv_offload_lookup_sync_delay_seconds_countKV Offloading — KV Offload Lookup Measurementssynchronouslookups/smodel_name and engine
vllm:kv_offload_lookup_async_delay_seconds_countKV Offloading — KV Offload Lookup Measurementsasynchronouslookups/smodel_name and engine
vllm:kv_offload_lookup_sync_delay_seconds_sumKV Offloading — KV Offload Lookup Delay Accumulationsynchronousseconds/smodel_name and engine
vllm:kv_offload_lookup_async_delay_seconds_sumKV Offloading — KV Offload Lookup Delay Accumulationasynchronousseconds/smodel_name and engine
vllm:kv_offload_cpu_cache_usage_percKV Offloading — CPU KV Cache Usagetotalpercentagemodel_name and engine
vllm:kv_offload_cpu_cache_write_usage_percKV Offloading — CPU KV Cache Usagewritespercentagemodel_name and engine
vllm:kv_offload_cpu_cache_read_usage_percKV Offloading — CPU KV Cache Usagereadspercentagemodel_name and engine
vllm:kv_offload_cpu_allocation_size_bucketKV Offloading — CPU KV Allocation Sizematching seriesobservations/smodel_name and engine
vllm:kv_offload_cpu_allocation_size_countKV Offloading — CPU KV Allocation Measurementsallocationsallocations/smodel_name and engine
vllm:kv_offload_cpu_allocation_size_sumKV Offloading — CPU KV Allocation Volumeblocksblocks/smodel_name and engine
vllm:kv_offload_allocation_failure_totalKV Offloading — KV Offload Admission Outcomesallocation_failuresevents/smodel_name and engine
vllm:kv_offload_stores_skipped_totalKV Offloading — KV Offload Admission Outcomesstores_skippedevents/smodel_name and engine
vllm:kv_offload_tiering_lookup_sync_delay_seconds_bucketKV Offloading — Tiered KV Offload Synchronous Lookup Delaymatching seriesobservations/smodel_name and engine
vllm:kv_offload_tiering_lookup_async_delay_seconds_bucketKV Offloading — Tiered KV Offload Asynchronous Lookup Delaymatching seriesobservations/smodel_name and engine
vllm:kv_offload_tiering_lookup_sync_delay_seconds_countKV Offloading — Tiered KV Offload Lookup Measurementssynchronouslookups/smodel_name and engine
vllm:kv_offload_tiering_lookup_async_delay_seconds_countKV Offloading — Tiered KV Offload Lookup Measurementsasynchronouslookups/smodel_name and engine
vllm:kv_offload_tiering_lookup_sync_delay_seconds_sumKV Offloading — Tiered KV Offload Lookup Delay Accumulationsynchronousseconds/smodel_name and engine
vllm:kv_offload_tiering_lookup_async_delay_seconds_sumKV Offloading — Tiered KV Offload Lookup Delay Accumulationasynchronousseconds/smodel_name and engine

NIXL Connector

Prometheus metricNetdata chartDimensionUnitScope
vllm:nixl_xfer_time_seconds_bucketNIXL Connector — NIXL Transfer Durationmatching seriesobservations/smodel_name and engine
vllm:nixl_post_time_seconds_bucketNIXL Connector — NIXL Transfer Post Timematching seriesobservations/smodel_name and engine
vllm:nixl_bytes_transferred_bucketNIXL Connector — NIXL Transfer Sizematching seriesobservations/smodel_name and engine
vllm:nixl_num_descriptors_bucketNIXL Connector — NIXL Transfer Descriptorsmatching seriesobservations/smodel_name and engine
vllm:nixl_xfer_time_seconds_countNIXL Connector — Successful NIXL Transferstransferstransfers/smodel_name and engine
vllm:nixl_xfer_time_seconds_sumNIXL Connector — Completed NIXL Transfer Timetransferseconds/smodel_name and engine
vllm:nixl_post_time_seconds_sumNIXL Connector — Completed NIXL Transfer Timepostseconds/smodel_name and engine
vllm:nixl_bytes_transferred_sumNIXL Connector — NIXL Transfer Throughputtransferredbytes/smodel_name and engine
vllm:nixl_num_descriptors_sumNIXL Connector — NIXL Descriptor Throughputdescriptorsdescriptors/smodel_name and engine
vllm:nixl_num_failed_transfers_totalNIXL Connector — NIXL Failurestransfersfailures/smodel_name and engine
vllm:nixl_num_failed_notifications_totalNIXL Connector — NIXL Failuresnotificationsfailures/smodel_name and engine
vllm:nixl_num_kv_expired_reqs_totalNIXL Connector — NIXL Requests with Expired KVexpiredrequests/smodel_name and engine

HF3FS Connector

Prometheus metricNetdata chartDimensionUnitScope
vllm:hf3fs_save_duration_seconds_bucketHF3FS Connector — HF3FS Save Durationmatching seriesobservations/smodel_name and engine
vllm:hf3fs_load_duration_seconds_bucketHF3FS Connector — HF3FS Load Durationmatching seriesobservations/smodel_name and engine
vllm:hf3fs_save_duration_seconds_countHF3FS Connector — HF3FS Transfer Measurementssavesoperations/smodel_name and engine
vllm:hf3fs_load_duration_seconds_countHF3FS Connector — HF3FS Transfer Measurementsloadsoperations/smodel_name and engine
vllm:hf3fs_save_duration_seconds_sumHF3FS Connector — Completed HF3FS Transfer Timesavesseconds/smodel_name and engine
vllm:hf3fs_load_duration_seconds_sumHF3FS Connector — Completed HF3FS Transfer Timeloadsseconds/smodel_name and engine
vllm:hf3fs_num_failed_save_totalHF3FS Connector — HF3FS Transfer Failuressavesfailures/smodel_name and engine
vllm:hf3fs_num_failed_load_totalHF3FS Connector — HF3FS Transfer Failuresloadsfailures/smodel_name and engine

Mooncake Connector

Prometheus metricNetdata chartDimensionUnitScope
vllm:mooncake_store_operation_time_seconds_bucketMooncake Connector / Operation Timing — Mooncake Store Operation Timematching seriesobservations/smodel_name and engine and operation and status
vllm:mooncake_store_operation_totalMooncake Connector / Operation Timing — Mooncake Store Operationsoperationsoperations/smodel_name and engine and operation and status
vllm:mooncake_store_operation_time_seconds_sumMooncake Connector / Operation Timing — Completed Mooncake Store Operation Timetimeseconds/smodel_name and engine and operation and status
vllm:mooncake_store_operation_keys_totalMooncake Connector / Operation Volume — Mooncake Store Key Throughputkeyskeys/smodel_name and engine and operation and status
vllm:mooncake_store_operation_bytes_totalMooncake Connector / Operation Volume — Mooncake Store Byte Throughputbytesbytes/smodel_name and engine and operation and status
vllm:mooncake_store_operation_failed_keys_totalMooncake Connector / Operation Volume — Mooncake Store Failed Keysfailedkeys/smodel_name and engine and operation and status

Speculative Decoding

Prometheus metricNetdata chartDimensionUnitScope
vllm:spec_decode_num_drafts_totalSpeculative Decoding — Draftsdraftsdrafts/smodel_name and engine
vllm:spec_decode_num_draft_tokens_totalSpeculative Decoding — Draft Token Outcomesproposedtokens/smodel_name and engine
vllm:spec_decode_num_accepted_tokens_totalSpeculative Decoding — Draft Token Outcomesacceptedtokens/smodel_name and engine
vllm:spec_decode_num_accepted_tokens_per_pos_totalSpeculative Decoding — Accepted Tokens by Positionvalues of label positiontokens/smodel_name and engine

Diffusion Decoding

Prometheus metricNetdata chartDimensionUnitScope
vllm:diffusion_num_denoising_steps_totalDiffusion Decoding — Diffusion Denoising Stepsstepssteps/smodel_name and engine
vllm:diffusion_num_canvas_positions_totalDiffusion Decoding — Diffusion Canvas Positionspositionspositions/smodel_name and engine
vllm:diffusion_num_committed_tokens_totalDiffusion Decoding — Diffusion Committed Tokenscommittedtokens/smodel_name and engine

WebSocket Service

Prometheus metricNetdata chartDimensionUnitScope
vllm:websocket_connections_activeWebSocket Service — Active WebSocket Connectionsactiveconnectionscollector job service
vllm:websocket_connections_totalWebSocket Service — WebSocket Connection Lifecycleopenedconnections/scollector job service
vllm:websocket_connection_duration_seconds_countWebSocket Service — WebSocket Connection Lifecycleclosedconnections/scollector job service
vllm:websocket_connection_duration_seconds_bucketWebSocket Service — WebSocket Connection Durationmatching seriesobservations/scollector job service
vllm:websocket_connection_duration_seconds_sumWebSocket Service — Completed WebSocket Connection Timetimeseconds/scollector job service

Tool Parsing

Prometheus metricNetdata chartDimensionUnitScope
vllm:tool_call_parser_invocations_totalTool Parsing — Tool Parser Invocationsinvocationsinvocations/smodel_name and request_type and mode and outcome

FastAPI HTTP instrumentation

Curated request outcomes, latency, in-progress work, measurements, and body traffic from instrumented FastAPI services.

Supporting profile for vLLM. Included when the endpoint exposes vLLM's native HTTP transport metrics; Ray-only metrics do not activate it.

FastAPI

Prometheus metricNetdata chartDimensionUnitScope
http_requests_totalFastAPI / HTTP Endpoints — HTTP Request Outcomesvalues of label statusrequests/sFastAPI HTTP endpoint and method
http_request_duration_seconds_bucketFastAPI / HTTP Endpoints — HTTP Request Durationmatching seriesobservations/sFastAPI HTTP endpoint and method
http_request_duration_seconds_countFastAPI / HTTP Endpoints — HTTP Request Measurementsrequestsrequests/sFastAPI HTTP endpoint and method
http_request_duration_seconds_sumFastAPI / HTTP Endpoints — HTTP Completed Request Timetimeseconds/sFastAPI HTTP endpoint and method
http_request_duration_highr_seconds_bucketFastAPI / HTTP Service — High-Resolution HTTP Request Durationmatching seriesobservations/sinstrumented FastAPI service
http_request_duration_highr_seconds_countFastAPI / HTTP Service — HTTP Request Measurementsrequestsrequests/sinstrumented FastAPI service
http_request_duration_highr_seconds_sumFastAPI / HTTP Service — HTTP Completed Request Timetimeseconds/sinstrumented FastAPI service
http_requests_inprogressFastAPI / HTTP In Progress — HTTP Requests In ProgressrequestsrequestsFastAPI service, refined to HTTP endpoint and method when in-progress labels are enabled
http_request_size_bytes_sumFastAPI / HTTP Body Traffic — HTTP Body Throughputrequestbytes/sFastAPI HTTP route handler
http_response_size_bytes_sumFastAPI / HTTP Body Traffic — HTTP Body Throughputresponsebytes/sFastAPI HTTP route handler

Process runtime

Curated CPU, memory, file-descriptor, and lifecycle metrics exported by the monitored process.

Supporting profile for vLLM. Included when the endpoint exposes vLLM's native process metrics; Ray-only metrics do not activate it.

Process Runtime

Prometheus metricNetdata chartDimensionUnitScope
process_cpu_seconds_totalProcess Runtime — Process CPU Usageusedcorescollector job process
process_resident_memory_bytesProcess Runtime — Process Resident Memoryresidentbytescollector job process
process_virtual_memory_bytesProcess Runtime — Process Virtual Memoryvirtualbytescollector job process
process_open_fdsProcess Runtime — Open File Descriptorsopenfdscollector job process
process_max_fdsProcess Runtime — File Descriptor Limitlimitfdscollector job process

Python garbage collection

Curated collection, uncollectable-object, and collection-run metrics for each Python garbage-collector generation.

Supporting profile for vLLM. Included when the endpoint exposes vLLM's native Python garbage-collection metrics; Ray-only metrics do not activate it.

Process Runtime

Prometheus metricNetdata chartDimensionUnitScope
python_gc_objects_collected_totalProcess Runtime / Python GC — Collected Objectscollectedobjects/sPython garbage-collector generation
python_gc_objects_uncollectable_totalProcess Runtime / Python GC — Uncollectable Objectsuncollectableobjects/sPython garbage-collector generation
python_gc_collections_totalProcess Runtime / Python GC — Collectionscollectionscollections/sPython garbage-collector generation

Troubleshooting

Debug Mode

Important: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.

To troubleshoot issues with the prometheus collector, run the go.d.plugin with the debug option enabled. The output should give you clues as to why the collector isn't working.

  • Navigate to the plugins.d directory, usually at /usr/libexec/netdata/plugins.d/. If that's not the case on your system, open netdata.conf and look for the plugins setting under [directories].

    cd /usr/libexec/netdata/plugins.d/
  • Switch to the netdata user.

    sudo -u netdata -s
  • Run the go.d.plugin to debug the collector:

    ./go.d.plugin -d -m prometheus

    To debug a specific job:

    ./go.d.plugin -d -m prometheus -j jobName

Getting Logs

If you're encountering problems with the prometheus collector, follow these steps to retrieve logs and identify potential issues:

  • Run the command specific to your system (systemd, non-systemd, or Docker container).
  • Examine the output for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.

System with systemd

Use the following command to view logs generated since the last Netdata service restart:

journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep prometheus

System without systemd

Locate the collector log file, typically at /var/log/netdata/collector.log, and use grep to filter for collector's name:

grep prometheus /var/log/netdata/collector.log

Note: This method shows logs from all restarts. Focus on the latest entries for troubleshooting current issues.

Docker Container

If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:

docker logs netdata 2>&1 | grep prometheus

Disappearing or sparse metrics not clearing alerts

The Prometheus collector detects metrics that disappear from a successful scrape response. Generated charts and individual dimensions expire after their configured successful-cycle lifetime. An expired chart or dimension makes its alerts REMOVED; this is not a normal CLEAR transition and does not send a recovery notification. Export an explicit normal value (for example 0) whenever an alert needs a reliable recovery transition. A failed scrape does not advance the expiry lifetime; use the generic collector collection-failure alert to detect that separate condition.


Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.