いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.192 / 読者数:1704名

こんばんは、うすだです。

ここのところ、会社のメールサーバーの調子がよろしくありません。
まったく届かない、という最悪の事態にはならないものの、 ひどいときは日単位で遅延します。

いま調子が悪いということがわかれば、 代替手段(電話など)で連絡すればなんとかなるのですが、困るのは、 調子の悪さに気づけないときです。

たとえば、自分が送ったメールが、わりとすぐ自分宛に送られてきたため、 今日は調子がいいなあと思っていたら、相手には届いていなかったり、 相手のお返事メールがなかなか届かなかったり、といったことがしばしばあります。

相手は返事を返してくださっているのにこちらには届いておらず、 催促のメールを送ってしまい、後でフォロー(ごめんなさい)することも、 たまにですがあったりします。
(ありがたいことに、みなさん許してくださいますが。)

いまはこのくらいスパムで困っていて、このくらい配送が遅れます、 的な情報が外から見えるようになっていると、勘違いしなくていいのになと、 何かやらかす度に思っています。

少なくとも、送信側は、受け付けてから実際に送信完了するまでの時間を集計すれば、 よさそうですよね。受信側は難しそうですが…。

ちょうど今ご紹介している Munin がうってつけのように思います。
Munin でできないか、年末年始に考えてみたいと思います。

ささやかなやる気がフェードアウトしないよう祈りつつ、 今年最後のネタのご紹介を、はりきってまいりたいと思います!

今回のお題 - Munin をカスタマイズする

前回は、さまざまな情報を収集し、 それをグラフィカルに表す Munin というツールをご紹介しました。

Vol.191 - Munin でグラフィカルに状態を監視する
http://www.usupi.org/sysad/191.html

しかし、 ほんのさわりだけ(単体で使う & マスターとノードを分ける)で終わってしまいました。

ですので、今回は、もうちょっと踏み込んでみたいと思います。
具体的には、以下の内容でお送りいたします。

  • 収集する情報を取捨選択する
  • なにかあったときメールで通知する

収集する情報を選びます

Muninのマスターが収集した結果を見ると、 実にさまざまな情報を扱っていることがわかります。
(以下は前回ご紹介済みですが、念のため再度記します。)

file:///var/cache/munin/www/index.html   (Ubuntuなどの場合)
file:///var/www/html/munin/index.html   (Fedoraなどの場合)

ですが、たとえば、Apache はインストールしてあるけど監視する必要はないよとか、 ハードディスクの温度も監視したいとか、いろいろな要望があるのではないかと思います。

ノードが収集する情報は、/etc/munin/plugins/ 以下のファイルで決まります。 ここにあるファイルは、 /usr/share/munin/plugin にあるファイルのシンボリックリンクです。

  $ ls -l /etc/munin/plugins/
  total 0K
  lrwxrwxrwx 1 root root 29 Dec  4 14:54 acpi -> /usr/share/munin/plugins/acpi*
  lrwxrwxrwx 1 root root 28 Dec  4 14:54 cpu -> /usr/share/munin/plugins/cpu*
  ...

ですので、たとえば Apache 関連の情報は一切収集いらないと思ったら、 さくっと消してしまいましょう。

  # rm /etc/munin/plugins/apache*

ただ、消しただけでは munin-node に気づいてもらえないので、 再起動をしていただきます。

  # service munin-node restart

そして、おもむろに約5分待ってから前述のページを参照すると、 Apache 関連の情報がさくっと削除されている…はずです。
(ちなみに、5分待つのは、マスターが5分毎に情報を収集するからです。)

 

逆に、収集する情報を追加するには、シンボリックリンクを作成します。
たとえば、ハードディスクの温度を計測したい場合は、 hddtemp_smartctl というものを使用します。ですので、 以下の手順でシンボリックリンクを作成すればよいです。
(さらにちなみに、対象のディスクが S.M.A.R.T. に対応していないと、 温度を計測することができません。大抵は対応しているはずですが…。)

  # ln -s /usr/share/munin/plugins/hddtemp_smartctl \
  /etc/munin/plugins/hddtemp_smartctl

そして、先ほどと同様に、munin-node を再起動します。

  # service munin-node restart

そして、やはり5分ほど待ってから、前述のページを見てみてください。

 

他にも、/usr/share/munin/plugins/ 以下に様々なファイルがあります。
これはなんだろう?と思ったら、perldocで中を覗くと、何を計測するものなのかが、 それとなくわかる…かもしれません。

  $ perldoc /usr/share/munin/plugins/ファイル

メールで知らせてもらいましょう

お次は、なにかあったとき、メールで通知してもらおうと思います。

といっても、最小限的には、 以下のような1行を /etc/munin/munin.conf に追加するだけです。

  contact.コンタクト名.command mail -s 'Munin notice' root

