Configure your libp2p node with Prometheus metrics:
import { createLibp2p } from 'libp2p'import { prometheusMetrics } from '@libp2p/prometheus-metrics'const node = await createLibp2p({ metrics: prometheusMetrics()}) Copy
import { createLibp2p } from 'libp2p'import { prometheusMetrics } from '@libp2p/prometheus-metrics'const node = await createLibp2p({ metrics: prometheusMetrics()})
Then use the prom-client module to supply metrics to the Prometheus/Graphana client using your http framework:
prom-client
import client from 'prom-client'async function handler (request, h) { return h.response(await client.register.metrics()) .type(client.register.contentType)} Copy
import client from 'prom-client'async function handler (request, h) { return h.response(await client.register.metrics()) .type(client.register.contentType)}
All Prometheus metrics are global so there's no other work required to extract them.
Some useful queries are:
rate(libp2p_data_transfer_bytes_total[30s]) Copy
rate(libp2p_data_transfer_bytes_total[30s])
rate(process_cpu_user_seconds_total[30s]) * 100 Copy
rate(process_cpu_user_seconds_total[30s]) * 100
nodejs_memory_usage_bytes Copy
nodejs_memory_usage_bytes
libp2p_kad_dht_wan_query_time_seconds Copy
libp2p_kad_dht_wan_query_time_seconds
or
libp2p_kad_dht_lan_query_time_seconds Copy
libp2p_kad_dht_lan_query_time_seconds
rate(libp2p_tcp_dialer_errors_total[30s]) Copy
rate(libp2p_tcp_dialer_errors_total[30s])
Configure your libp2p node with Prometheus metrics:
Then use the
prom-client
module to supply metrics to the Prometheus/Graphana client using your http framework:All Prometheus metrics are global so there's no other work required to extract them.
Queries
Some useful queries are:
Data sent/received
CPU usage
Memory usage
DHT query time
or
TCP transport dialer errors