private void sendNodeStatsReport() {
    final boolean isMiningEnabled;
    if (miningCoordinator instanceof CliqueMiningCoordinator) {
      isMiningEnabled = ((CliqueMiningCoordinator) miningCoordinator).isSigner();
    } else {
      isMiningEnabled = miningCoordinator.isMining();
    }
    final boolean isSyncing = syncState.isInSync();
    final long gasPrice = suggestGasPrice(blockchainQueries.getBlockchain().getChainHeadBlock());
    final long hashrate = miningCoordinator.hashesPerSecond().orElse(0L);
    // safe to cast to int since it isn't realistic to have more than max int peers
    final int peersNumber =
        (int) protocolManager.ethContext().getEthPeers().streamAvailablePeers().count();

    final NodeStatsReport nodeStatsReport =
        ImmutableNodeStatsReport.builder()
            .id(enodeURL.getNodeId().toHexString())
            .stats(true, isMiningEnabled, hashrate, peersNumber, gasPrice, isSyncing, 100)
            .build();
    sendMessage(webSocket, new EthStatsRequest(STATS, nodeStatsReport));
  }
Sends information about the node (is mining, is syncing, etc.)
ethereum/ethstats/src/main/java/org/hyperledger/besu/ethstats/EthStatsService.java