メールと言うよりは、指定したコマンドが実行される、と言った方がよいでしょうか。 つまり、なにかあったときには、 Munin notice という題名のメールが root 宛に届きます。

ちなみに、「コンタクト名」のところには、基本的には好きな名前が入れられるようです。

で、どんなときにメールが飛んでくるかといいますと、 収集する情報にはそれぞれしきい値があり、計測した値がしきい値を越えた場合に、 その旨のメールが届きます。例を以下に示します。

  From: munin@usupi.org
  To: root@usupi.org
  Subject: Munin notice

  localdomain :: localhost.localdomain :: Disk usage in percent
      WARNINGs: / is 94.14 (outside range [10:92]).
      OKs: /var/lock is 0.00, /dev is 0.03, /dev/shm is 0.11, \
  /boot is 8.24, /var/run is 0.02.

ディスクの使用量のしきい値の下限が10%、上限が92%なのに、 94.14%にもなっているのでやばいよ、というメールです。

また、しきい値には、「warning」と「critical」の2つ種類があります。
その名の通り、warning は警告、critical は危険だよという状態です。

そして、個々のしきい値の値を知るには、 前述のページから個々のグラフのページをたどっていきます。すると、 最後の方に記載されています。
(すみません、コマンドで参照する方法がわかりませんでした。)

たとえば、Disk usage in percent (df) の場合、 デフォルトでは以下のようになっています。

FieldInternal nameTypeWarnCritInfo
/_dev_sda6gauge9298 
/dev_devgauge9298 
/dev/shm_dev_shmgauge9298 
...

92%を越えたら警告、 98%を越えたら危険だーというメールが放たれるようになっていることがわかります。

しきい値を変えてみる

しきい値をカスタマイズするには、2通りの方法があります。
ノード側で変更する方法と、マスター側で変更する方法です。

ノード側で変更するには、/etc/munin/plugin-conf.d/munin-node を編集するか、 /etc/munin/plugin-confi.d/ に新たなファイルを作り、そこにしきい値を記述します。

たとえば、前述のディスク使用量のしきい値を設定するには、 munin-node ファイルに以下を追記します。 (あるいは、/etc/munin/plugin-conf.d/df というファイルを作成し、 中身を以下にします。)

  [df]
  env._dev_sda6_warning 90
  env._dev_sda6_critical 97

そして、munin-node に再読み込みをお願いします。

  # service munin-node reload

どのように設定すればよいかは、perldoc で参照すると、大抵書いてあります。 ディスク使用量の場合は、以下を実行すると、 前述のように設定をしましょうと書いてありますので、その通りに記述するだけです。

  $ perldoc /usr/share/munin/plugins/df

 

マスター側で変更するには、/etc/munin/munin.cof を編集します。
ホストの設定のところで、以下のように記述します。
(つまり、ホスト毎に設定が必要です。)

  プラグイン名.変数名.warning しきい値
  プラグイン名.変数名.critical しきい値

たとえば、localhost に対して、前述のディスク使用量のしきい値の設定を行うには、 以下のように記述します。

  [localhost.localdomain]
      ...
      df._dev_sda6.warning 90     <= warningのしきい値の設定
      df._dev_sda6.critical 97    <= criticalのしきい値の設定

変数名は、前述のページの「Internal name」でわかりますし、 munin-run コマンドの出力結果からもわかります。
munin-run は、指定したプラグインの情報をその場で取得してくれます。
(本来は、プラグインが正しく動作するかどうか確認するためのコマンドです。)

  # munin-run df
  _dev_sda6.value 94.1392701981601
  _dev.value 0.029972376809481
  _dev_shm.value 0.114783281110297
  _var_run.value 0.0221511595125134
  _var_lock.value 0
  _dev_sda5.value 8.23514520842704

.value を取り除いた名前を指定すればよいです。

 

ちなみに、しきい値には、上限と下限があります。
いままでは上限だけを設定していましたが、「:」を使うと、下限の設定もできます。 (もちろん、critical も同様です。)

  プラグイン名.変数名.warning 下限値:上限値
  プラグイン名.変数名.warning 下限値:
  プラグイン名.変数名.warning :上限値
  プラグイン名.変数名.warning 上限値

たとえば、warning は 10〜90%、critical は 5〜97% に設定するには、 以下のように記述します。

  [localhost.localdomain]
      ...
      df._dev_sda6.warning 10:90
      df._dev_sda6.critical 5:97

 

さらにちなみに、双方とも設定した場合はどうなるかと言いますと、ただ単に、 マスター側の設定が優先されるだけのようでした。

メールの送り先を変えてみる

最初の方で、コンタクト名は何でもいいとか書いてしまいましたが、 このコンタクト名を使って、メールの送り先を振り分けることができます。

