# lnd_exporter **Repository Path**: mirrors_rtreffer/lnd_exporter ## Basic Information - **Project Name**: lnd_exporter - **Description**: lightning network daemon exporter - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-22 - **Last Updated**: 2025-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # `lnd_exporter` - lightning node metrics `lnd_exporter` collects and exports metrics from a lightning node. All metrics have a `nodekey` label with the pubkey current node. The exporter is split into multiple collectors | flag | default | description | | ------------------------------ | ------- | ----------- | | `--collector.basics` | true | `lnd_info`/`lnd_node_info` and generic sync information of the node | | `--collector.network` | true | `lnd_graph_*` network based metrics | | `--collector.channels` | true | `lnd_channel_*` metrics | | `--collector.channels.closed` | true | `lnd_channel_*` metrics for closed channels | | `--collector.channels.pending` | true | `lnd_channel_*` metrics for pending channels | | `--collector.peers` | true | `lnd_peer_*` metrics | | `--collector.wallet` | true | `lnd_wallet_*` metrics | | `--collector.peer.nodes` | true | `lnd_remote_node_*` metrics | | `--collector.earnings` | false | `lnd_fwd_*` metrics | ## exporter metrics | metric | label | meaning | | -------- | ------- | ------- | | `lnd_up` | `value` | `1` if lnd can be reached | ## collector.basics This collector is based on `lncli getinfo`. It gives a quick overview of the local node. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_info` | `value` | `1` | | | `version` | lnd software version | | | `commit` | lnd software git commit | | `lnd_node_info` | `value` | `1` | | | `alias` | node alias | | | `color` | node color | | | `chain` | `bitcoin` | | | `network` | `mainnet` / `testnet` | | `lnd_chain_synced` | `value` | `1` if the blockchain is synced up | | `lnd_graph_synced` | `value` | `1` if the lightning network graph is synced up | | `lnd_latest_block_time_seconds` | `value` | `unix time` of the last seen bitcoin block | | `lnd_block_height_total` | `value` | the blockchain height | | `lnd_peers_total` | `value` | number of node peers | | `lnd_channels_total` | `value` | number of channels with a given set of properties | | | `state` | `pending`, `active`, `inactive` | ## collector.network This collector is based on `lncli getnetworkinfo`. It gives a quick overview of the lightning network graph. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_graph_nodes` | `value` | total number of lightning node | | `lnd_graph_channels` | `value` | total number of lightning node | | `lnd_graph_max_degree` | `value` | maximum nbumber of channels on one node | | `lnd_graph_capacity_satoshis` | `value` | total number of satoshies in the lightning network | | `lnd_graph_median_channel_size_satoshis` | `value` | median channel size in the lightning network | | `lnd_graph_min_channel_size_satoshis` | `value` | minimum channel size in the lightning network | | `lnd_graph_max_channel_size_satoshis` | `value` | maximum channel size in the lightning network | ## collector.channels Thid collector is based on `lncli listchannels` and `lncli feereport`. It gives an overview of all existing channels. All metrics have a `channel_id` label to group channel related data. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_channel_active` | `value` | `1` if the channel is active | | `lnd_channel_info` | `value` | `1` | | | `remotekey` | public key of the remote end | | | `channel_point` | the channel point `txid:index` | | | `public` | `true`/`false` if the channel is public/private | | | `opened` | `local`/`remote` if the channel was opened by the local/remote node | | | `state` | `open` | | | `commit_type` | channel commitment type | | | `close_address` | bitcoin address used on close | | `lnd_channel_capacity_satoshis` | `value` | the channel capacity | | `lnd_channel_local_balace_satoshis` | `value` | the local channel capacity | | `lnd_channel_remote_balace_satoshis` | `value` | the remote channel capacity | | `lnd_channel_unsettled_satoshis` | `value` | the sum of open HTLC transactions | | | `direction` | `incoming`/`outgoing` | | `lnd_channel_sent_satoshis_total` | `value` | the sum of sent satoshis | | `lnd_channel_received_satoshis_total` | `value` | the sum of received satoshis | | `lnd_channel_lifetime_seconds` | `value` | the lifetime of the channel | | `lnd_channel_uptime_seconds` | `value` | the uptime of the channel | | `lnd_channel_updates_total` | `value` | the number of channel updates | | `lnd_channel_base_fee_satoshis` | `value` | the local base fee of the channel | | `lnd_channel_fee_rate` | `value` | the fee rate of the channel as a ratio of sat per sat, `[0..1]` | ## collector.channels.closed This collector is based on `lncli closedchannels`. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_channel_info` | `value` | `1` | | | `remotekey` | public key of the remote end | | | `channel_id` | the channel id | | | `channel_point` | the channel point `txid:index` | | | `state` | `closed` | | | `opened` | `local`/`remote` if the channel was opened by the local/remote node | | | `closed` | `local`/`remote` if the channel was closed by the local/remote node | | | `close_type` | `cooperative`/`local_force`/`remote_force`/`breach`/`cancelled`/`abandoned` | **TODO**: this collector does not yet handle balances or resolutions. ## collector.channels.pending This collector is based on `lncli pendingchannels`. Channels are keyed by `remotekey` and `channel_point`. **NOTE**: the balance/capacity is namespaces as `lnd_pending_channel_*` due to a lack of `channel_id`. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_channel_info` | `value` | `1` | | | `remotekey` | public key of the remote end | | | `channel_point` | the channel point `txid:index` | | | `state` | `pending` | | | `opened` | `local`/`remote` if the channel was opened by the local/remote node | | | `commit_type` | channel commitment type | | `lnd_pending_channel_capacity_satoshis` | `value` | the channel capacity | | `lnd_pending_channel_local_balace_satoshis` | `value` | the local channel capacity | | `lnd_pending_channel_remote_balace_satoshis` | `value` | the remote channel capacity | ## collector.peers This collector is based on `lncli listpeers`. All metrics are keyed by `remotekey`. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_peer_info` | `value` | `1` | | | `open` | `local`/`remote` depending on who opened the connection | | | `graph_sync` | `unknown`/`active`/`passive`/`pinned` graph sync mode | | `lnd_peer_address` | `value` | `1` | | | `address` | public key of the remote end | | `lnd_peer_sent_bytes_total` | `value` | Total bytes sent over the network to this peer | | `lnd_peer_received_bytes_total` | `value` | Total bytes received over the network from this peer | | `lnd_peer_sent_satoshis_total` | `value` | Total satoshis sent to this peer | | `lnd_peer_received_satoshis_total` | `value` | Total satoshis received from this peer | | `lnd_peer_reconnects_total` | `value` | Total number of reconnects to a peer | | `lnd_peer_last_reconnect_time_seconds` | `value` | Unix time of the last reconnect | ## collector.peer.nodes | metric | label | meaning | | -----------| ------- | ------- | | `lnd_peer_node_info` | `value` | `1` | | | `remotekey` | node alias | | | `alias` | node alias | | | `color` | node color | | `lnd_peer_node_address` | `value` | `1` | | | `address` | public key of the remote end | | `lnd_channel_incoming_base_fee_satoshis` | `value` | the local base fee of the channel | | `lnd_channel_incoming_fee_rate` | `value` | the fee rate of the channel as a ratio of sat per sat, `[0..1]` | ## collector.wallet | metric | label | meaning | | -----------| ------- | ------- | | `lnd_wallet_balance_satoshis` | `value` | the wallet balance | | | `account` | `default` usually | | | `confirmed` | `true`/`false` if the transaction is confirmed/unconfirmed | ## collector.earnings **WARNING**: This collector fetches all historical forwardings. This will take a while on startup. | metric | label | meaning | | -----------| ------- | ------- | | `lnd_fwd_fee_satoshis_total` | `value` | the total amount of fees earned | | | `channel_id` | channel id | | `lnd_fwd_sent_satoshis_total` | `value` | the total amount of satoshis sent | | | `channel_id` | channel id | | `lnd_fwd_received_satoshis_total` | `value` | the total amount of satoshis received | | | `channel_id` | channel id | # Under investigation The following command reveal interesting informaiton but might be too expensive to add - `lncli listinvoices`: list of invoices. Patches welcome. - `lncli describegraph`: full graph, prometheus can handle the cardinality but export time is too long. - `lncli getnodemetrics`: computes betweenness metric on a all nodes. Export time is too high.