「システム監視」カテゴリーアーカイブ

Nagiosで警告音を鳴らしてみた。

Nagiosで障害検知が出来る様になって、リアルタイムで障害を検知したいということになりました。

メールで通知しても、メールを見るまでは障害を確認出来ない。

と言うことで、Nagiosの監視をブラウザでモニタリングしている状態で、音が鳴る様に設定した。

まず、音のファイルを準備して、以下に配置する。

warning時の音
/usr/local/nagios/share/media/warning.wav

critical時の音
/usr/local/nagios/share/media/critical.wav

/usr/local/nagios/etc/cgi.cfgを開いて以下の様に、criticalとwarningの設定を有効にする。

nagiosを再起動させれば完了。

ブラウザでモニタリングすると、障害発生時に音が鳴る様になる。

が、ここで問題!ブラウザによって挙動が異なります。

①IE (IE 11)の場合
音が鳴るタイミングで、ネットワーク認証を求められます。

②FireFoxの場合
音が鳴らない。

③Chromeの場合
Chromeは正常に音が鳴る。

この問題を解決しようと試みたが、FireFoxではFireFoxのプラグインがありそうなのだが・・・、鳴らない状態も欲しいので、取りあえず放置!

IEは、解らない。対策を見つけるに至っていない。
解決策が見つかったら、どこかのタイミングで記録を残す予定。

以上

Nagiosの操作方法(ちょっとだけ)

前回までにインストールを行ったNagiosですが、操作方法が解り難いです。

そこで、システム監視サービスの状態だけ簡単に説明します。

まずはインストールを行ったNagiosにログインします。
(デフォルトで、IDとパスワードはnagiosadminになっています。)

Nagiosホーム画面

アナウンスが出ていますが、気にせず(^^ゞ

トップ画面では、状態が確認出来ません。
監視状態を確認するには、左メニューから項目を選択します。

Nagiosメニュー

1.全般

1)ホーム

ログイン後のホーム画面が表示されます。

Nagiosホーム画面

2)ドキュメント

Nagiosのマニュアルなどが公開されている英語のサイトが表示されます。OSSは英語を読まないとダメですね。
ということで、説明は省略します。

2.現在の状態

1)総合監視状態

総合監視状態を表示しています。

  • ネットワーク障害
  • ホストの稼働状態
  • サービスの稼働状態
  • 監視機能の設定状態

など、全体のサマリー的な要素を含んでいます。安定して稼働状態にあるシステムで、現状を大枠で確認したい場合にはこの画面が役立つと思います。

Nagios総合監視状態画面

2)マップ

マップ画面は、ネットワーク構成図を表示しています。

どのマシンで障害が発生しているか全体を俯瞰的に確認出来ます。

Nagiosマップ画面

3)ホスト

ホスト毎の稼働状況が一覧表となって表示されます。

 

Nagiosホスト稼働状況画面

4)サービス

前ホストの監視対象項目が一覧で表示されます。

監視項目を「監視サービス」とし、その一覧をホスト毎の一覧表として表示してくれます。

Nagios全ホストのサービス一覧画面

以下、「T.B.D(未定・後で決める予定)」となっている項目については、適宜更新を予定しています。

障害の発生状況を簡単に確認するぐらいのレベルであれば、この程度で第一歩を踏み切って、詳細については触りながら確認すれば良いと思います。

5)ホストグループ

T.B.D

6)サービスグループ

T.B.D

7)障害

T.B.D

3.レポート

T.B.D

4.システム

T.B.D

nagiosにグラフ機能を追加する。nagiosgraphの追加 【第2回目】

前回に引き続き、nagiosgraphの設定を進めます。

前回までにnagiosgraphの初期インストールが完了したので、確認と設定を行います。

問題がなければ、nagiosをリスタートする。

nagiosのホームページを確認して表示されていれば、取りあえずOKです。まだグラフ表示はありません。

nagiosgraphが動いているかどうかを確認します。

なんか.rrdファイルが出来ていればOK。

Apacheを再起動します。

この状態で確認を行ってみます。

以下のURLをブラウザで開きます。

エラーが発生したら、取りあえず、SELinuxを止めてみます。

再度下記のURLを開いてみます。

