iPhoneでサーバ監視を考えた(煮えきらない結論編)

要件

  • あくまで通知する方法で、監視する機能や、サーバを操作する必要はないとする。
  • 監視するのは自家製のスクリプトやsnmp、cacti、nagios、zabbixなどを想定する。それらからiPhoneへ通知できればよい。
  • 緊急性が高いので、iPhoneで認知しやすいこと。
  • 状況がわかるようにある程度の情報を提供できること。
  • 通知は1回限りだと、気づかないことがある。できれば問題が解消するまで定期的に通知したい。
  • 通知が大量になっても、データを削除する手間ができるだけないことが望ましい。
  • サーバの監視は複数人以上で行なっている。
  • 本件とは少し離れるが、休日で自宅からサーバ管理するときの作業情報のリアルタイムな情報共有の方法があればなおよい

考えてみた

iPhoneでの通知方法

携帯電話のメール通知は結構わかりやすいですね。多くの携帯にはLEDなどでメールが受信していることがわかりやすく、また状況にあわせた設定も提供されています。ところがiPhoneだとLEDなんてものはありません。ユーザーが知る方法は3つです。着信時の音とバイブレーション、バッジというアイコンの右上につく赤い丸と数字、それからポップアップ。

バッジは邪魔にならない表示で奥ゆかしいですけど、緊急時にまでこうだとちょっと気づきにくいです。普段の操作ならいいのですが火急の用件なので、もう少しアピールしてほしいところです。

ポップアップ。これは電話中であってもしっかりアピールしてくれます。ポップアップの操作をしない限りはほかの操作をさせないほどに自己主張してくれるので、これが本命です。

着信時の音とバイブレーションはないよりあった方がいいですけど、一度気づかなかった場合、次の通知が来るまで放置されてしまう。先の二つどちらかの補助という位置付けです。

以上からポップアップをしてするのがいいようです。ポップアップは「プッシュ通知機能」によって動きます。対応アプリはiPhoneの[設定]-[通知]にリストされます。そこの[テキスト]がポップアップです。

プッシュ通知をするアプリを調べみた

結構あるのですけど、それぞれ一長一短といった感じです。下記の他にもGmailをプッシュ通知するアプリはありますができるだけ無料にしたいので、以下のようなところが選考対象になりました。

  • ソフトバンクのメールでSMS
  • Boxcar
  • Facebook for iPhone
  • Twitter for iPhone
  • Google Mobile App

先に言っておくとGoogle Mobile Appのプッシュはカレンダーのみでメールには対応していません。なので早々に選外。世間様では「Google Mobile Appがプッシュ対応」という情報が氾濫していますが、どうもわたしの期待とは違うようです。世間の評価がわたしと同じ勘違いでないことを願います。

ソフトバンクのメールは結構いいです。たまったメールを削除する方法も簡単。同僚から編集モードでキーボードが表示されて見にくいときがありますが、これは[編集]ボタンを押せばメッセージの全画面表示になるので問題はないはず。気になるところは、あまりに通知が多いと表示が遅くなるところ、また送信が多いと迷惑メール対策のためか、受付を拒否するときがあることです。自前でメールサーバを運営していてる場合には、迷惑メールの送信元と誤解されかねないので注意。

FacebookとTwitterは前バージョンではプッシュ通知機能がなかったが、めでたく対応。問題はサーバから各サービスへの通知方法。ちょっと調べただけですけどTwitterではコマンドラインで投稿する方法はいろいろありそうです。rubyだとtwtr、PerlではNet::Twitterを使うといいようです。Facebookでは見つけられませんでした。な、ものですから使うならTwitterでしょうか。

Boxcar。これはメールやTwitter、Facebookをプッシュ通知してくれるアプリ。今となってはTwitterもFacebookもプッシュ機能をサポートしていますが、メール通知についても対応できますので、これをハブにすればかなり柔軟な運用ができるようになります。これさえあればクライアントアプリのプッシュ通知機能の有無に悩まなくてすむのですから素晴しい。欠点はアプリが時々落ちることと、メッセージの削除が一通ずつなため手間なこと。それからこれが最も問題なのですが通知のタイムラグが他よりも大きく不安定な印象があります。

運用方法を考えてみた

