そーだいなるらくがき帳

そーだいが自由気侭に更新します。

起動時間の監視 ~ mackerel-plugin-uptimeとcheck-uptimeを読み解く

この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の17日目です。

qiita.com

soudai.hatenablog.com

それでは17日目は mackerel-plugin-uptimecheck-uptime です。

1日に一個じゃなかったんか?ってつっこみは /dev/null に捨ててください。 日曜日なんです、お察しください。 uptimeはその名の通り、起動時間を監視するプラグインです。 mackerel-plugin-uptime は起動時間を可視化し、 check-uptime は起動時間をcheck監視する場合に使います。

github.com

github.com

今回はインストールについては省略します。 0日目をご参考ください。

見れるメトリック

# mackerel-plugin-uptime
uptime.seconds  10213004.670000 1513332335

各グラフ定義ごとに説明します。 それでは各グラフ定義ごとに説明します。 また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。 となっている項目はプラグインで前回の実行時の値と差分値計算して出力しています。

Uptime

メトリック名(ラベル) プラグインの出力名 diff 説明
Seconds uptime.seconds 起動時間

監視の内容は起動時間の1点です。とてもシンプルですが意外と監視してないのではないでしょうか。起動時間を監視するメリット沢山あります。

  1. 連続稼働時間の監視
    例えば閾値10秒から2分 などにしておくと不意な再起動の検知を検知できます。 メモリを使い切ってOSが落ちて再起動を検知できたり、Windows Updateに予想外のタイミングで再起動などで役立つでしょう。 また自動起動やフェイルオーバーを仕込んいでいるのであればサービスとしては自動復旧するでしょう。 だからこそ再起動が起こった事を気付く事が大切なのです。

  2. 連続稼働による障害防止
    Oracle 10G 248日問題日Windows Server 2008 R2 497日問題 のように連続稼働によって障害が発生することがあります。 事前にスケジュールを切って再起動すればまだ良いのですが248日問題などは間が長いので忘れた頃にやってきます。 そこでuptimeを使って事前に警告を出し、適切に再起動することで大障害を防ぐことができます。 (Oracle 10G RAC ある日突然順番にHangする姿はとてもとてもとても胸が熱くなるものがあります)

  3. Server寿命の予測
    例えばHDDなどはロットが同じ、利用内容も同じ場合、壊れるタイミングも同じ時期に壊れることが多いですよね?一つWebサーバのHDDが壊れると続けて壊れ始める。そんな経験はありませんか?そんなときにもuptimeで長期的にメトリックを取っていると便利です。 事前に「このServerが壊れたからそろそろこの辺も危ないぞ」と予測出来るわけですね。 それによって結果が大きく変わる事は想像に難くないでしょう。

  4. クライアントPCの起動時間の監視 Mackerelの便利な使い方にクライアントPCの監視があります。 クライアントPCは長時間起動する想定ではないでしょうから定期的に再起動しないと調子が悪い、という経験もあるのではないでしょうか。 実際に弊社の id:astj が次のように使っています。。

astj.hatenablog.com

  • 起動してから日数経つとアラートを出すようにしている (uptime / 15日 warning / 30日 critical)
    • これくらい経ってくると節々の調子がおかしくなりがちなのでさっと再起動することにしている

この他にも家に起動しっぱなしのデスクトップサーバなどあると思いますがuptimeを使って監視していると停電や不意なサーバ再起動に気付くことができます。 是非、ご家庭でもご利用ください!!

17日目は起動時間の監視のuptimeプラグインについての説明でした。 明日は使ってる人も多いのではないでしょうか。fluentd の監視です。 引き続き、Mackerel プラグインアドベントカレンダーをお楽しみに!

18日目 mackerel-plugin-fluentd