Monitoring (Nagios) plugin for checking cgminer miner devices statistics from the cgminer API.
Tested devices:
- DR5 (missing power consumption default and ideal hashrate percentage)
- S9
- S9k (missing power consumption default)
- S9se
- S15
- S17 (and S17 BOS+ firmware)
- Z9-mini (missing power consumption default and ideal hashrate percentage)
- Whatsminer (missing power consumption default and ideal hashrate percentage)
Devices missing power consumption defaults will not calculate profitability unless --device_power
is used.
check_cgminer --help
check_cgminer - Nagios monitoring plugin for cgminer API
Usage: check_cgminer [-v|--version] [-H|--host HOST] [-P|--port PORT]
[-t|--temp_warn NUMBER] [-T|--temp_crit NUMBER]
[-r|--hash_warn NUMBER] [-R|--hash_crit NUMBER]
[--hash_maximum NUMBER]
[-i|--hash_percent_below_ideal_warn NUMBER]
[-I|--hash_percent_below_ideal_crit NUMBER]
[--hashunit STRING] [-f|--fan_low_warn NUMBER]
[-F|--fan_low_crit NUMBER] [-n|--fan_high_warn NUMBER]
[-N|--fan_high_crit NUMBER] [--volt_high_warn NUMBER]
[--volt_high_crit NUMBER] [--freq_high_warn NUMBER]
[--freq_high_crit NUMBER] [-d|--dynamic_power]
[--device_power NUMBER] [--electric_rate NUMBER]
[--prof_warn NUMBER] [--prof_crit NUMBER]
[--block_reward NUMBER] [--mining_fee_reward NUMBER]
[--pool_fee NUMBER]
Return Nagios formatted string based on cgminer API returned values
Available options:
-h,--help Show this help text
-v,--version Show version information
-H,--host HOST Hostname of cgminer API (default: "127.0.0.1")
-P,--port PORT Port of cgminer API (default: "4028")
-t,--temp_warn NUMBER Warning temperature threshold in
Celsius (default: 90.0)
-T,--temp_crit NUMBER Critical temperature threshold in
Celsius (default: 100.0)
-r,--hash_warn NUMBER Warning hash rate threshold (default: 4000.0)
-R,--hash_crit NUMBER Critical hash rate threshold (default: 3000.0)
--hash_maximum NUMBER Maximum Hashrate (Used with performance
data) (default: 10000.0)
-i,--hash_percent_below_ideal_warn NUMBER
Warning hash percent below ideal hash rate
threshold (default: 0.95)
-I,--hash_percent_below_ideal_crit NUMBER
Critical hash percent below ideal hash rate
threshold (default: 0.5)
--hashunit STRING Hashing unit of measure (default: "Ghs")
-f,--fan_low_warn NUMBER Warning low fan speed threshold in
RPMs (default: 999.0)
-F,--fan_low_crit NUMBER Critical low fan speed threshold in
RPMs (default: 500.0)
-n,--fan_high_warn NUMBER
Warning high fan speed threshold in
RPMs (default: 9000.0)
-N,--fan_high_crit NUMBER
Critical high fan speed threshold in
RPMs (default: 10000.0)
--volt_high_warn NUMBER Warning high voltage threshold in Volts (Only
supported for S9 miners) (default: 20.0)
--volt_high_crit NUMBER Critical high voltage threshold in Volts (Only
supported for S9 miners) (default: 20.0)
--freq_high_warn NUMBER Warning high frequency threshold in Mhz (Only
supported for S9 miners) (default: 5000.0)
--freq_high_crit NUMBER Critical high frequency threshold in Mhz (Only
supported for S9 miners) (default: 5000.0)
-d,--dynamic_power Enable dynamic power strategy calculation (Only
supported for S17 miners)
--device_power NUMBER Override estimated device power consumption in Watt
--electric_rate NUMBER Default electricity rate in USD/kWh (default: 0.1188)
--prof_warn NUMBER Warning profitability threshold in
USD/day (default: 0.25)
--prof_crit NUMBER Critical profitability threshold in
USD/day (default: 0.0)
--block_reward NUMBER Override the block reward (default: API lookup)
--mining_fee_reward NUMBER
Override the mining fee reward (default: API lookup)
--pool_fee NUMBER Pool fee percentage. Ex: 0.01 = 1% (default: 0.0)
$ check_cgminer -H 10.0.0.163 --pool_fee "0.02"
OK: Profitability is 4.9064 USD/day, Max temp: 80.0 C, Min hashrate: 18647.21 Ghs, Min fanspeed: 3240.0 RPM | fan4=4320.0;;;0.0;20000.0 fan3=4320.0;;;0.0;20000.0 fan2=3240.0;;;0.0;20000.0 fan1=3240.0;;;0.0;20000.0 chain_rate3=18779.15;4000.0;3000.0;0.0;10000.0 chain_rate2=18647.21;4000.0;3000.0;0.0;10000.0 chain_rate1=19284.91;4000.0;3000.0;0.0;10000.0 temp3_3=76.0;90.0;100.0;20.0;120.0 temp3_2=80.0;90.0;100.0;20.0;120.0 temp3_1=78.0;90.0;100.0;20.0;120.0 temp2_3=63.0;90.0;100.0;20.0;120.0 temp2_2=64.0;90.0;100.0;20.0;120.0 temp2_1=65.0;90.0;100.0;20.0;120.0 temp3=58.0;90.0;100.0;20.0;120.0 temp2=61.0;90.0;100.0;20.0;120.0 temp1=61.0;90.0;100.0;20.0;120.0 profitability=4.9063987416773385;0.25;0.0;; WorkMode=2.0;;;0.0;2.0
check_cgminer
will try to automatically detect the miners profitability by getting several factors.
- Power consumption (Attempts to auto detect miner and use hard coded wattage values by default)
- Electricity rate (Uses USA national average by default)
- Bitcoin price (Collected from https://apiv2.bitcoinaverage.com/)
- Difficulty (Collected from https://api-r.bitcoinchain.com/)
- Block reward (Collected from https://api-r.bitcoinchain.com/)
- Block fees collected (average) (Collected from https://api-r.bitcoinchain.com/)
- Pool fee percentage (Uses 0% fee as default)
If any of the factors fail to be collected then profitability will not be calculated.
The check_cgminer
Snap is intended to privide a easy way to get starting with this check. However, there is a known issue with the default nagios
user for most nagios setups.
check_cgminer
requires access to the home directory to quickly calculate profitability for miners. The nagios
user requires a home directory "bind mount" because of a limitation of strict confinenment of snaps. See documentation on snapcraft.io for applying the bind mount.. Also, see #1 for history about this issue.
These commands worked for me in allowing Nagios to work with check_cgminer
on a standard Ubuntu 20.04 install.
$ sudo mkdir -p /home/nagios
$ sudo mount --bind /var/lib/nagios /home/nagios
$ cp /etc/passwd passwd.backup
$ awk -vold=$"/var/lib/nagios" -vnew=$"/home/nagios" -F: ' BEGIN {OFS = ":"} \
{sub(old,new,$6);print}' /etc/passwd > passwd.new
$ sudo cp passwd.new /etc/passwd