Mackerel で金の買取相場を監視する
去年末、社員旅行での抽選会で純金が当たった。
社員旅行の抽選会で純金当たった…
— 谷口 (@ravelll) 2016年12月27日
これが金です。 https://t.co/mivJigz8LO
— 谷口 (@ravelll) 2016年12月28日
まだしばらく売る気はないのだけど、ひとまず金相場が見たい、ということで Mackerel で監視することにした。
稼働環境は Amazon EC2(Amazon Linux)です。
手順
まずは mackerel-agent をインストール。APIKEY は各自のものに読み換えてください。
$ curl -fsSL https://mackerel.io/file/script/amznlinux/setup-all-yum.sh | MACKEREL_APIKEY='yourmackerelapikey' sh
次に監視するパラメータを取得・設定するスクリプトを設置。
#!/bin/bash name="GoldPrice" monitor_time=`date +%s` market_rate=`curl http://gold.mmc.co.jp/market/gold-price/ | grep -A1 metalType1 | tail -1 | tr -d "\t" | tr -d "," | cut -b 4-7` echo -e "${name}\t${market_rate}\t${monitor_time}"
設置したスクリプトを使いメトリックを作成するよう mackerel-agent.conf を修正。
$ sudo vim /etc/mackerel-agent/mackerel-agent.conf [plugin.metrics.process] command="bash /path/to/script.sh" type="metric"
これでカスタムメトリックとして金相場のグラフが表示されます。
ラベルはグラフ右上の設定ページで変更できます。今回はストレートに「金相場」としました。
よさそうです。
グラフが表示されないときは /var/log/mackerel-agent.log を見ると原因が特定できると思います。
今後
金相場の情報を取得しているページの更新が日に1回のようだし、不必要に高頻度なスクレイピングは行儀が悪いのでエージェントのフェッチ間隔を広げたい。
今は1分毎にメトリックに Post されており、ひたすら平坦なグラフが続いていて情報価値が低い。相場が上下する経過が見たいのだ。
plugin.metrics.* の実行間隔は設定できるのかなと mackerel-agent のコードを読んだのだけど、config/config.go#L214 の変数を toml からの入力で変更する箇所は無いように見えるのでできない…?
plugin.checks.* での check_interval や execution_interval のようなパラメータがあるのかなと思ったのだけど無いのかな。会社の有識者の方々に聞いてみよう。
追記
はてな社のセールスエンジニアである id:a-know さんより、サービスメトリックにするとよいとのアドバイスをいただきました。ありがとうございます!!
@ravelll @buty4649 おもしろい投稿、ありがとうございますっ😊
— えいのー (@a_know) 2017年2月14日
カスタムメトリックのようなホストに紐付くメトリックは毎分投稿が前提のため、こういった用途の場合は「サービスメトリック」としての投稿がよいかと思います!https://t.co/i9CJP9m10A