こんな画面が表示されれば、インストールは完了していると思います。

HostとServiceを適当に選んで表示させてみてください。

 

次に、nagiosのテンプレートファイルを変更します。

以下の内容(INSTALLファイルに記載あり)を/usr/local/nagios/etc/objects/templates.cfgの最後に追加します。

後は、グラフ表示を行いたいサービスに対しgraphed-serviceの設定を追加します。

/usr/local/nagios/etc/objects/localhost.cfgで、グラフ表示を行いたいserviceに対して以下の様に設定を追加する。

ホストへのPINGに対してグラフ表示を追加した例です。
後は、必要に応じて同じように設定を追加するだけです。

残念ながら日本語には対応していないようなので、注意してください。

最後に、nagiosを再起動します。チェックはご自身でお願いします。

nagiosの画面を確認してみてください。

以上で設定は終わりです。

 

nagiosにグラフ機能を追加する。nagiosgraphの追加【第1回目】

nagiosのインストールがほぼほぼ出来てきたのですが、やはり見栄えがもう少し!ということで、nagiosでグラフ表示を行うことにしました。

ということで、nagiosgraphを追加します。

nagiosgraphを以下の方法でダウンロードしてきます。

ところが、環境によってはダウンロード出来ないことがあるようです。

私の環境では、2度ほど躓きまして、結局WinSCPを使ってWindows PC転送することになりました(^^ゞ

ダウンロードが完了したら、いつもの調子で展開します。

ここまでは簡単ですねw

ここで、インストールの方法をWebで検索する前に、インストール方法が記載されているINSTALLファイルを覗いてみます。

見てみると、install.pl –check-prereqなる文字列が・・・
インストール前の事前チェックを行う機能がnagiosgraphには備えられているようなので、取りあえず、チェックしてみます。

「FAIL」の文字が見受けられます(TT)
幾つかインストールを行う必要がありそうです。

CGIはperl-CGI
RRDsはrrdtool-perl
Time::HiResはperl-Time-HiRes
GDはperl-GDが必要です。

ということで、yumでインストール開始します。

もう一度インストール前の確認を行います。

Nagios::Configの項目にFAILが見受けられます。
最新版のNagiosを使用しているので、一旦無視して作業を進めます。

インストール対象がCentOS(RedHat系)なので、以下のオプションを追加してインストールを実行します。

こんな感じで取りあえずのインストールは完了。

次回につづく。。。

nagiosでWindows Serverを監視する。

nagiosのお題はWindows Serverの監視です。

前回までに、nagiosのインストールが完了し、メールの設定も追加しました。
ファイルの更新を監視して、ファイルが一定期間監視出来ているかを監視することにも成功しました。

今回は、Windows Serverを監視します。

あちこちで紹介されている内容を確認しましたが、インストールは色々と課題があるようですね。
特に、Linuxのアクセス権については、各サイトで記載されている内容には課題が残されているとみてよいでしょう。
本サイトで記載している内容でも、アクセス権の付与に関しては、SELinuxの課題などを考えると完ぺきとは言い難い状況にあると思いますが、SELinuxの設定を施すことで回避が可能であることを記載しており、回避策を練る必要があると思います。

さて、そんな課題を一旦棚上げにして、Windowsサーバの監視に移りたいと思います。

Windowsというか、Windows(クライアントOS:7とか8とか10?はやってないけど・・・)でも同じことになると思います。

他のサイトでは、監視ホストつまりnagios本体をインストールした環境における設定をまずは整えてから、Windows側の設定を行っている様なサイトもちらほら見受けられますが、まずは、Windows側の設定を行いたいと思います。

それでは、最初に環境の説明を行います。

1.今回の対象環境

nagiosホスト : Linux Cento OS 6.x

監視対象   : Windows Server 2012 R2

nagios本体バージョン:4.1.1

2.Windows側の準備作業

それでは、最初に以下のサイトから必要なモジュールをダウンロードします。

https://www.nsclient.org/download/

2015-12-16現在において、上記のホームページ上では0.4.4.15がLatestリリースとされていますが、画面上部の「Download」には、0.5.0と0.4.4が見受けられます。
0.5.0のstable releasesが提供されていれば、それを使うのが良いと思いますが、現時点ではnightly buildsしか提供されていませんでした。
どうしても試したい方は、nightly buildsを使ってみるのも良いのですが、stable releasesを選択する方が良いです。

Download→0.4.4を見てみると、0.4.4.19が最新のstable releasesとして提供されておりましたので、そちらを使うことにしました。

ということで、今回使用したのは、NSClient++ 0.4.4.19です。
必要に応じて、最新版をご確認下さい。

ダウンロードしたNSCP-0.4.4.19-x64.msiをダブルクリックすると以下の画面が開きます。後は画面の指示に従って進めます。

「Next」ボタンを押して次へ。

「Generic」で良いと思います。「op5」の事例が見つからなかったのもありますが、過去にセキュリティ問題を抱えた経緯があるので、心配掛けないためにも取りあえず、「Generic」としました。

個人的には、「Custom」もしくは「Complete」でLuaスクリプトまで入れたい気持ちもあるのですが、稼働している環境にLuaを入れてドタバタするには嫌なので、取りあえず「Typical」で作業を進めます。

 

ここからよく解らん(^^ゞ

 

Allowed hosts : NagiosをインストールしてあるサーバのIPアドレスを入力します。

Password   : 任意のパスワードを指定します。
Modules to loadには、必要な項目をチェックします。
Enable Common Check plugins    :基本モジュールなのでチェック
Enable nsclient server (check_nt) :こちら対象となるWindowsの死活監視を行うためにチェックします。
Enable NRPE Server(check_nrpe):使うのでチェック。
一応、Secureな状態にしてみました。

SNCAとWebは取りあえず全部チェックしてみます。

 

インストールの準備が完了しましたので、「Install」ボタンをクリックしてインストールを開始します。

Windows側から変更の許可を求められますので、こちらも「はい」をクリックしてインストール作業を進めます。

インストール作業中です。そんなに時間は掛かりませんでした。

インストールが完了しました。

タスクマネージャ→サービスを確認して、NSClient++が起動していることを確認出来ます。

 

インストールが成功している様子なので、以下続いて設定を少しだけ変更します。

コントロールパネル→管理ツール→サービスを起動します。

「NSClient++(x64)」をダブルクリックして、プロパティの変更を行います。

 

「ログオン」タブを選択。

「デスクトップとの対話をサービスに許可」にチェックを入れて、「OK」をクリック。

以上で、Windows側の設定が完了しました。

3.Nagiosホスト(Linux)側の設定

1)nagiosの監視項目を追加する。

/usr/local/nagios/etc/nagios.cfgファイルにある以下の行を有効にする。

cfg_file=/usr/local/nagios/etc/objects/windows.cfg

2)windows.cfgの設定を変更する。

