こんにちは。我々が人生で最も気にするものランキングがあったとしたら、1位が将来のこと、同率1位がお金のことで、3位ぐらいに天気が来るのではないでしょうか。歌川です。
そんな、人生で3番目ぐらいに気になる天気をサクッと知れたら、あるいは降水注意報をシュッと出してくれたら、どんなにうれしいでしょう?
京都に住む我々にはうってつけのサービスがあります。ないんたんです。
ないんたんの天気予報実験停止のお知らせ - いもす研 (imos laboratory)
このように精度の高い降水量予測を、2時間半後の分まで、1分刻みで視覚化してくれる、画期的なサービスがあります。
しかし我々は常にスマホの画面を開いて更新ボタンを押せるとは限りません。せめてプッシュ通知が来てくれれば……。
そこで Slack を使います。今や生活に欠かせなくなった Slack には、incoming-webhooks という機能があり、API に JSON を送信すると Slack に投稿されます。
そして Mackerel を使います。今やインフラエンジニアに欠かせなくなった Mackerel には、任意の数値データを流す機能があり、これを使うといろいろなことができるのではと思いませんか?(先行研究あり)
ないんたん meets Mackerel. リアルタイム降水量監視システムと、リアルタイム監視システムの、絶妙な巡り合わせです。
その上時代はビッグデータです。京都のピンポイントな降水確率の蓄積されたデータを分析することで、我々は新しい発見をすることができるのではないでしょうか?
監視する
それではやっていきましょう。まず Mackerel にログインしましょう。アカウントがない人はいい機会なので適当に作りましょう。
ログインしたら、左側の Services をクリックして、サービスを追加しましょう。
こういう感じです。
追加できたら、こんどはロールを追加しましょう。京大吉田キャンパスの降水量が監視できればよいので、yoshida と名付けました。
ここにデータを流します。こういう感じの JSON を流すとよいです。
[ { "name": "sx9.yoshida", "time": 1466875437, "value": 50 } ]
name
に サービス名.ロール名
、time
は現在の UNIX 秒、value
は降水確率という感じです。(sx9 になっていますが、記事を書くより先にサービスを作ったので違う名前になっています)
これを自動で行ってくれるスクリプトを書きました。
動かす
次にこのスクリプトを1分おきに叩きます。適当なシェルスクリプトを用意しましょう。
#!/bin/sh while : do python main.py sleep 60 done
これを自分の VPS か、あるいはサークルのサーバーで、tmux などを併用して適当に叩けば、1分おきに自動でデータを送信してくれます。よかったですね。
閾値を設定する
さて、これで Mackerel にグラフが流れてくるようになりました。
ただグラフが流れてくるだけだと、ないんたんを見た方が情報量が圧倒的に多いので、今度は警告を出す閾値を設定しましょう。
左の Monitors から新しい監視ルールを追加します。
このように設定しました。
チャンネル設定も忘れないようにしましょう。通知グループ/通知チャンネルを追加→Slack から登録をします。これで準備完了です。
待つ
今日は休日なので*1待ちます。ちょうど空模様も怪しくなってきたところです。
出ました。このように、メンション付きで通知をしてくれるので、即座に異常を感知することができます。もし感知をしてしまったなら、寝るか濡れるかのどちらかを選択しましょう。
よくなりました。よかったですね。
おわりに
さてこのように、監視できるデータがあれば監視したくなるのが我々プログラマとは誰かから聞きましたが、やはり監視をしてみると気持ちがいいものですね。それに Mackerel は、データを送信するだけで自動的に可視化してくれるので、ますます便利でよいものです。
ないんたんの監視、意外に誰もやってなくて*2びっくりしたので作ることにしました。
ないんたんを Mackerel で監視して、降水確率が20% を超えたら警告を出すようにしたんだけど、警告を出されても我々が降水確率を操作できるわけではないし、神のまにまに感があって絶望・祈祷体験をしてしまった
— うたがわきき🔰💊 (@utgwkk) 2016年6月26日
このように、神に祈るという経験をすることもできて一石二鳥です。みなさんもどんどん監視をしていきましょう。
それでは、私は部誌を書きます*3。
先行研究
www.slideshare.net
追記
Critical 出ました。天気が Critical だからといって、我々にできることは傘をさすことか濡れることか外出しないことしかないので、神のまにまに生活していきましょう。みなさんは、神のまにまにですか?