prysm-pulse/monitoring/clientstats/README.md
Raul Jordan 9935ca3733
Move Shared/ Subpackages Into Monitoring/ Folder (#9591)
* add tracing

* monitoring pkg

* move prom

* Add client stats

Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
2021-09-14 20:59:51 +00:00

122 lines
15 KiB
Markdown

# Client stats reporting
## Specification
The request JSON object is a non-nested object with the following properties. The process refers to which process data is associated with the request.
|Property |Type |Process |Source |Description |
|-----------------------------------|-------------|---------------------|-------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|version |int |Every request |hard-coded |Stats data specification version, current only `1` is accepted |
|timestamp |long |Every request |system time |Unix timestamp in milliseconds |
|process |string (enum)|Every request |hard-coded / cli flag |Enum values: validator, beaconnode, system |
|cpu_process_seconds_total |long |beaconnode, validator|prom: process_cpu_seconds_total |CPU seconds consumed by the process |
|memory_process_bytes |long |beaconnode, validator|prom: process_resident_memory_bytes |Number of bytes allocated to the process |
|client_name |string |beaconnode, validator|hard-coded to "prysm" |Name of the client type. Ex: prysm, lighthouse, nimbus, teku |
|client_version |string |beaconnode, validator|prom: prysm_version (label: version) |Client version. Ex: 1.0.0-beta.0 |
|client_build |int |beaconnode, validator|prom: prysm_version (label: buildDate) |Integer representation of build for easier comparison |
|disk_beaconchain_bytes_total |long |beaconchain |prom: bcnode_disk_beaconchain_bytes_total |The amount of data consumed on disk by the beacon chain's database. |
|network_libp2p_bytes_total_receive |long |beaconchain |(currently unsupported) |The number of bytes received via libp2p traffic |
|network_libp2p_bytes_total_transmit|long |beaconchain |(currently unsupported) |The number of bytes transmitted via libp2p traffic |
|network_peers_connected |int |beaconchain |(currently unsupported) |The number of peers currently connected to the beacon chain |
|sync_eth1_connected |bool |beaconchain |prom: powchain_sync_eth1_connected |Whether or not the beacon chain node is connected to a _synced_ eth1 node |
|sync_eth2_synced |bool |beaconchain |prom: beacon_clock_time_slot (true if this equals prom: beacon_head_slot)|Whether or not the beacon chain node is in sync with the beacon chain network |
|sync_beacon_head_slot |long |beaconchain |prom: beacon_head_slot |The head slot number. |
|sync_eth1_fallback_configured |bool |beaconchain |prom: powchain_sync_eth1_fallback_configured |Whether or not the beacon chain node has a fallback eth1 endpoint configured. |
|sync_eth1_fallback_connected |bool |beaconchain |prom: powchain_sync_eth1_fallback_connected |Whether or not the beacon chain node is connected to a fallback eth1 endpoint. A true value indicates a failed or interrupted connection with the primary eth1 endpoint.|
|slasher_active |bool |beaconchain |(coming soon) |Whether or not slasher functionality is enabled. |
|sync_eth2_fallback_configured |bool |validator |(currently unsupported) |Whether or not the process has a fallback eth2 endpoint configured |
|sync_eth2_fallback_connected |bool |validator |(currently unsupported) |Weather or not the process has connected to the failover eth2 endpoint. A true value indicates a failed or interrupted connection with the primary eth2 endpoint. |
|validator_total |int |validator |prom: validator_statuses (count of all peers) |The number of validating keys in use. |
|validator_active |int |validator |prom: validator_statuses (count of peers w/ "ACTIVE" status label) |The number of validator keys that are currently active. |
|cpu_cores |int |system |(currently unsupported) |The number of CPU cores available on the host machine |
|cpu_threads |int |system |(currently unsupported) |The number of CPU threads available on the host machine |
|cpu_node_system_seconds_total |long |system |(currently unsupported) |Overall CPU seconds observed on the host machine for all processes. |
|cpu_node_user_seconds_total |long |system |(currently unsupported) |?? |
|cpu_node_iowait_seconds_total |long |system |(currently unsupported) |?? |
|cpu_node_idle_seconds_total |long |system |(currently unsupported) |?? |
|memory_node_bytes_total |long |system |(currently unsupported) |?? |
|memory_node_bytes_free |long |system |(currently unsupported) |?? |
|memory_node_bytes_cached |long |system |(currently unsupported) |?? |
|memory_node_bytes_bufferd |long |system |(currently unsupported) |?? |
|disk_node_bytes_total |long |system |(currently unsupported) |?? |
|disk_node_bytes_free |long |system |(currently unsupported) |?? |
|disk_node_io_seconds |long |system |(currently unsupported) |?? |
|disk_node_reads_total |long |system |(currently unsupported) |?? |
|disk_node_writes_total |long |system |(currently unsupported) |?? |
|network_node_bytes_total_receive |long |system |(currently unsupported) |?? |
|network_node_bytes_total_transmit |long |system |(currently unsupported) |?? |
|misc_node_boot_ts_system |long |system |(currently unsupported) |?? |
|misc_os |string |system |(currently unsupported) |Enum values: lin, win, mac, unk |
The client stats reporter will submit a request object for each process type. The report request may
submit a list of data or a single JSON object.
### Examples
POST https://beaconcha.in/api/v1/stats/$API_KEY/$MACHINE_NAME
**Single object payload**
```json
{
"version": 1,
"timestamp": 11234567,
"process": "validator",
"cpu_process_seconds_total": 1234567,
"memory_process_bytes": 654321,
"client_name": "lighthouse",
"client_version": "1.1.2",
"client_build": 12,
"sync_eth2_fallback_configured": false,
"sync_eth2_fallback_connected": false,
"validator_total": 3,
"validator_active": 2
}
```
**Multiple object payload**
```json
[
{
"version":1,
"timestamp":1618835497239,
"process":"beaconnode",
"cpu_process_seconds_total":6925,
"memory_process_bytes":1175138304,
"client_name":"lighthouse",
"client_version":"1.1.3",
"client_build":42,
"sync_eth2_fallback_configured":false,
"sync_eth2_fallback_connected":false,
"validator_active":1,
"validator_total":1
},
{
"version":1,
"timestamp":1618835497258,
"process":"system",
"cpu_cores":4,
"cpu_threads":8,
"cpu_node_system_seconds_total":1953818,
"cpu_node_user_seconds_total":229215,
"cpu_node_iowait_seconds_total":3761,
"cpu_node_idle_seconds_total":1688619,
"memory_node_bytes_total":33237434368,
"memory_node_bytes_free":500150272,
"memory_node_bytes_cached":13904945152,
"memory_node_bytes_buffers":517832704,
"disk_node_bytes_total":250436972544,
"disk_node_bytes_free":124707479552,
"disk_node_io_seconds":0,
"disk_node_reads_total":3362272,
"disk_node_writes_total":47766864,
"network_node_bytes_total_receive":26546324572,
"network_node_bytes_total_transmit":12057786467,
"misc_node_boot_ts_seconds":1617707420,
"misc_os":"unk"
}
]
```