addres項目に対象となるWindowsのIPアドレスを指定する。

3)nagiosの再起動

設定内容の確認を

で実施して問題なければ、nagiosを再起動します。

以上で設定が完了し、確認を実施すればOKです。

なお、別途Windows側で、5666と12489ポートを解放する必要があります。

 

nagiosをソースからインストール。SELinuxの対応

前々回の投稿で記載した内容で、nagiosのインストールを行い、SELinuxがPermissiveモードになった状態で動作が出来る様になっていると思います。

SELinuxがPermissiveな状態ですと、セキュリティ上はあまり宜しくない状態です。

SELinuxに設定を行うことで、SELinuxがEnforcingモードになっても動作出来る様に設定を施していきます。

Step1:環境確認と準備

色々と方法はあると思いますが、ここでは、SELinuxの設定を行うために、audit2allowコマンドを使用します。
audit2allowコマンドが使用可能かどうかを確認します。

上記の様に表示されれば、audit2allowコマンドは使用可能な状態にあります。

次のステップに進んでください。

audit2allowコマンドが見つからない場合には、インストールを行います。

インストールが正常に終了したことを確認して次のステップへ進みます。

Step2:SELinuxへの設定用ファイルを作成する。

取り敢えず、SELinuxをPermissiveモードにしておきます。

この状態で、許可して欲しい操作を行います。

例えば、CRITICALな障害を開いて、通知を強制的に発行します。

操作を実行した後に、以下のコマンドを実行して許可を必要とする内容の確認を行います。

