This overview provides a list of Orbs network node metrics that we deem significant because they provide valuable insights into node and virtual chain status. We expect and encourage the Orbs community to develop multiple monitoring tools for the nodes, that can serve Validators, Guardians, and app developers. The following metrics might help with this task.
Our goal is to recommend metrics for 4 types of monitoring:
- Single node monitoring - mostly relevant for Validators to monitor their own node
- Virtual chain monitoring - mostly relevant for applications to monitor the performance of the virtual chain they paid for
- Network monitoring - mostly relevant for Guardians to monitor the performance of the entire network
- PoS monitoring - relevant for all parties interested in network status (this type is not discussed in this document)
All metrics are available in JSON and Prometheus format:
- JSON at
http://$NODE_IP/vchains/$CHAIN_ID/metrics.json
(andhttp://$NODE_IP/vchains/$CHAIN_ID/metrics
) - Prometheus at
http://$NODE_IP/vchains/$CHAIN_ID/metrics.prometheus
You can see live examples from Orbs validator node here and here
Please note, that all metrics are available per virtual chain, and when we are talking about the network we mean any single virtual chain and not all virtual chains.
Retrieved from:
BlockStorage.BlockHeight
(sincev1.0.0
)BlockSync.ProcessingBlocksState.LastCommitted.TimeNano
(sincev1.0.0
)
Meaning:
- Indicates liveness of the system
- Indicates if the node is in sync
Relevant values:
- Block height should advance at least once in 30s period. Does vary greatly depending on traffic, with constant traffic the blocks are closed as soon as new transactions arrive.
- Last committed time should be no farther than 30 minutes in the past or the node will be considered out of sync.
Useful to app developers and node operators.
Retrieved from:
TransactionPool.PendingPool.TimeSpentInQueue.Millis
(sincev1.0.0
)
Meaning and relevant values:
- Indicates liveness of the system and response time. The shorter the better. TBD: clear range here (Good, Acceptable, Alert)
Useful to app developers and node operators.
Retrieved from:
TransactionPool.CommitRate
(sincev2.0.1
) (wasTransactionPool.CommitRate.PerSecond
sincev1.0.0
)
Meaning:
- Amount of transactions from committed blocks that were moved from pending pool to committed pool.
Useful to app developers and node operators.
Retrieved from:
PublicA[i].Transactions
(sincev2.0.1
) (wasPublicAPI.Transactions.PerSecond
sincev1.1.0
)
Meaning:
- Indicates the number of transactions received by virtual chain public API.
Useful to app developers and node operators.
Retrieved from:
PublicApi.Queries
(sincev2.0.1
) (wasPublicAPI.Queries.PerSecond
sincev1.1.0
)
Meaning:
- Indicates the number of queries received by virtual chain public API. Queries differ from transactions because they only use read-only methods of the smart contract and does not alter the state, therefore the node can serve many more queries than it can process transactions.
Useful to app developers and node operators.
Retrieved from:
Ethereum.Node.LastBlock
(sincev1.0.0
)Ethereum.Node.Sync.Status
(sincev1.0.0
)Ethereum.Node.TransactionReceipts.Status
(sincev1.0.0
)
Meaning:
- Indicates whether Ethereum node operates properly.
Relevant values:
success
for sync status and transaction receipts status (anything should be treated as an error)- A number for last block
Useful to node operators.
Retrieved from:
Gossip.IncomingConnection.Active.Count
(sincev1.0.0
)
Meaning:
- Indicates connectivity with network peers.
Relevant values:
- Equals (N-1) when N is the number of nodes in the network.
Useful to node operators.
Retrieved from:
OS.Process.CPU.Percent
(sincev2.0.1
) (wasOS.Process.CPU.PerCent
sincev1.0.0
)OS.Process.Memory.Bytes
(sincev1.0.0
)BlockStorage.FileSystemSize.Bytes
(sincev1.0.0
)
Meaning:
- Indicates the amount of CPU the virtual chain process consumes.
- Indicates the amount of RAM the virtual chain process consumes.
- Indicates the amount of storage the virtual chain process consumes.
Relevant values:
- For CPU: below 50% - green, below 70% yellow, above - red
- For RAM: below 1Gb - green, below 2Gb yellow, above - red
- For disk: below 50Gb - green, below 70Gb yellow, above - red
Useful to node operators.
Retrieved from:
Version.Commit
(sincev1.0.0
)Version.Semantic
(sincev1.0.0
)
Meaning:
- Git commit
- semantic version of the binary.
Relevant values:
- Specific to the tag on Github that corresponds with semantic version
Useful to node operators