たとえば、以下のように、複数のコンタクトの設定があるとします。 (admin, www と dns ですね。)

  contact.admin.command mail -s 'Munin notice' admin
  contact.www.command mail -s 'Munin WWW notice' wwwadmin
  contact.dns.command mail -s 'Munin DNS notice' dnsadmin

ここで、マシン wwwserver のメール通知を admin と wwwadmin に対して行って、 マシン dnsserver のメール通知を admin と dnsadmin に対して行うには、 munin.conf に以下を記述します。

  contacts admin
  ...
  [wwwserver]
      ...
      contacts admin www
  [dnsserver]
      ...
      contacts admin dns

すると、ホスト単位ではありますが、 メールの送り先を振り分けることができるという寸法です。

おわりに

以上、Munin の収集する情報の選択と、メールによる通知の設定方法を、 簡単にご紹介しました。

まだまだ設定できることはたくさんあるようですが、前回と今回の分だけでも、 あれこれこねくり回して実用に近い状態に持っていけるのではないかと思います。

思ったより難しくありませんので、ぜひ、いろいろ試してみてください。

宿題の答え

前回の宿題は、

  マスターだけ or ノードだけ動作するように設定してみましょう。

でした。

まずは、マスターからまいりましょう。

マスターの実体は、cron から起動される munin-cron です。
ですので、これが起動されないよう、/etc/cron.d/munin を削除するか、 設定を無効にしてしまえばよいと思います。
後でもとに戻したいこともあると思いますので、ここは後者の方、 つまりコメントアウトで対処したいと思います。

/etc/cron.d/munin は、以下の2行のようになっています。
(以下は Ubuntu の場合で、Fedora の場合は実質1行目だけです。)

*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
14 10 * * * munin if [ -x /usr/share/munin/munin-limits ]; then \
  /usr/share/munin/munin-limits --force --contact nagios --contact old-nagios; fi
これらをコメントアウトします。
#*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
#14 10 * * * munin if [ -x /usr/share/munin/munin-limits ]; then \
  /usr/share/munin/munin-limits --force --contact nagios --contact old-nagios; fi

 

次は、ノードです。

ノードを止める場合は、service コマンドを用います。

  # service munin-node stop

ですが、再起動するとまた立ち上がってきます。
恒久的に止めるには、Fedora の場合は chkconfig コマンドを用います。

  # chkconfig munin-node off
  # chkconfig --list munin-node
  munin-node    0:off  1:off  2:off  3:off  4:off  5:off  6:off

Ubuntu の場合は、設定ファイルを改名してしまえばよいと思います。
(ファイル名の最後が .conf で終わらないようにすればよいです。)

  # mv /etc/init/munin-node.conf /etc/init/munin-node.conf.noexec

今回の宿題

今回の宿題は、

  Munin でどんなときにメールが送られてくるか、確かめてみましょう。

です。

たとえば、warning に引っかかったとき、5分おきにメールがやってくるのでしょうか。 はたまた1発だけなのでしょうか。

しきい値を一時的に変更して様子を見るだけですので、 あれこれ値を変更して確かめてみてください。(実践あるのみ!ですよ!)

あとがき

ソフトバンクと言えば、携帯でシェアを伸ばしていたり、 「光の道」構想でいろいろ提案していたり、孫社長の講演が話題になったりと、 まっとうに(?)商売されているイメージを勝手に持っていました。

そんなある日、某所経由で、以下の記事を見つけました。

光の道、その誤謬と、必死なのはなぜの話 | 無線にゃん
http://wnyan.jp/185

A案とB案があるのに実質B案しかない、なのに国などがA案に同意するのはなぜなのか、 そして、そこに隠されたソフトバンクの思惑とは…的な内容でした。 おもしろかったので、読んでみてください。

で、言いたいのは、ソフトバンクは意外と?腹黒い…ではなくて、 なにか問題があったときに、どちらか一方の話を聞くだけでは不十分なんだ、 ということです。

真実は一つ! …かもしれませんが、その真実は、見る方向によって見え方が異なる、 ということが多々あるように思います。この方向からしか見ない、ではなく、 できるだけいろんな方向から見て、全体像を把握するようにしたいなと思います。 仕事でも、仕事以外でも。

 

というわけで、今年の配信は、これでおしまいです。
行き当たりばったりに書いているにもかかわらず、 解除せずに読み続けていただきまして、たいへんありがとうございました。

来年1月は、第1日曜が2日ですので、しょっぱなから少々心苦しいのですが、 お休みをいただきたいと思います。
ですので、1月16日に発行させていただこうと考えております。

 

今回も、ここまで読んでいただき、たいへんありがとうございました。
次回は、来年の 1月16日(日) の未明にお会いしましょう!
それでは、よいお年をお迎えください。

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- もちろん年賀状はまだ書いていません。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本