通知経路はこんな感じになります。

監視ツール -> SMS -> プッシュ通知
監視ツール -> Boxcar -> プッシュ通知
監視ツール -> Twitter  -> Twitterアプリ -> プッシュ通知
監視ツール -> Twitter  -> Boxcar -> プッシュ通知
監視ツール -> メール通知 -> メールボックス -> SMS -> プッシュ通知
監視ツール -> メール通知 -> メールボックス -> Boxcar -> プッシュ通知
監視ツール -> メール通知 -> Gmail               -> SMS -> プッシュ通知
監視ツール -> メール通知 -> Gmail               -> Boxcar -> プッシュ通知
監視ツール -> メール通知 -> Twitter             -> Twitterアプリ -> プッシュ通知
監視ツール -> メール通知 -> Twitter             -> Boxcar -> プッシュ通知

トラブルに強くするなら独立性を高くできるだけ単一障害点をなくしたいところですが、通知設定の利便性を考えるとどこかに集約してから一括で管理者に送る設定にしたくもあります。
メールを送信するという観点ではGmail SMS Boxcarどれもあまり違いはありません。Twitterはどこかで集約してから通知するシステムの方が楽かと思います。Net::Tiwitterモジュールは流石にOSのパッケージにはないでしょうから。

通知はあくまで通知のみか、記録も兼ねるのか

運用はメール通知をあくまで通知とするか、ログも兼ねるかで異なりそうです。
ログをシステム内に保存する場合には監視ツールから直接通知するのがシンプルですがcronなどの一般的なシステム系ツールでは管理者にメールで送るようになっていますので、それらのツールと並立させるところで一工夫必要そうです。サーバ数が多くなると監視用途のサーバができるでしょうから、規模が大きければこの手のツールの作り込みを考えてもいいかなと思いました。
逆に記録としても兼ねるなら、メールを経由するのが無難になりそうです。logwatchやtwipwireなどの結果がメールで通知されます。それと同じように監視ツールからもメールが送られてくるわけで、こちらが手っ取り早いです。

受け取るメディアはどうしよう

メールボックスは、自前なので大量のログが流れても十分にまかなえるだろうところは安心感があります。情報を加工るフィルターを通してから通知させるなど、自由度の高さも魅力です。欠点はメール関連のシステムが正常稼動することが前提なので、自前で冗長化するか、そのシステムトラブルなら割り切るかが悩みどころでしょうか。
Gmailは大容量ゆえのログの大量保持と検索性(時系列系は弱いですが)が利点です。さらに通知の条件をフィルタ機能でいろいろと設定できるのが強力です。たあだあまりに送信量が多いとしばらくメール送信できなくなる可能性がありそうです。これはちょっと避けたいですね。
TwitterはiPhoneで流し見をするような日常なら、メールやSMSより使い勝手がいい感じです。一方でGmail同様にスパム認定されるのが怖いです。通知は純正titterアプリで、閲覧は好みのアプリというのはありです。やっかいなのは、純正Twitterの場合プッシュ通知を有効にするにはメンション(@ユーザー名を入れてツイートすること)かDMを使う必要があります(ポップアップの条件としてどちらかである必要がある)。最初から1件の入力可能値が140文字という上限があるので、状況を把握するための情報を入れるのも一苦労しそうです。通知と状況報告を個別にツイートするとか工夫が必要になるかもしれません。Twitter+Boxcarは試しましたが、他の組み合わせより通知タイミングが遅いことが多くて、緊急用としてはちょっと信頼性に欠ける印象でした。

わたしの結論

すみません、結局スゴい無難です。

監視ツール -> メール通知 -> Gmail -> SMS -> プッシュ通知

わたしのやり方に沿った現時点での最良の方法はこれです。Gmailを使えば記録の保存および検索に加え、SMS通知の条件設定も柔軟です。
twitterでの通知は、いまも試しています。いろいろ工夫の余地があっておもしろいです。ただ完全に移行するには、解決しないといけないところが多い状況です。

おまけ サーバ監視系のアプリ

とりあえずメモ。ただしこれだけだと機能的にちょっと弱かったり、有料だったりするのでので今回のところは選外でした。

  • iWatachdog
  • Pingdom
  • TCPinger