私の環境で許可を必要としていたのは、どうも上記の1件だけだった様です。
環境により異なる様ですので、必要に応じて対応を考えてください。
なお、nagiosのサポートページには、この後説明するSELinuxの設定ファイルの記述例が記載されている様です。
使えるかどうかはご自身でご判断下さい。
私は、私の環境に合った方法で対応を試みます。
こちらも、対応が十分とは言えません。全ての操作でセキュリティの許可を取ったとは言えないからです。
ちなみに、何故か?nagiosのフォルダーとかファイルが直接影響していない感じなので、そこそこ上手く設定出来ていたと思いますが・・・その辺は自己責任でお願いします。オープンソースですから(^^ゞ

で、少し余談が入りましたが、以下のコマンドを実行して必要な設定ファイルを作成します。

httpd_sys_content_tに関連する項目だけを抜き出して、許可ファイルを作成する例です。
コマンドの出力結果には、次に実施するべき操作が記載されています。
画面の操作に従って、操作を続けます。次のコマンドを実行します。

この設定にはしばらく時間が掛かります。

私の環境では1分程度掛かったでしょうか?
止めたくなってしまったりしましたが、我慢して待ちます。

この後、正常に完了しましたら、SELinuxの設定を有効にします。

動作確認を行ってOKなら、作業は完了です。

これでセキュアな状態を維持しつつ、nagiosが使える様になりました。

このSELinuxの設定方法は、他でも利用できます。

ご自身の環境に合わせて設定を行ってみてください。

 

nagiosでファイルの更新を監視する。

nagiosでファイルの更新を監視します。

一定期間毎にファイルの更新が行われていることで、死活監視を行いたい場合があります。
今回は、対象ファイルの更新が行われいることを確認することで、障害の検知を行う方法について記載します。

使用するnagiosのチェックモジュールは以下の通りです。

chekc_file_age

では、ファイルの更新監視機能を作成します。

まず最初に、

/usr/local/nagios/etc/objects/commands.cfg

に以下の内容を記載します。(最後で良いでしょう)

これで、このコマンドが使える様になりました。

実際に監視サービスとして記述する為、

/usr/local/nagios/etc/objects/localhost.cfg

に以下の内容を追加します。

ここでは、/var/log/messagesファイルの更新状況を監視しています。

更新が一定期間無いと障害として検知されます。

ここで、stderr: Can’t locate utils.pm・・・・・とエラーが発生しました。

 実は・・・・

nagios 4.1.1のcheck_file_ageは問題があるようです。
前回、インストールを行ったnagios-plugin-2.1.1では以下の修正を行うことで、正常に動作させることが可能です。
上記の結果にならない時には

修正個所は以下の通りです。

/usr/local/nagios/libexec/check_file_age

↓↓↓↓↓変更↓↓↓↓↓↓

 

これで、check_file_age自体の問題はクリアになるはずです。

 

nagiosをソースからインストール。そして日本語化もやっておこう!

前回まで、nagiosをyumリポジトリでインストールしたが、日本語化が上手くできない。

画面左のメニューを日本語化するのであれば、適当にファイルを日本語に修正すれば出来るのだが・・・・やはり違和感が残る。

取り敢えずやってみよう!?ということで日本語化を行ってみる。

ついでに、せっかくソースからインストールするのであれば、最新版(2015-12-02現在 4.1.1)をインストールすることにした。

普通は入れていると思うのですが、PHPが入っていないとまずいです。

ということで、以下のコマンドでPHPがインストールされているか確認します。

何も表示されない場合は、インストールされていません。
以下のコマンドでインストールしてください。

それ以外にも必要なパッケージが入っているか確認してインストールを開始します。

参考までにインストールしたパッケージのやり方を記載しておきます。

環境によって異なることにご留意下さい。

では、nagios本体をダウンロードします。
最新版は適宜ネットで確認して下さい。
OSSとして提供してくださっている方に感謝をしながらダウンロードしましょう!

(全部1行で記述)

展開する。

 

展開されたら、パッチをダウンロードしてパッチを充てる!

日本語化パッチを提供してくれている方に感謝しながら・・・日本語化パッチを入手しましょう!

(対象ファイルは、https://dev.momo-i.org/projects/nagios/filesで確認 バージョン番号は合わせること)

こんな感じで必要なものを準備する。

とにかくソースを解凍して、パッチ充ててと作業を進める。

ここで最後に実施したhtpasswdコマンドは、nagiosのウェブ画面へログインする際のIDとパスワードになります。
CGIの動作にも影響するみたいな気がする。

yumでインストールする場合とパスワードの設定が変わっているので注意です。

次にnagiosとapacheのグループを関連付けます。

時折、nagiosCGIへのアクセスが拒否されることがあるようです。
サービスを起動する前に、以下のコマンドを発行すると復旧するのですが、下記のコマンドは一時的な対策を行っているだけのものなので、あまり宜しい対策とは言えないと思います。
出来れば、リブートして確認するなどしてみると良いと思います。

それでもダメな時は以下のコマンドを実行してみてください。


# service nagios startサービスを起動する。nagiosとhttpdの両方ともやってみた。

 

で、ブラウザで開いてみる。

https://xxxxxx/nagios

開くと、IDとパスワードを聞かれるので、設定したIDとパスワードでログインする。

取り敢えず、なんとなく開くはず。

次に、nagiosプラグインをインストールする。

またしてもダウンロード
https://www.nagios-plugins.org/download/から最新のnagios-plugins-2.1.1.tar.gzをダウンロードする。

※INSTALLファイルを読むと書いてあります。

こんな感じで完成….だと思っていました。

ここでトラブル発生です。

selinux がenforce状態(有効)になっている状態では、nagiosのプラグインが正常に動作してくれない場合があります。

例えば、CRITICALな障害を発生させて、通知を行ったときに以下のエラーが発生します。(日本語化しているので日本語メッセージです。)

まずは、簡単な対策としては、SELinuxをPermissiveモードに切り替えて運用する方法です。

SELinuxの稼働状況を確認します。

getenforceコマンドで現在の状態を確認します。
Enforcing:有効な状態(許可されていないコマンドは実行が出来ません。
Permissive:無許可なコマンドの実行時には、ログを記録して実行を行います。なので、実質的には無効な状態と同じでしょう。
Disable:無効な状態(ログも残しません)

setenforce 0とすることで、Permissiveモードに設定しています。setenforce 1とすると、Enforcingモードになります。

この状態でnagiosは正常に動作するはずです。

さて、ここまででnagios自体の設定に問題が無いことが確認出来るかと思いますが、SELinuxが無効になっている状態なので、セキュリティ的には宜しくないのでは?ということになります。

そこで、セキュアな状態を維持するために、SELinuxをEnforcingモードにしても動作する様にすることが必要となります。

このままでもいいや!と言う方は、ここまででインストール作業は完了です。

いやいや、セキュアな環境を維持したいんだ!!と言う方は、今後の投稿に期待してください。

SELinuxを有効にしても動作させる方法を新しい投稿に記載しました。

nagiosにFTPサーバのチェックを追加する(ローカルホスト)

nagiosを稼働中のローカルサーバで、FTPサーバの稼働状況をチェックする。

下記ファイルに対し以下の設定を追加する。

/usr/local/nagios/etc/objects/localhost.cfg

 

 

最後にnagiosを再起動します。

 

 

 

以上

今更だけど、CPANをインストールする。そして、モジュールを追加してみる。

Linux(CentOS 6.7を使用中)で、Perlを使うのはデフォルトでインストールされている環境だけでは物足りなくなることに。

一般的には取りあえずCPANを入れます。

 

こんな感じでインストールします。

でcpanを起動する。

 

入力を間違って、バックスペースを押すと・・・・^H^Hって・・・あれ?バックスペースがまともに入力出来ねぇじゃねぇか!?

ということで、ネットで調べて以下をインストール

 

自動でインストールしてくれます。

一度CPANから抜けます。

 

もう一度、cpanへ入ります。

 

無事、バックスペースが使える様になりました(^^ゞ
#いや~久しく使っていないと忘れますねぇw

さてさて、問題はインストールしたいモジュールがDate::Parseなんです。と言うことで

 

ということで、必要なインストール作業は終了しました。

本音は、nagiosで使いたい処理でperlを使っていて、これをやらないと動かないんです(^^ゞ