CloudWatchのCustom Metricsを使ってみた(二番煎じ)
という記事を書こうとしたら、もうすでにid:mikedaさんの同じタイトルの記事が!
同じテーマを使ってらっしゃるので、一瞬自分で書いたのかと思ってしまうほどでしたw
せっかく(?)なので、AWSのリソースとはまったく関係ない数字だってモニタできますよ、という記事にしてみました。
CloudWatchのCustom Metricsとは?
AWSの監視サービスCloudWatchに新しく加わった機能で、ユーザが定義した任意の数値を監視することができます。
たとえば、OS内部でしか取れない情報(プロセス数とか)や、アプリケーションレベルの数値(例:ゲームのアクティブユーザ数)を監視することができます。
詳しくは「【AWS発表】 クラウド監視サービスAmazon CloudWatchでカスタムのメトリクスが使用可能に - Amazon Web Services ブログ」 をご覧ください。
何をモニタするのか?
これから夏にかけて部屋の温度をモニターしたいなと思いましたが、あいにくTCP/IPをしゃべれる温度計は持っていないので、常時稼動しているmacminiのHWモニター機能から温度をモニタしてみることにしました。
どうやって数字を得るか
temperature macos commandlineでググるとこのサイトがひっかかりました。インストールしてみます。
マニュアルによれば、TemperatureMonitor.appの中にCLIツールtempmonitorが入ってるようです。試しに実行してみると、
$ /Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -a -l SMART Disk Hitachi HTS725050A9A362 (100526PCG420VLJ13N9C): 45 C SMART Disk Hitachi HTS725050A9A362 (100526PCG420VLJ16ZAC): 44 C SMB NORTHBRIDGE CHIP DIE: 72 C SMB NORTHBRIDGE CHIP DIE: 77 C SMC AMBIENT AIR: 43 C SMC CPU A DIODE: 77 C SMC CPU A HEAT SINK: 70 C SMC CPU A PROXIMITY: 67 C SMC DRIVE BAY 1: 39 C SMC MAIN LOGIC BOARD: 59 C SMC MEMORY BANK A POS 1: 66 C SMC NORTHBRIDGE POS 1: 59 C SMC OPTICAL DRIVE: 47 C SMC POWER SUPPLY SENSOR 1: 55 C SMC WLAN CARD: 55 C
みたいなoutputが得られました。こりゃ使える!ってことで、パースしてmon-put-dataに食わせます。
スクリプト
#!/bin/sh /Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -a -l | perl -pe ' ($name,$value)=split(/:/); $name=~s/\ /_/g; $value=~s/\D//g; $_="mon-put-data -namespace macmini -metric-name Temperature -dimensions \"location=$name\" -value $value &\n" ' | tee /dev/stderr | sh
非常に適当な作りですね。あとはこれを5分毎など、任意の間隔で実行するだけです。
$ while [ 1 ] ; do ./update_temp.sh ; sleep 300 ; done mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMART_Disk_Hitachi_HTS725050A9A362_(100526PCG420VLJ13N9C)" -value 45 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMART_Disk_Hitachi_HTS725050A9A362_(100526PCG420VLJ16ZAC)" -value 44 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMB_NORTHBRIDGE_CHIP_DIE" -value 73 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMB_NORTHBRIDGE_CHIP_DIE" -value 79 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_AMBIENT_AIR" -value 42 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_CPU_A_DIODE" -value 78 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_CPU_A_HEAT_SINK" -value 70 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_CPU_A_PROXIMITY" -value 68 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_DRIVE_BAY_1" -value 39 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_MAIN_LOGIC_BOARD" -value 60 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_MEMORY_BANK_A_POS_1" -value 66 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_NORTHBRIDGE_POS_1" -value 59 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_OPTICAL_DRIVE" -value 47 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_POWER_SUPPLY_SENSOR_1" -value 55 & mon-put-data -namespace macmini -metric-name Temperature -dimensions "location=SMC_WLAN_CARD" -value 56 &
最後に注意事項
ひとしきり動かして満足してから、CloudWatchのPricingをチェックしてみました。
Asia Pacific(Tokyo)
Amazon CloudWatch Custom Metrics
$0.525 per metric per month
思わず2度見しました。この実験のために20metricsくらい作っちゃいました・・・。
監視するのは本当に必要な物だけにしましょう!