こんにちは。斎藤です。
ようやく、都心でも雪がほぼ無くなった今日この頃、皆様いかがお過ごしでしょうか。雪は、スキー場だけに降って欲しいなと思っています。
今日は、メジャーページフォルト(スワップイン)およびメモリ使用量を観測するNagiosプラグインを書きましたので、ご紹介します。お話は3点あり、「ぜひセットで使ってください!」「check_mpfの紹介」および「check_memfreetotalの紹介」について述べて行きます。
※各種プラグインは、執筆当初のバージョンを元に説明しています。最新版は、それぞれのGitHubリポジトリをご覧ください。
ぜひセットで使ってください!
今回、「check_mpf」と「check_memfreetotal」を用意しました。目的は2点あります。
- メジャーページフォルト数増加に伴うパフォーマンス低下を把握しやすくしたい。
- メモリ全体の空き容量を確認し、メモリ不足の警告を適切に把握したい。
現状ですと、上記2つの目的を満たすには次の問題があります。
Nagiosの"nagios-plugins"には、v1.5の時点でメモリに関するプラグインは、スワップメモリの空き容量を調べる"check_swap"が用意されています。こちらだけですと、スワップアウトだけ発生しているのか、メジャーページフォルト発生に伴うページインまで頻発しているかまでは、把握することができません。
また、nagios-pluginsには、物理メモリの空き容量を監視するプラグインは用意されていません。もし用意されていたとしても、物理メモリの空き容量だけを把握するだけでは監視として不十分です。なぜなら、スワップメモリに空き容量があれば、そちらにスワップアウトすればよいからです。したがって、メモリの空き容量は物理+Swapのトータルで把握する事で健全性を確認できると考えることができます。
そこで、2つのプラグインを用意しました。
check_mpf の紹介
check_mpf は、指定したサンプリング期間(Default:2秒)のメジャーページフォルト数/秒(以下、MPFs)を取得し、MPFsが設定した閾値(Default: Warinig=100, Critical=1,000)以上となったときに、Warning or Criticalを返します。これで、単にLoad Averageを監視しているだけでは切り分けしにくい、 スラッシング(※1)状態をより掴みやすく なります。
Python 2.6系 or 2.7系、Linux Kernel 2.6.18以上での利用を推奨します。
サンプリング期間は連続しておらず、プラグインが起動された間のみとなっています。これは、スラッシング状態になればほぼ常時メジャーページフォルトが発生していることが珍しくなく、ある期間に絞っても問題ないと考えているためです。また、プラグインの動作をステートレスにできるため、万一プラグインにトラブルが発生しても復帰させやすくなっています。
弱点として、サンプリングを実施するために、デフォルトですと2秒、必ず待たされる事が挙げられます。そのため、Nagiosのキューイングに多少負担がかかるかもしれません。これは、先のプラグインの動作をステートレスにしたための副作用でもあります。
※1: スラッシングとは、スワップアウト・スワップインが錯綜し、他の処理が滞る状態を示す言葉です。
check_memfreetotal の紹介
check_memfreetotal は、物理メモリ+スワップメモリの空き容量の合計を、パーセンテージまたはキロバイトで監視する事ができます。これで、OOMKillerが発動しシステム障害が発生しかねない状況を、事前に察知できるようになります。
Python 2.6系 or 2.7系、Linux Kernel 2.6.18以上での利用を推奨します。
おわりに
ここまで、メモリ使用状況を監視するNagiosプラグインについてお話ししました。紹介したプラグインを用いることで、単にスワップメモリの残容量や、Load Averageの監視だけではわからない、メモリ不足に伴うスラッシング状態や、メモリ空き容量不足をより正確に監視できるようになります。
Apacheなど、利用頻度が高まるとプロセス数・メモリ使用量が増加し、最悪メモリ不足が起こりかねないプロセスを実行しているサーバで、ご利用頂ければ幸いです。
それでは皆様、ごきげんよう。
オープンソースカンファレンス 2014 Tokyo/Spring にぜひ遊びにきてください!
今回(2/28〜3/1)も、OSCにハートビーツも出展します。
ブースでは、「ハートビーツ的 インフラエンジニア度診断」を開催します(^^) iPadを使い、当社エンジニア陣の選りすぐり(?)の診断を受けていただいた方には、もれなく当社オリジナルガムをプレゼント!また、抽選でエンジニアの方ならきっとわくわくしていただけるガジェットをプレゼントします!!
また、セミナーも行います。2日目(3/1(土)) 14:00 203号室にて、「インフラエンジニアのはじめかた ~初心者からはじめてWEBサービスのインフラ構築・運用・障害対応ができるまでのステップ~」と題して、新卒や、違う業界から転職してきた同僚が、当社のエンジニアとしてどのように歩んできたのか、また組織としてどのように育成してきたのかお話しします。
あっ、斎藤もブースの店番をしております。
お誘い合わせの上、ぜひご来場ください!!!