aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Kochie <superq@gmail.com>2019-10-30 10:28:11 +0100
committerGitHub <noreply@github.com>2019-10-30 10:28:11 +0100
commitf9d2bbe85476395c764188a445997960e4dae718 (patch)
tree7f02b72acdceb853d7b0c0d74d798041e15a5d03
parentd574b4b41b72966a2ace4d6d81195081dfca8301 (diff)
parentd089776e8b81876610f3e07f068ab3fe769ef3b0 (diff)
downloadprometheus_node_collector-f9d2bbe85476395c764188a445997960e4dae718.tar.bz2
prometheus_node_collector-f9d2bbe85476395c764188a445997960e4dae718.tar.xz
prometheus_node_collector-f9d2bbe85476395c764188a445997960e4dae718.zip
Merge pull request #1280 from shaardie/power_supply_class
Introduce Collector for Power Supply Class
-rw-r--r--collector/fixtures/e2e-64k-page-output.txt35
-rw-r--r--collector/fixtures/e2e-output.txt35
-rw-r--r--collector/fixtures/sys.ttar283
-rw-r--r--collector/powersupplyclass.go194
4 files changed, 547 insertions, 0 deletions
diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt
index c7fe830..729deff 100644
--- a/collector/fixtures/e2e-64k-page-output.txt
+++ b/collector/fixtures/e2e-64k-page-output.txt
@@ -2393,6 +2393,40 @@ node_nfsd_server_rpcs_total 18628
2393# HELP node_nfsd_server_threads Total number of NFSd kernel threads that are running. 2393# HELP node_nfsd_server_threads Total number of NFSd kernel threads that are running.
2394# TYPE node_nfsd_server_threads gauge 2394# TYPE node_nfsd_server_threads gauge
2395node_nfsd_server_threads 8 2395node_nfsd_server_threads 8
2396# HELP node_power_supply_capacity capacity value of /sys/class/power_supply/<power_supply>.
2397# TYPE node_power_supply_capacity gauge
2398node_power_supply_capacity{power_supply="BAT0"} 81
2399# HELP node_power_supply_cyclecount cyclecount value of /sys/class/power_supply/<power_supply>.
2400# TYPE node_power_supply_cyclecount gauge
2401node_power_supply_cyclecount{power_supply="BAT0"} 0
2402# HELP node_power_supply_energy_full energy_full value of /sys/class/power_supply/<power_supply>.
2403# TYPE node_power_supply_energy_full gauge
2404node_power_supply_energy_full{power_supply="BAT0"} 4.507e+07
2405# HELP node_power_supply_energy_full_design energy_full_design value of /sys/class/power_supply/<power_supply>.
2406# TYPE node_power_supply_energy_full_design gauge
2407node_power_supply_energy_full_design{power_supply="BAT0"} 4.752e+07
2408# HELP node_power_supply_energy_now energy_now value of /sys/class/power_supply/<power_supply>.
2409# TYPE node_power_supply_energy_now gauge
2410node_power_supply_energy_now{power_supply="BAT0"} 3.658e+07
2411# HELP node_power_supply_info info of /sys/class/power_supply/<power_supply>.
2412# TYPE node_power_supply_info gauge
2413node_power_supply_info{power_supply="AC",type="Mains"} 1
2414node_power_supply_info{capacity_level="Normal",manufacturer="LGC",model_name="LNV-45N1",power_supply="BAT0",serial_number="38109",status="Discharging",technology="Li-ion",type="Battery"} 1
2415# HELP node_power_supply_online online value of /sys/class/power_supply/<power_supply>.
2416# TYPE node_power_supply_online gauge
2417node_power_supply_online{power_supply="AC"} 0
2418# HELP node_power_supply_power_now power_now value of /sys/class/power_supply/<power_supply>.
2419# TYPE node_power_supply_power_now gauge
2420node_power_supply_power_now{power_supply="BAT0"} 5.002e+06
2421# HELP node_power_supply_present present value of /sys/class/power_supply/<power_supply>.
2422# TYPE node_power_supply_present gauge
2423node_power_supply_present{power_supply="BAT0"} 1
2424# HELP node_power_supply_voltage_min_design voltage_min_design value of /sys/class/power_supply/<power_supply>.
2425# TYPE node_power_supply_voltage_min_design gauge
2426node_power_supply_voltage_min_design{power_supply="BAT0"} 1.08e+07
2427# HELP node_power_supply_voltage_now voltage_now value of /sys/class/power_supply/<power_supply>.
2428# TYPE node_power_supply_voltage_now gauge
2429node_power_supply_voltage_now{power_supply="BAT0"} 1.166e+07
2396# HELP node_pressure_cpu_waiting_seconds_total Total time in seconds that processes have waited for CPU time 2430# HELP node_pressure_cpu_waiting_seconds_total Total time in seconds that processes have waited for CPU time
2397# TYPE node_pressure_cpu_waiting_seconds_total counter 2431# TYPE node_pressure_cpu_waiting_seconds_total counter
2398node_pressure_cpu_waiting_seconds_total 14.036781000000001 2432node_pressure_cpu_waiting_seconds_total 14.036781000000001
@@ -2492,6 +2526,7 @@ node_scrape_collector_success{collector="netdev"} 1
2492node_scrape_collector_success{collector="netstat"} 1 2526node_scrape_collector_success{collector="netstat"} 1
2493node_scrape_collector_success{collector="nfs"} 1 2527node_scrape_collector_success{collector="nfs"} 1
2494node_scrape_collector_success{collector="nfsd"} 1 2528node_scrape_collector_success{collector="nfsd"} 1
2529node_scrape_collector_success{collector="powersupplyclass"} 1
2495node_scrape_collector_success{collector="pressure"} 1 2530node_scrape_collector_success{collector="pressure"} 1
2496node_scrape_collector_success{collector="processes"} 1 2531node_scrape_collector_success{collector="processes"} 1
2497node_scrape_collector_success{collector="qdisc"} 1 2532node_scrape_collector_success{collector="qdisc"} 1
diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt
index a10db8a..41129c4 100644
--- a/collector/fixtures/e2e-output.txt
+++ b/collector/fixtures/e2e-output.txt
@@ -2393,6 +2393,40 @@ node_nfsd_server_rpcs_total 18628
2393# HELP node_nfsd_server_threads Total number of NFSd kernel threads that are running. 2393# HELP node_nfsd_server_threads Total number of NFSd kernel threads that are running.
2394# TYPE node_nfsd_server_threads gauge 2394# TYPE node_nfsd_server_threads gauge
2395node_nfsd_server_threads 8 2395node_nfsd_server_threads 8
2396# HELP node_power_supply_capacity capacity value of /sys/class/power_supply/<power_supply>.
2397# TYPE node_power_supply_capacity gauge
2398node_power_supply_capacity{power_supply="BAT0"} 81
2399# HELP node_power_supply_cyclecount cyclecount value of /sys/class/power_supply/<power_supply>.
2400# TYPE node_power_supply_cyclecount gauge
2401node_power_supply_cyclecount{power_supply="BAT0"} 0
2402# HELP node_power_supply_energy_full energy_full value of /sys/class/power_supply/<power_supply>.
2403# TYPE node_power_supply_energy_full gauge
2404node_power_supply_energy_full{power_supply="BAT0"} 45.07
2405# HELP node_power_supply_energy_full_design energy_full_design value of /sys/class/power_supply/<power_supply>.
2406# TYPE node_power_supply_energy_full_design gauge
2407node_power_supply_energy_full_design{power_supply="BAT0"} 47.52
2408# HELP node_power_supply_energy_watthour energy_watthour value of /sys/class/power_supply/<power_supply>.
2409# TYPE node_power_supply_energy_watthour gauge
2410node_power_supply_energy_watthour{power_supply="BAT0"} 36.58
2411# HELP node_power_supply_info info of /sys/class/power_supply/<power_supply>.
2412# TYPE node_power_supply_info gauge
2413node_power_supply_info{power_supply="AC",type="Mains"} 1
2414node_power_supply_info{capacity_level="Normal",manufacturer="LGC",model_name="LNV-45N1",power_supply="BAT0",serial_number="38109",status="Discharging",technology="Li-ion",type="Battery"} 1
2415# HELP node_power_supply_online online value of /sys/class/power_supply/<power_supply>.
2416# TYPE node_power_supply_online gauge
2417node_power_supply_online{power_supply="AC"} 0
2418# HELP node_power_supply_power_watt power_watt value of /sys/class/power_supply/<power_supply>.
2419# TYPE node_power_supply_power_watt gauge
2420node_power_supply_power_watt{power_supply="BAT0"} 5.002
2421# HELP node_power_supply_present present value of /sys/class/power_supply/<power_supply>.
2422# TYPE node_power_supply_present gauge
2423node_power_supply_present{power_supply="BAT0"} 1
2424# HELP node_power_supply_voltage_min_design voltage_min_design value of /sys/class/power_supply/<power_supply>.
2425# TYPE node_power_supply_voltage_min_design gauge
2426node_power_supply_voltage_min_design{power_supply="BAT0"} 10.8
2427# HELP node_power_supply_voltage_volt voltage_volt value of /sys/class/power_supply/<power_supply>.
2428# TYPE node_power_supply_voltage_volt gauge
2429node_power_supply_voltage_volt{power_supply="BAT0"} 11.66
2396# HELP node_pressure_cpu_waiting_seconds_total Total time in seconds that processes have waited for CPU time 2430# HELP node_pressure_cpu_waiting_seconds_total Total time in seconds that processes have waited for CPU time
2397# TYPE node_pressure_cpu_waiting_seconds_total counter 2431# TYPE node_pressure_cpu_waiting_seconds_total counter
2398node_pressure_cpu_waiting_seconds_total 14.036781000000001 2432node_pressure_cpu_waiting_seconds_total 14.036781000000001
@@ -2492,6 +2526,7 @@ node_scrape_collector_success{collector="netdev"} 1
2492node_scrape_collector_success{collector="netstat"} 1 2526node_scrape_collector_success{collector="netstat"} 1
2493node_scrape_collector_success{collector="nfs"} 1 2527node_scrape_collector_success{collector="nfs"} 1
2494node_scrape_collector_success{collector="nfsd"} 1 2528node_scrape_collector_success{collector="nfsd"} 1
2529node_scrape_collector_success{collector="powersupplyclass"} 1
2495node_scrape_collector_success{collector="pressure"} 1 2530node_scrape_collector_success{collector="pressure"} 1
2496node_scrape_collector_success{collector="processes"} 1 2531node_scrape_collector_success{collector="processes"} 1
2497node_scrape_collector_success{collector="qdisc"} 1 2532node_scrape_collector_success{collector="qdisc"} 1
diff --git a/collector/fixtures/sys.ttar b/collector/fixtures/sys.ttar
index 8502ec6..27aa0a7 100644
--- a/collector/fixtures/sys.ttar
+++ b/collector/fixtures/sys.ttar
@@ -995,6 +995,289 @@ Lines: 1
9951 9951
996Mode: 644 996Mode: 644
997# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 997# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
998Directory: sys/class/power_supply
999Mode: 755
1000# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1001Directory: sys/class/power_supply/AC
1002Mode: 755
1003# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1004Path: sys/class/power_supply/AC/online
1005Lines: 1
10060
1007Mode: 444
1008# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1009Directory: sys/class/power_supply/AC/power
1010Mode: 755
1011# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1012Path: sys/class/power_supply/AC/power/async
1013Lines: 1
1014disabled
1015Mode: 644
1016# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1017Path: sys/class/power_supply/AC/power/autosuspend_delay_ms
1018Lines: 0
1019Mode: 644
1020# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1021Path: sys/class/power_supply/AC/power/control
1022Lines: 1
1023auto
1024Mode: 644
1025# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1026Path: sys/class/power_supply/AC/power/runtime_active_kids
1027Lines: 1
10280
1029Mode: 444
1030# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1031Path: sys/class/power_supply/AC/power/runtime_active_time
1032Lines: 1
10330
1034Mode: 444
1035# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1036Path: sys/class/power_supply/AC/power/runtime_enabled
1037Lines: 1
1038disabled
1039Mode: 444
1040# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1041Path: sys/class/power_supply/AC/power/runtime_status
1042Lines: 1
1043unsupported
1044Mode: 444
1045# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1046Path: sys/class/power_supply/AC/power/runtime_suspended_time
1047Lines: 1
10480
1049Mode: 444
1050# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1051Path: sys/class/power_supply/AC/power/runtime_usage
1052Lines: 1
10530
1054Mode: 444
1055# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1056Path: sys/class/power_supply/AC/power/wakeup
1057Lines: 1
1058enabled
1059Mode: 644
1060# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1061Path: sys/class/power_supply/AC/power/wakeup_abort_count
1062Lines: 1
10630
1064Mode: 444
1065# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1066Path: sys/class/power_supply/AC/power/wakeup_active
1067Lines: 1
10680
1069Mode: 444
1070# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1071Path: sys/class/power_supply/AC/power/wakeup_active_count
1072Lines: 1
10731
1074Mode: 444
1075# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1076Path: sys/class/power_supply/AC/power/wakeup_count
1077Lines: 1
10780
1079Mode: 444
1080# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1081Path: sys/class/power_supply/AC/power/wakeup_expire_count
1082Lines: 1
10830
1084Mode: 444
1085# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1086Path: sys/class/power_supply/AC/power/wakeup_last_time_ms
1087Lines: 1
10887888
1089Mode: 444
1090# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1091Path: sys/class/power_supply/AC/power/wakeup_max_time_ms
1092Lines: 1
10932
1094Mode: 444
1095# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1096Path: sys/class/power_supply/AC/power/wakeup_prevent_sleep_time_ms
1097Lines: 1
10980
1099Mode: 444
1100# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1101Path: sys/class/power_supply/AC/power/wakeup_total_time_ms
1102Lines: 1
11032
1104Mode: 444
1105# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1106Path: sys/class/power_supply/AC/type
1107Lines: 1
1108Mains
1109Mode: 444
1110# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1111Path: sys/class/power_supply/AC/uevent
1112Lines: 2
1113POWER_SUPPLY_NAME=AC
1114POWER_SUPPLY_ONLINE=0
1115Mode: 644
1116# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1117Directory: sys/class/power_supply/BAT0
1118Mode: 755
1119# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1120Path: sys/class/power_supply/BAT0/alarm
1121Lines: 1
11222253000
1123Mode: 644
1124# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1125Path: sys/class/power_supply/BAT0/capacity
1126Lines: 1
112781
1128Mode: 444
1129# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1130Path: sys/class/power_supply/BAT0/capacity_level
1131Lines: 1
1132Normal
1133Mode: 444
1134# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1135Path: sys/class/power_supply/BAT0/charge_start_threshold
1136Lines: 1
113795
1138Mode: 644
1139# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1140Path: sys/class/power_supply/BAT0/charge_stop_threshold
1141Lines: 1
1142100
1143Mode: 644
1144# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1145Path: sys/class/power_supply/BAT0/cycle_count
1146Lines: 1
11470
1148Mode: 444
1149# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1150Path: sys/class/power_supply/BAT0/energy_full
1151Lines: 1
115245070000
1153Mode: 444
1154# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1155Path: sys/class/power_supply/BAT0/energy_full_design
1156Lines: 1
115747520000
1158Mode: 444
1159# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1160Path: sys/class/power_supply/BAT0/energy_now
1161Lines: 1
116236580000
1163Mode: 444
1164# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1165Path: sys/class/power_supply/BAT0/manufacturer
1166Lines: 1
1167LGC
1168Mode: 444
1169# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1170Path: sys/class/power_supply/BAT0/model_name
1171Lines: 1
1172LNV-45N1
1173Mode: 444
1174# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1175Directory: sys/class/power_supply/BAT0/power
1176Mode: 755
1177# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1178Path: sys/class/power_supply/BAT0/power/async
1179Lines: 1
1180disabled
1181Mode: 644
1182# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1183Path: sys/class/power_supply/BAT0/power/autosuspend_delay_ms
1184Lines: 0
1185Mode: 644
1186# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1187Path: sys/class/power_supply/BAT0/power/control
1188Lines: 1
1189auto
1190Mode: 644
1191# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1192Path: sys/class/power_supply/BAT0/power/runtime_active_kids
1193Lines: 1
11940
1195Mode: 444
1196# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1197Path: sys/class/power_supply/BAT0/power/runtime_active_time
1198Lines: 1
11990
1200Mode: 444
1201# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1202Path: sys/class/power_supply/BAT0/power/runtime_enabled
1203Lines: 1
1204disabled
1205Mode: 444
1206# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1207Path: sys/class/power_supply/BAT0/power/runtime_status
1208Lines: 1
1209unsupported
1210Mode: 444
1211# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1212Path: sys/class/power_supply/BAT0/power/runtime_suspended_time
1213Lines: 1
12140
1215Mode: 444
1216# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1217Path: sys/class/power_supply/BAT0/power/runtime_usage
1218Lines: 1
12190
1220Mode: 444
1221# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1222Path: sys/class/power_supply/BAT0/power_now
1223Lines: 1
12245002000
1225Mode: 444
1226# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1227Path: sys/class/power_supply/BAT0/present
1228Lines: 1
12291
1230Mode: 444
1231# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1232Path: sys/class/power_supply/BAT0/serial_number
1233Lines: 1
123438109
1235Mode: 444
1236# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1237Path: sys/class/power_supply/BAT0/status
1238Lines: 1
1239Discharging
1240Mode: 444
1241# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1242Path: sys/class/power_supply/BAT0/technology
1243Lines: 1
1244Li-ion
1245Mode: 444
1246# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1247Path: sys/class/power_supply/BAT0/type
1248Lines: 1
1249Battery
1250Mode: 444
1251# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1252Path: sys/class/power_supply/BAT0/uevent
1253Lines: 16
1254POWER_SUPPLY_NAME=BAT0
1255POWER_SUPPLY_STATUS=Discharging
1256POWER_SUPPLY_PRESENT=1
1257POWER_SUPPLY_TECHNOLOGY=Li-ion
1258POWER_SUPPLY_CYCLE_COUNT=0
1259POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000
1260POWER_SUPPLY_VOLTAGE_NOW=11660000
1261POWER_SUPPLY_POWER_NOW=5002000
1262POWER_SUPPLY_ENERGY_FULL_DESIGN=47520000
1263POWER_SUPPLY_ENERGY_FULL=45070000
1264POWER_SUPPLY_ENERGY_NOW=36580000
1265POWER_SUPPLY_CAPACITY=81
1266POWER_SUPPLY_CAPACITY_LEVEL=Normal
1267POWER_SUPPLY_MODEL_NAME=LNV-45N1
1268POWER_SUPPLY_MANUFACTURER=LGC
1269POWER_SUPPLY_SERIAL_NUMBER=38109
1270Mode: 644
1271# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1272Path: sys/class/power_supply/BAT0/voltage_min_design
1273Lines: 1
127410800000
1275Mode: 444
1276# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1277Path: sys/class/power_supply/BAT0/voltage_now
1278Lines: 1
127911660000
1280Mode: 444
998Directory: sys/class/thermal 1281Directory: sys/class/thermal
999Mode: 755 1282Mode: 755
1000# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1283# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/collector/powersupplyclass.go b/collector/powersupplyclass.go
new file mode 100644
index 0000000..3b5c8d7
--- /dev/null
+++ b/collector/powersupplyclass.go
@@ -0,0 +1,194 @@
1// Copyright 2019 The Prometheus Authors
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5//
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14// +build !nopowersupplyclass
15// +build linux
16
17package collector
18
19import (
20 "fmt"
21 "regexp"
22
23 "github.com/prometheus/client_golang/prometheus"
24 "github.com/prometheus/procfs/sysfs"
25 "gopkg.in/alecthomas/kingpin.v2"
26)
27
28var (
29 powerSupplyClassIgnoredPowerSupplies = kingpin.Flag("collector.powersupply.ignored-supplies", "Regexp of power supplies to ignore for powersupplyclass collector.").Default("^$").String()
30)
31
32type powerSupplyClassCollector struct {
33 subsystem string
34 ignoredPattern *regexp.Regexp
35 metricDescs map[string]*prometheus.Desc
36}
37
38func init() {
39 registerCollector("powersupplyclass", defaultEnabled, NewPowerSupplyClassCollector)
40}
41
42func NewPowerSupplyClassCollector() (Collector, error) {
43 pattern := regexp.MustCompile(*powerSupplyClassIgnoredPowerSupplies)
44 return &powerSupplyClassCollector{
45 subsystem: "power_supply",
46 ignoredPattern: pattern,
47 metricDescs: map[string]*prometheus.Desc{},
48 }, nil
49}
50
51func (c *powerSupplyClassCollector) Update(ch chan<- prometheus.Metric) error {
52 powerSupplyClass, err := getPowerSupplyClassInfo(c.ignoredPattern)
53 if err != nil {
54 return fmt.Errorf("could not get power_supply class info: %s", err)
55 }
56 for _, powerSupply := range powerSupplyClass {
57
58 for name, value := range map[string]*int64{
59 "authentic": powerSupply.Authentic,
60 "calibrate": powerSupply.Calibrate,
61 "capacity": powerSupply.Capacity,
62 "capacity_alert_max": powerSupply.CapacityAlertMax,
63 "capacity_alert_min": powerSupply.CapacityAlertMin,
64 "cyclecount": powerSupply.CycleCount,
65 "online": powerSupply.Online,
66 "present": powerSupply.Present,
67 "time_to_empty_seconds": powerSupply.TimeToEmptyNow,
68 "time_to_full_seconds": powerSupply.TimeToFullNow,
69 } {
70 if value != nil {
71 pushPowerSupplyMetric(ch, c.subsystem, name, float64(*value), powerSupply.Name, prometheus.GaugeValue)
72 }
73 }
74
75 for name, value := range map[string]*int64{
76 "current_boot": powerSupply.CurrentBoot,
77 "current_max": powerSupply.CurrentMax,
78 "current_ampere": powerSupply.CurrentNow,
79 "energy_empty": powerSupply.EnergyEmpty,
80 "energy_empty_design": powerSupply.EnergyEmptyDesign,
81 "energy_full": powerSupply.EnergyFull,
82 "energy_full_design": powerSupply.EnergyFullDesign,
83 "energy_watthour": powerSupply.EnergyNow,
84 "voltage_boot": powerSupply.VoltageBoot,
85 "voltage_max": powerSupply.VoltageMax,
86 "voltage_max_design": powerSupply.VoltageMaxDesign,
87 "voltage_min": powerSupply.VoltageMin,
88 "voltage_min_design": powerSupply.VoltageMinDesign,
89 "voltage_volt": powerSupply.VoltageNow,
90 "voltage_ocv": powerSupply.VoltageOCV,
91 "charge_control_limit": powerSupply.ChargeControlLimit,
92 "charge_control_limit_max": powerSupply.ChargeControlLimitMax,
93 "charge_counter": powerSupply.ChargeCounter,
94 "charge_empty": powerSupply.ChargeEmpty,
95 "charge_empty_design": powerSupply.ChargeEmptyDesign,
96 "charge_full": powerSupply.ChargeFull,
97 "charge_full_design": powerSupply.ChargeFullDesign,
98 "charge_ampere": powerSupply.ChargeNow,
99 "charge_term_current": powerSupply.ChargeTermCurrent,
100 "constant_charge_current": powerSupply.ConstantChargeCurrent,
101 "constant_charge_current_max": powerSupply.ConstantChargeCurrentMax,
102 "constant_charge_voltage": powerSupply.ConstantChargeVoltage,
103 "constant_charge_voltage_max": powerSupply.ConstantChargeVoltageMax,
104 "precharge_current": powerSupply.PrechargeCurrent,
105 "input_current_limit": powerSupply.InputCurrentLimit,
106 "power_watt": powerSupply.PowerNow,
107 } {
108 if value != nil {
109 pushPowerSupplyMetric(ch, c.subsystem, name, float64(*value)/1e6, powerSupply.Name, prometheus.GaugeValue)
110 }
111 }
112
113 for name, value := range map[string]*int64{
114 "temp_celsius": powerSupply.Temp,
115 "temp_alert_max_celsius": powerSupply.TempAlertMax,
116 "temp_alert_min_celsius": powerSupply.TempAlertMin,
117 "temp_ambient_celsius": powerSupply.TempAmbient,
118 "temp_ambient_max_celsius": powerSupply.TempAmbientMax,
119 "temp_ambient_min_celsius": powerSupply.TempAmbientMin,
120 "temp_max_celsius": powerSupply.TempMax,
121 "temp_min_celsius": powerSupply.TempMin,
122 } {
123 if value != nil {
124 pushPowerSupplyMetric(ch, c.subsystem, name, float64(*value)/10.0, powerSupply.Name, prometheus.GaugeValue)
125 }
126 }
127
128 var (
129 keys []string
130 values []string
131 )
132 for name, value := range map[string]string{
133 "power_supply": powerSupply.Name,
134 "capacity_level": powerSupply.CapacityLevel,
135 "charge_type": powerSupply.ChargeType,
136 "health": powerSupply.Health,
137 "manufacturer": powerSupply.Manufacturer,
138 "model_name": powerSupply.ModelName,
139 "serial_number": powerSupply.SerialNumber,
140 "status": powerSupply.Status,
141 "technology": powerSupply.Technology,
142 "type": powerSupply.Type,
143 "usb_type": powerSupply.UsbType,
144 "scope": powerSupply.Scope,
145 } {
146 if value != "" {
147 keys = append(keys, name)
148 values = append(values, value)
149 }
150 }
151
152 fieldDesc := prometheus.NewDesc(
153 prometheus.BuildFQName(namespace, c.subsystem, "info"),
154 "info of /sys/class/power_supply/<power_supply>.",
155 keys,
156 nil,
157 )
158 ch <- prometheus.MustNewConstMetric(fieldDesc, prometheus.GaugeValue, 1.0, values...)
159
160 }
161
162 return nil
163}
164
165func pushPowerSupplyMetric(ch chan<- prometheus.Metric, subsystem string, name string, value float64, powerSupplyName string, valueType prometheus.ValueType) {
166 fieldDesc := prometheus.NewDesc(
167 prometheus.BuildFQName(namespace, subsystem, name),
168 fmt.Sprintf("%s value of /sys/class/power_supply/<power_supply>.", name),
169 []string{"power_supply"},
170 nil,
171 )
172
173 ch <- prometheus.MustNewConstMetric(fieldDesc, valueType, value, powerSupplyName)
174}
175
176func getPowerSupplyClassInfo(ignore *regexp.Regexp) (sysfs.PowerSupplyClass, error) {
177 fs, err := sysfs.NewFS(*sysPath)
178 if err != nil {
179 return nil, err
180 }
181 powerSupplyClass, err := fs.PowerSupplyClass()
182
183 if err != nil {
184 return powerSupplyClass, fmt.Errorf("error obtaining power_supply class info: %s", err)
185 }
186
187 for device := range powerSupplyClass {
188 if ignore.MatchString(device) {
189 delete(powerSupplyClass, device)
190 }
191 }
192
193 return powerSupplyClass, nil
194}