Solaris 10をmunin-nodeで監視

前提

muninの監視サーバーを 192.168.11.1、被監視サーバーを192.168.11.2とする。被監視サーバーがSolaris 10のときのメモ

プレインストール

  • Perl 5.8以上
  • GNU make
  • Perl CPANモジュール
    • Module::Build
    • Time::HiRes
    • Net::Server
    • Net::Server::Fork

環境

CPANモジュールのインストール

% sudo su
# cpan
> install CPAN
> install LWP
> install Module::Build
> install Time::HiRes
> install Net::Server
> Net::Server::Fork

ユーザーとディレクトリの作成。

# groupadd munin
# useradd munin
# mkdir /var/munin
# mkdir /var/munin-node
# mkdir /var/run/munin
# mkdir /var/log/munin
# mkdir /etc/munin
# chown munin:munin /var/munin

SourceForge: Muninよりソースコードを入手する。その後、解凍&Makefile.configの編集

% gtar xvfz munin-2.0.6.tgz
% cd munin-2.0.6
% cp -p Makefile.config Makefile.config.org
% vi Makefile.config

編集内容は以下の通り

% diff Makefile.config.org Makefile.config
20c20,21
< PREFIX     = $(DESTDIR)/opt/munin
---
> #PREFIX     = $(DESTDIR)/opt/munin
> PREFIX     = /usr/local/munin
23c24,25
< CONFDIR    = $(DESTDIR)/etc/opt/munin
---
> #CONFDIR    = $(DESTDIR)/etc/opt/munin
> CONFDIR    = /etc/munin
45c47,48
< DBDIR      = $(DESTDIR)/var/opt/munin
---
> #DBDIR      = $(DESTDIR)/var/opt/munin
> DBDIR      = /var/munin
48c51,52
< DBDIRNODE  = $(DESTDIR)/var/opt/munin-node
---
> #DBDIRNODE  = $(DESTDIR)/var/opt/munin-node
> DBDIRNODE  = /var/munin-node
59c63,64
< LOGDIR     = $(PREFIX)/log/munin
---
> #LOGDIR     = $(PREFIX)/log/munin
> LOGDIR     = /var/log/munin
63c68,69
< STATEDIR   = $(DESTDIR)/var/run/munin
---
> #STATEDIR   = $(DESTDIR)/var/run/munin
> STATEDIR   = /var/run/munin
66c72,73
< PERL       := $(shell which perl)
---
> #PERL       := $(shell which perl)
> PERL       := /usr/local/bin/perl

コンパイル&インストール

% gmake
% sudo gmake install-common-prime
% sudo gmake install-node
% sudo gmake install-plugins-prime
% sudo cp build/node/munin-node.conf /etc/munin/

/etc/munin/munin-node.confを編集する。hostnameをコメントアウトし、allowで監視サーバーのIPアドレスを指定する。muninの監視サーバーを 192.168.11.1、被監視サーバーを192.168.11.2とするとき以下のようにする。

allow ^192\.168\.11\.1$

/usr/local/munin/sbin 以下のスクリプトは/usr/bin/perlを使うようになっているので、/usr/local/bin/perlを使うように書き換える。書き換えたら、どんなプラグインが使えるかを確かめてみる。

/usr/local/munin/sbin/munin-node-configure --suggest |& tee /tmp/configure.log #適用できるプラグインの一覧と状況
/usr/local/munin/sbin/munin-node-configure --shell |& tee /tmp/shell.log # どういうコマンドでプラグインの導入できるかの一覧
/usr/local/munin/sbin/munin-node-configure |& more #現在導入されているプラグインの一覧

munin-node-configure --suggestでどういう理由でプラグインが使えないのかをチェックできる。次のコマンドで導入可能なプラグインを一括導入できる。

/usr/local/munin/sbin/munin-node-configure --shell --families=contrib,auto | sh -x

munin-nodeを起動する。

% sudo /usr/local/munin/sbin/munin-node

動作確認

% ps -ef | grep munin
% netstat -n -a | grep 4949

一度終了させる。

% kill プロセスID

Solaris 10用に起動スクリプトを用意する。 Installation of a Munin Node on Solaris 10 x86にある起動スクリプトをそのままいただく。

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type="manifest" name="export">
 <service name="application/munin-node" type="service" version="0">
   <create_default_instance enabled="true"/>
   <single_instance/>
   <dependency name="fs" grouping="require_all" restart_on="none" type="service">
     <service_fmri value="svc:/system/filesystem/local"/>
   </dependency>
   <dependency name="network" grouping="require_all" restart_on="none" type="service">
     <service_fmri value="svc:/milestone/network:default"/>
   </dependency>
   <dependency name="name-services" grouping="require_all" restart_on="none" type="service">
     <service_fmri value="svc:/milestone/name-services:default"/>
   </dependency>
   <exec_method name="start" type="method" exec="munin-node" timeout_seconds="60">
     <method_context>
       <method_credential user="root" group="root"/>
       <method_environment>
         <envvar name="PATH" value="/usr/local/munin/sbin:/usr/bin:/bin"/>
       </method_environment>
     </method_context>
   </exec_method>
   <exec_method name="stop" type="method" exec=":kill" timeout_seconds="60">
     <method_context/>
   </exec_method>
 </service>
</service_bundle>

このファイルを~/munin-node.xmlとしたとき、以下のコマンドで導入する。

% sudo svccfg -v validate /path/to/munin-node.xml
% sudo svccfg -v import /path/to/munin-node.xml
% svcs -a | grep munin

うまくいかないときは以下のコマンドで原因を調べる。

% sudo svcs -x -v
% tail -100 /var/log/munin/munin-node.log

起動、停止は以下のコマンドで行う。

% sudo svcadm disable application/munin-node (停止)
% sudo svcadm enable application/munin-node (起動)

監視サーバーの設定

munin.conf にて以下を付け加える。

[Servername(任意の名前)]
    address 192.168.11.2
    use_node_name yes

Solaris用カスタマイズ

Apacheの計測

gamme’s direction is as pleasing to the soul.:muninのプラグインでapache関連のグラフが表示されない件より、mod_statusを有効にする。

<IfModule mod_status.c>
    ExtendedStatus On
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
</IfModule>

その後、apacheを再起動させる。

Postfixの計測

オデの日記@WEB系:muninインストールめも より、postfix_mailqueueの実行権限をrootにする。/etc/munin/plugin-conf.d/plugins.confを作成し、中見を以下のようにする。

[postfix_mailqueue]
user root

その後、munin-nodeを再起動させる。