読者です 読者をやめる 読者になる 読者になる

harry’s memorandum

おれおれメモ

nagiosインストール備忘録 - 2

nagios

見た目の変更

標準のnagiosのWebインターフェイスは少し古くさいので、Web2.0っぽく変えてみる。

使用するスキンとアイコン

ポップな感じのスキン nuvola と logo。VerdorLogosは色々なUNIXベンダーのロゴがあっていい感じ。

Nuvolaインストール

nuvola.tar.gzを 展開して $NAGIOSHOME/share/ 以下にコピーすればOK.

 $ mkdir archive
 $ mv nagios-nuvola-1.0.3.tar.gz; cd archive
 $ gzip -cd nagios-nuvola-1.0.3.tar.gz | tar xvf -
 $ \cp -pr html/* /home/nagios/share/

画面のロゴのインストール

CentOSならCentOS、SolarisならSun、HP-UXならHPのロゴにしたいので、
好きなロゴをNagiosExchangeから適当にダウンロードして、$NAGIOSHOME/share/images/logos に展開。

 $ gzip -cd logos-v1.1.tar.gz | tar xvf -
 $ gzip -cd imagepack-ubuntu.tar.gz | tar xvf -
 $ \cp -pr logos/* $NAGIOSHOME/share/images/logos/

nagiosのアイコン定義ファイル hostextinfo.cfg を作成

こういう定義をいちいち手で書いていくのは面倒。

define hostextinfo{
    name             www
    icon_image       www.gif
    icon_image_alt   www
    vrml_image       www.gif
    statusmap_image  www.gd2
    register         0
    }

シェルスクリプト作成。

#!/bin/bash
imagedir=/home/nagios/share/images/logos
#hostextinfor_cfg=/home/nagios/etc/objects/hostextinfo.cfg

cd $imagedir
for i in *gd2
do
  f_name=${i%.*}
  if [ -f $f_name.png ]
  then
    image=$f_name.png
  elif [ -f $f_name.gif ]
  then
    image=$f_name.gif
  elif [ -f $f_name.jpg ]
  then
    image=$f_name.jpg
  fi

cat <<EOF
define hostextinfo{
    name             $f_name
    icon_image       $image
    icon_image_alt   $f_name
    vrml_image       $image
    statusmap_image  $f_name.gd2
    register         0
    }
EOF
done

上記シェルスクリプトをfoo1.shとか適当に名前をつけて実行。

 $ foo1.sh > /home/nagios/etc/objects/hostextinfo.cfg

OSごとのtemplateを設定。

同じテンプレートなんだけど、一応名前だけaliasっぽく別名にしておく。そうすることで、監視するホストのカテゴリがわかりやすくなる。

 $ cat /home/nagios/etc/objects/templates.cfg
define host{
    name            aix-server
    use             linux-server
}
define host{
    name            hpux-server
    use             linux-server
}
define host{
    name            solaris-server
    use             linux-server
}
define host{
    name            suse-server
    use             linux-server
}
define host{
    name            redhat-server
    use             linux-server
}
define host{
    name            centos-server
    use             linux-server
}

ホストの一覧は、hosts.cfgにまとめておく。こんなかんじ。AIXはAIXのテンプレート、HP-UXはHP-UXのテンプレート

define host{
        use            aix-server
        host_name      aix001
        alias          aix001
        parents        192.168.1.1
        hostgroups     aix_servers
}
define host{
        use            hpux-server
        host_name      hpux001
        alias          hpux001
        parents        192.168.1.1
        hostgroups     hpux_servers
}

すでに、ホスト一覧のcfgでOSのカテゴリをわけているので、
ホストに対してアイコンの設定を自動生成しやすくなる。
で、自動生成するrubyスクリプト。

#!/usr/bin/ruby

flg = 0
nagios_server = "mynagios"
h = {}
hostconfig = []

f = open("hosts.cfg")
f.each {|s|
  flg = 1 if s.split[0] =~ /^define/ && s.split[1] =~ /^host/
  flg = 0 if s.strip == '}' 
  h[s.split[0]] = s.split[1] unless s.split[0] =~ /^#.*/ if flg == 1
  hostconfig << h.dup unless h.size == 0 if flg == 0
}

hostconfig.each {|h|

  puts "define hostextinfo{"

  if h["host_name"] == nagios_server.chomp
      puts "    use              nagios"
  else
    case h["use"]
      when "aix-server"
        puts "    use              aix"
      when "hpux-server"
        puts "    use              hpux"
      when "solaris-server"
        puts "    use              sunlogo"
      when "linux-server"
        puts "    use              redhat"
      when "centos-server"
        puts "    use              centos"
      when "redhat-server"
        puts "    use              redhat"
      when "suse-server"
        puts "    use              novell40"
      when "windows-server"
        puts "    use              win40"
      when "generic-switch"
        puts "    use              router"
      else
    end 
  end 

  puts "    host_name        #{h["host_name"]}"
  puts "}" 
}

foo2.rbでも名前つけて、hostextinfo.cfgに追加

 $ ruby foo2.rb >> /home/nagios/etc/objects/hostextinfo.cfg

とうぜん、/home/nagios/etc/nagios.cfgには上記のcfgは登録しておく必要がある。

cfg_file=/home/nagios/etc/objects/hosts.cfg
cfg_file=/home/nagios/etc/objects/hostextinfo.cfg

全部終わったら、cfgチェックして、nagiosを再起動。

 $ sudo /home/nagios/bin/nagios -v /home/nagios/etc/nagios.cfg
 $ sudo /etc/init.d/nagios restart

スキン変えた画面。
f:id:dharry:20080916052742p:image