Introduction
Blockchain technology is based on a decentralized model, in which peers collaborate and build trust over a business network. Each peer organization can be represented by one or more nodes and this network of nodes is used to broadcast transactions and reach consensus for each transaction submitted. Each node is supposed to be self-sufficient with the ability to serve any of the distributed applications and/or existing enterprise applications. However, the health of each blockchain node and the entire blockchain network needs to be monitored to ensure truly decentralized and robust operations.
What kind of monitoring does blockchain need?
A typical blockchain network comprises of a set of interconnected nodes that act as peers. These nodes usually are hosted on cloud/on premise infrastructure where the blockchain runtime is set up natively on a virtual machine (VM) or by using containerization technologies such as Docker. Transactions submitted to the blockchain network are broadcast to all peers and the new blocks created are propagated, so that all peers have an updated copy of the shared ledger.
To gain insight to the block, its transaction related events and associated metadata, monitoring of any one of the peers is sufficient. And that is usually done by using blockchain explorer, which listens to the events and provides some visualization of the number of transactions received, queued, processed and finally grouped into a new block. However, this level of monitoring does not provide any clue to the usage of resources on that node or the health of other nodes or the latency experienced within the blockchain network.
Another key element that needs to be monitored to gain end-to-end visibility of a blockchain based solution is the off-chain components that comprises of the dApp (decentralized application) layer. The dApp layer comprises of user interface, storage and API (Application Program Interface) SDK (Software Development Kit) components, through which the interaction with a blockchain node is enabled.