2017年4月20日木曜日

Thruk monitoring 使った、多拠点Nagiosの統合をして管理を楽しよう!!


Nagiosもけっこう便利!って思っている、 なのまるです!

Nagiosの困るところを解消するツール「Thruk」を使って、多拠点Nagiosを統合しました。


もくじ



Thruk とは。

複数のNagios、またはNagios互換監視製品を統合する「GUI」です。
Nagiosの他に「Icinga, Shinken, Naemon」をサポート

Nagios互換製品などとの通信に、「livestatus」を利用しています。

メリット

以下に、メリットを提示します。
  • 複数のNagiosが統合管理出来る!(NagiosのGUIで出来ることはすべてできる)
  • Nagiosより、結果の画面反映が早い
  • 今の画面URLが共有できる!
  • 画面を戻った時に、画面位置がリセットされない!
  • オープンソース
  • 無料で使える
※ 下の2つはNagiosも同じように使えるので、一般的なメリットです。

いちいちすべて説明しないですけど、Nagios使ったことある人なら上記メリットに心当たりあると思います!

デメリット

  • UIがすべて英語(いい方法あったら知りたい!)
  • セットアップが若干面倒
  • アイテムが多くなると、表示が遅くなる(事があるらしい)
  • バージョンの差異で動作しないことがある(thruk間のバージョン差異で動かなかった)

前提条件

ざっと、以下の前提で進めました。
役割
Thrukマスター(統合WebUI)のOSCentOS7
Thrukに設定するbackendlivestatus or http
Livestatusを導入するOSCentOS 5,6,7
Nagios3.5以上で検証

Thrukマスターのセットアップ

このサーバー自身にもNagiosをセットアップ済みです。。。

Labs Repository - ConSol Labsのリポジトリ導入
sudo rpm -Uvh "https://labs.consol.de/repo/stable/rhel7/i386/labs-consol-stable.rhel7.noarch.rpm"

リポジトリを無効化しておきます。(OS標準以外は無効化ポリシーのため)
sudo yum-config-manager --disable labs_consol_stable


Thrukインストール
sudo yum install thruk --enablerepo=labs_consol_stable


ThrukマスターWebUIの設定


Apacheの設定(Cookie認証を無効化)
Cookie認証を使わないので、無効化しておきました。(お好みで。)
sudo cat /dev/null > /etc/httpd/conf.d/thruk_cookie_auth_vhost.conf


Thruk起動
sudo systemctl start thruk


これで、画面が表示されるはずです。 http://サーバー名 or IPアドレス/thruk/


Livestatusのインストール(CentOS7)



sudo yum install check-mk-livestatus --enablerepo=labs_consol_stable
ls -l /usr/lib64/check_mk/livestatus.o # インストール確認


Nagiosに設定(CentOS7)

LivestatusでNagiosの状態が取れるように設定
  • /etc/nagios/nagios.cfg
に設定。以下を追記
broker_module=/usr/lib64/check_mk/livestatus.o /var/run/nagios/live.sock event_broker_options=-1


Sockの位置はあとで使うのでメモしておく
/var/run/nagios/live.sock

Nagios リロード

sudo systemctl reload nagios

Thruk UIでの設定

http://サーバー名 or IPアドレス/thruk/#cgi-bin/conf.cgi?sub=backends
「Config Tool」 ⇒ 「Backends / Sites」から設定
設定値
Name何でもいい(loclahostとか)
Typelivestatus
Connection/var/run/nagios/live.sock(さっきのPATH)
HiddenNo
Section何でもいい(拠点名とか)
これで、保存

権限とか、Pathとか間違えていなければこれでうまくいくはず。

統合される側に「Livestatus」をインストール

  • CentOS5の場合
sudo rpm -Uvh "https://labs.consol.de/repo/stable/rhel5/i386/labs-consol-stable.rhel5.noarch.rpm"
sudo yum install check-mk-livestatus
ls -l /usr/lib64/check_mk/livestatus.o
  • CentOS6の場合
sudo rpm -Uvh "https://labs.consol.de/repo/stable/rhel6/i386/labs-consol-stable.rhel6.noarch.rpm"
sudo yum-config-manager --disable labs_consol_stable
sudo yum install check-mk-livestatus
ls -l /usr/lib64/check_mk/livestatus.o

Nagiosに設定(CentOS5)

LivestatusでNagiosの状態が取れるように設定
  • /etc/nagios/nagios.cfg
に設定。以下を追記
broker_module=/usr/lib64/check_mk/livestatus.o /var/tmp/live.sock event_broker_options=-1


Sockの位置はあとで使うのでメモしておく(位置はどこでもいいとは思う)
/var/tmp/live.sock

Nagios リロード(CentOS5,6)

sudo service nagios reload 

統合される側 backend設定(Livestatus編)

以下のパスに設定ファイルがインストールされているので、最低限以下を設定
  • /etc/xinetd.d/livestatus
    # アクセス制御
    #   only_from       = 127.0.0.1 10.0.20.1 10.0.20.2

    # These parameters are handled and affected by OMD
    # Do not change anything beyond this point.

    # Disable this services
    disable     = no # サービス有効化

    # TCP port number.
    port        = 6557

    # Paths and users.
    user        = nagios # ユーザー
    server      = /usr/bin/unixcat # unixcatのpath
    server_args = /var/tmp/live.sock # sockのpath
TCP Wrapperやiptablesで、denyにハマらないように・・・。

統合する側 ThrukUIのbackend設定(Livestatus編)

設定値
Nameホスト名とか
Typelivestatus
ConnectionサーバーのIP or 名前:ポート番号(6557など)
HiddenNo
Section何でもいい(拠点名とか)

統合される側 backend設定(http編)

httpのバックエンドも可能です!その際はThrukをインストールする必要があります。
httpsで通信できないので、httpで!
ハマりポイントなので、間違えないようにw(Thruk 2.14現在)

Thrukインストール
sudo yum install thruk --enablerepo=labs_consol_stable


統合する側 ThrukUIのbackend設定(http編)

設定値
Nameホスト名とか
Typehttp
Connectionhttp://サーバーのIP or 名前/thruk/
Auth-Key統合される側の「/var/lib/thruk/secret.key」の値
Proxy使わなければ空欄
Remote Name使わなければ空欄
HiddenNo
Section何でもいい(拠点名とか)

まとめ

ざっとこんな感じで、5台のNagiosを統合管理できるようにしました!
このサーバーはあのNagios!?とか、
一時downtime設定しよう!「あ、あっちのNagios設定し忘れた」とか
減るかと思います~

参考

MK Livestatus

Thruk - Monitoring Webinterface for Naemon, Nagios, Icinga and Shinken

Thruk is a Monitoring Webinterface for Naemon, Nagios, Icinga and Shinken

Zenback