iStatsのAPIでmacのメトリックをmackerelに送信する
表題通り。
参考
というかほぼ剽…要約ということで
手順
gem install iStats
~/mackerel にスクリプトを置いていく
温度をとる
code:temp.rb
require 'iStats'
require 'json'
include CPU_STATS
include BATTERY_STATS
meta = {
:graphs => {
'temp' => {
:label => 'Temp (℃)',
:unit => 'integer',
:metrics => [
{
:name => 'cpu',
},
{
:name => 'batt',
},
]
}
}
}
puts '# mackerel-agent-plugin'
puts meta.to_json
exit 0
end
ファン速度
code:fan.rb
require 'iStats'
require 'json'
include FAN_STATS
meta = {
:graphs => {
'fan' => {
:label => 'FAN Speed (RPM)',
:unit => 'integer',
:metrics => [
{
:name => 'fan1',
},
{
:name => 'fan2',
},
]
}
}
}
puts '# mackerel-agent-plugin'
puts meta.to_json
exit 0
end
バッテリー充電をとる
code:batt.rb
require 'iStats'
require 'json'
include BATTERY_STATS
meta = {
:graphs => {
'batt_charge' => {
:label => 'Battery Charge (%)',
:unit => 'percentage',
:metrics => [
{
:name => 'charge',
:label => 'charge'
},
]
}
}
}
puts '# mackerel-agent-plugin'
puts meta.to_json
exit 0
end
あたりを参考に…
code:airpods.sh
echo '{
"graphs": {
"airpods": {
"label": "AirPods Battery Charge (%)",
"unit": "percentage",
"metrics": [
{
"name": "right",
"stacked": false
},
{
"name": "left",
"stacked": false
},
{
"name": "case",
"stacked": false
}
]
}
}
}' | jq -c -M
exit 0;
fi
AP_BATT_LEFT=defaults read /Library/Preferences/com.apple.Bluetooth | grep BatteryPercentLeft | tr -d \; | awk '{print $3}'
AP_BATT_RIGHT=defaults read /Library/Preferences/com.apple.Bluetooth | grep BatteryPercentRight | tr -d \; | awk '{print $3}'
AP_BATT_CASE=defaults read /Library/Preferences/com.apple.Bluetooth | grep BatteryPercentCase | tr -d \; | awk '{print $3}'
date=date +%s
echo "airpods.right\t${AP_BATT_RIGHT}\t${date}"
echo "airpods.left\t${AP_BATT_LEFT}\t${date}"
echo "airpods.case\t${AP_BATT_CASE}\t${date}"
chmod +x airpods.sh
code:/usr/local/etc/mackerel-agent.conf
command = "/Users/User/.rbenv/shims/ruby /Users/User/mackerel/temp.rb"
command = "/Users/User/.rbenv/shims/ruby /Users/User/mackerel/fan.rb"
command = "/Users/User/.rbenv/shims/ruby /Users/User/mackerel/batt.rb"
command = "/Users/User/mackerel/airpods.sh"
再起動。
code:restart.sh
launchctl stop homebrew.mxcl.mackerel-agent
launchctl start homebrew.mxcl.mackerel-agent
tail -f /usr/local/var/log/mackerel-agent.log