diff --git a/custom-metrics/power-usage.sh b/custom-metrics/power-usage.sh index 6ef37f1..86120d6 100755 --- a/custom-metrics/power-usage.sh +++ b/custom-metrics/power-usage.sh @@ -49,23 +49,27 @@ for i in {1..6}; do if [[ "$OS_TYPE" == "macos" ]]; then # Use powermetrics for macOS (requires sudo) # Sample for 1 second and extract CPU power - power_data=$(sudo powermetrics -n 1 -i 1000 --samplers cpu_power 2>/dev/null | grep "CPU Power" | head -1) + power_data=$(sudo powermetrics -n 1 -i 1000 --samplers cpu_power 2>/dev/null | grep -i "power" | head -1) if [[ -n "$power_data" ]]; then - # Extract power value (format: "CPU Power: 1234 mW") - power_mw=$(echo "$power_data" | grep -o '[0-9]\+ mW' | grep -o '[0-9]\+') + # Try to extract power value in watts (format: "Intel energy model derived package power (CPUs+GT+SA): 4.55W") + power_watts=$(echo "$power_data" | grep -oE '[0-9]+\.[0-9]+W' | grep -oE '[0-9]+\.[0-9]+') - if [[ -n "$power_mw" ]]; then - # Convert milliwatts to watts - power_watts=$(echo "scale=6; $power_mw / 1000" | bc 2>/dev/null) - - if [[ $? -eq 0 ]]; then - echo "$timestamp $power_watts" >> "$LOGFILE" - LogInformation "Power usage recorded: ${power_watts}W (iteration $i/6)" - else - LogError "Failed to calculate power in watts" + # If watts format not found, try milliwatts format (format: "CPU Power: 1234 mW") + if [[ -z "$power_watts" ]]; then + power_mw=$(echo "$power_data" | grep -oE '[0-9]+ mW' | grep -oE '[0-9]+') + if [[ -n "$power_mw" ]]; then + # Convert milliwatts to watts + power_watts=$(echo "scale=6; $power_mw / 1000" | bc 2>/dev/null) fi fi + + if [[ -n "$power_watts" && $? -eq 0 ]]; then + echo "$timestamp $power_watts" >> "$LOGFILE" + LogInformation "Power usage recorded: ${power_watts}W (iteration $i/6)" + else + LogError "Failed to extract or calculate power value" + fi else LogWarning "Could not retrieve power data from powermetrics" fi