運用管理ツール「Hinemos」によるサーバー死活監視
サーバーの運用環境において、トラブルがいつ発生するのかを予測することは難しい。そのため、サーバーやそのサーバー上で動作するソフトウェアに問題が発生した際に迅速にそれを知ることができるよう、ツールなどを使ってサーバーを監視するのが一般的だ。このようなツールの1つにNTTデータが開発するオープンソースの運用管理ツール「Hinemos」がある。今回はHinemos 4.0を使ってサーバーの死活監視を行う方法について解説する。
目次
無料で利用できるオープンソースの運用管理ツール「Hinemos」
複数台のサーバーマシンを運用している場合、運用を容易にするためになんらかの監視ツールを使用することが一般的だ。監視ツールは一定の間隔でマシンの状態をチェックし、問題が発生していれば管理者にそれを通知する。これにより、管理者は迅速にトラブルの発生を知ることができる。
監視ツールにはシンプルなものから多機能なものまで多くのものあり、その提供方法もさまざまだ。今回紹介するHinemosはNTTデータが2005年より公開している運用管理ツールで、無償で利用可能なオープンソースソフトウェアながら商用製品と比べても遜色ない豊富な機能を備えているのが特徴である。
Hinemosが備える機能
Hinemosは単なる監視ツールではなく、複数台のマシンをより効率良く管理することを目的とした「運用管理ツール」と呼ばれるソフトウェアだ。Hinemosが持つ機能は大きく分けて次の5つに分類できる。
- 複数のマシンの情報を一元管理するリポジトリ情報管理機能
- 複数のマシンやソフトウェアの稼働状況、イベントログなどを管理する監視管理機能
- CPUやメモリ、ストレージ、ネットワークといったハードウェアリソースの使用状況をリアルタイムで収集・表示する性能管理機能
- 複数のマシンに対しジョブを一括管理するジョブ管理機能
- 複数のマシンに対しバッチの実行や起動/停止/再起動、アップデートなどをまとめて実行する一括制御機能
本記事ではこのうち、サーバーの監視を行うための「監視管理機能」と「性能管理機能」の使い方について紹介していく。
Hinemosの構成と動作環境
Hinemosは「マネージャ」と「クライアント」、「エージェント」の3つから構成されている(図1)。
マネージャは実際に各種監視を実行するソフトウェアで、監視対象に対し各種アクションを行ってそのステータスを取得するとともに、データベースにそれらを蓄積する。クライアントは管理者のPC上で実行するソフトウェアで、マネージャと通信して取得した情報を表示したり、マネージャの動作設定を行う機能を持つ。エージェントは監視対象とするサーバーにインストールする監視用のソフトウェアだ。マネージャは監視対象にインストールされたエージェントと連携することで、より詳細な情報を取得したり、またバッチや各種管理処理を実行させることができる。
公式にアナウンスされているマネージャおよびエージェント、クライアントの動作OSは以下のとおりだ(表1)。
コンポーネント | 動作OS |
---|---|
マネージャ | Red Hat Enterprise Linux 6およびOracle Linux 6 |
エージェント | Red Hat Enterprise Linux 4/5/6、Windows Server 2003/2003 R2/2008/2008 R2/2012 |
クライアント | Windows Server 2008およびWindows 7 |
CentOSなどのRed Hat Enterprise Linuxの互換OSは正式な動作OSとしては検証されていないが、問題無く動作するようだ。本記事では、Cent OS 6.3での動作検証を行っている。
ちなみにHinemosはpingやHTTP/SQLクライアント、SNMPクライアントなどの機能も備えており、マシンの死活監視やサービスの監視を行うだけであればエージェントは不要である。エージェントについて詳しくはHinemosのドキュメントなどを参照していただきたい。
Hinemosのインストール
それでは、Hinemosのインストールや環境設定について紹介していこう。まず、監視用サーバーとして利用するマシンにHinemosマネージャをインストールしていく。
必要なパッケージのインストール
Hinemosの実行にはJavaの実行環境が必要だ。Hinemosのインストール時には必要なパッケージのチェックが行われるので、事前にインストールを行っておく必要がある。Java環境がインストールされていない場合、次のようにしてインストールしておく。
# yum install java-1.6.0-openjdk
また、SourceForge.JPのHinemosプロジェクトで配布されているHinemosマネージャは32ビット版のみだ。64ビット環境にもインストールは可能だが、その場合あらかじめ32ビット版の関連ライブラリをインストールしておく必要がある。筆者が検証したところ、CentOSのデフォルト環境ではreadlineライブラリの32ビット版が不足していたので、こちらもインストールしている。
# yum install readline.i686
Hinemosマネージャのダウンロードとインストール
HinemosマネージャはSourceForge.JPのHinemosプロジェクトからダウンロードできる。記事執筆時点での最新バージョンは4.0.2で、「hinemos_manager-4.0.2_rhel6_32.tar.gz」がダウンロードすべき配布アーカイブだ。
ダウンロードしたアーカイブファイルを適当なディレクトリに展開し、含まれる「manager_installer_JP.sh」スクリプトをルート権限で実行するとインストールが開始される。
# ./manager_installer_JP.sh ------------------------------------------------------- Welcome to the installation for Hinemos Manager Version 4.0.2 Copyright (C) 2012 NTT DATA Corporation ------------------------------------------------------- Hinemosマネージャのインストールを開始します。よろしいですか?(Y/N デフォルト:Y) : : :
インストーラではいくつかの質問が提示されるが、基本的にはすべてデフォルトのままで問題ない。途中で「hinemos」ユーザーを作成する個所でパスワードの入力が求められるが、ここでは適当なパスワードを設定しておこう。
ユーザ hinemos の確認中... グループ hinemos を作成しました。 New password: ←パスワードを入力する Retype new password: ←再度同じパスワードを入力する Changing password for user hinemos. passwd: all authentication tokens updated successfully. ユーザ hinemos (グループ hinemos)を作成しました。
なお、パッケージが不足しているなどのエラーでインストールが中断された場合、Hinemosが使用するPostgreSQLなどのプロセスが起動したままの状態になることがある。この場合、再インストールはこれらのプロセスを終了させてから行わなければならない。インストールに失敗した場合、psコマンドなどでプロセスをチェックして所有者が「hinemos」になっているプロセスを終了させ、その上でHinemosのインストール先ディレクトリ(デフォルトでは/opt/hinemos)を削除してから再度インストールすると良いだろう。
メール通知の設定
Hinemosでは、メールを使って管理者に対し通知を行う機能が搭載されている。この機能を利用する場合、あらかじめHinemosマネージャ側で送信先メールアドレスなどの設定を行っておく必要がある。なお、メールの送信はHinemosマネージャが持つSMTPクライアント機能を利用するため、Hinemosマネージャが動作しているマシン上でSMTPサーバーが稼働している必要はない。
メールサーバーの設定は、Hinemosマネージャのインストールディレクトリ以下のetc/jboss/mail-service.xml(デフォルトでは/opt/hinemos/etc/jboss/mail-service.xml)ファイルに記述する(リスト1)。最低限変更が必要な部分については太字で示してある。
リスト1 メールサーバー関連の設定が記述されているmail-service.xmlファイル
<mbean code="org.jboss.mail.MailService" name="jboss:service=Mail"> <attribute name="JNDIName">java:/Mail</attribute> <attribute name="User">nobody</attribute> <attribute name="Password">password</attribute> <attribute name="Configuration"> <!-- A test configuration --> <configuration> <!-- Change to your mail server prototocol --> <property name="mail.store.protocol" value="pop3"/> <property name="mail.transport.protocol" value="smtp"/> <!-- Change to the user who will receive mail --> <property name="mail.user" value="nobody"/> <!-- Change to the mail server --> <property name="mail.pop3.host" value="pop3.nosuchhost.nosuchdomain.com" /> <!-- Change to the SMTP gateway server --> <property name="mail.smtp.host" value="smtp.nosuchhost.nosuchdomain.com"/> <!-- Use SMTP AUTH or not --> <property name="mail.smtp.auth" value="false"/> <!-- The mail server port --> <property name="mail.smtp.port" value="25"/> <!-- Change to the address mail will be from --> <property name="mail.from" value="nobody@nosuchhost.nosuchdomain.com"/> <!-- Enable debugging output from the javamail classes --> <property name="mail.debug" value="false"/> <property name="mail.smtp.timeout" value="300000"/> </configuration> </attribute> <depends>jboss:service=Naming</depends> </mbean> </server>
このファイルで設定が必要なのは表2の部分だ。これらを適切に変更しておこう。
設定項目 | 説明 |
---|---|
<property name="mail.smtp.host" value="smtp.nosuchhost.nosuchdomain.com"/> | 「value=""」の値にメールを送信するSMTPサーバーのホスト名を指定する |
<property name="mail.from" value="nobody@nosuchhost.nosuchdomain.com"/> | 「value=""」の値にメールの送信元メールアドレスを指定する |
<property name="mail.smtp.auth" value="false"/> | SMTP AUTHを使用する場合、「value="true"」を指定する |
<attribute name="User">nobody</attribute> | SMTP AUTHを使用する場合、認証に使用するユーザー名を「nobody」の代わりに指定する |
<attribute name="Password">password</attribute> | SMTP AUTHを使用する場合、認証に使用するパスワードを「password」の代わりに指定する |
なお、この設定ファイル中にはpop3関連の設定も記載されているが、POP3関連の機能は使用しないのでデフォルトのままで構わない。
また、メールの送信元情報はHinemosマネージャのインストールディレクトリ以下のetc/hinemos.propertiesファイル(デフォルトでは/opt/hinemos/etc/hinemos.properties)に記述されている(リスト2)。
リスト2 メールの送信者に関する設定が記述されているhinemos.propertiesファイル
## Notify (Mail) : Mail Header common.mail.from.address=admin@hinemos.com common.mail.from.personal.name=Hinemos Admin common.mail.reply.to.address=admin@hinemos.com common.mail.reply.personal.name=Hinemos Admin common.mail.errors.to.address=admin@hinemos.com ## Notify (Mail) : Mail Resending common.mail.retry.count=0 common.mail.retry.sleep=10000
このファイルの表3の個所(太字で示している個所)について、適切なものに変更しておく。
項目名 | 設定 |
---|---|
common.mail.from.address | メールの送信元アドレス |
common.mail.from.personal.name | メールの送信者名 |
common.mail.reply.to.address | メールの返信先アドレス |
common.mail.reply.personal.name | メールの返信先の名前 |
common.mail.errors.to.address | メール配送エラーが発生した際に通知が送信されるメールアドレス |
common.mail.retry.count | メール送信に失敗したときの再送回数 |
common.mail.retry.sleep | 再送時に待機する時間(ミリ秒) |
Hinemosマネージャの起動/停止
Hinemosマネージャを起動するには、Hinemosのインストール先ディレクトリ(デフォルトでは/opt/hinemos)以下のbinディレクトリにあるhinemos_start.shを実行する。
# /opt/hinemos/bin/hinemos_start.sh waiting for Hinemos Manager to start... waiting for PostgreSQL to start... PostgreSQL started net.core.rmem_max = 8388608 net.core.rmem_default = 8388608 JBoss configuration assigned : hinemos removing temporally data (Export) before JBoss start waiting for JBoss to start... .....done JBoss started Hinemos Manager started
Hinemosマネージャを停止させるには、同じディレクトリにあるhinemos_stop.shを実行する。
# /opt/hinemos/bin/hinemos_stop.sh waiting for Hinemos Manager to stop... waiting for JBoss to stop... Thread Dump 1 Thread Dump 2 Thread Dump 3 Shutdown message has been posted to the server. Server shutdown may take a while - check logfiles for completion .done JBoss stopped waiting for PostgreSQL to stop... PostgreSQL stopped Hinemos Manager stopped
Red Hat Enterprise Linuxではserviceコマンドやchkconfigコマンドを用いてサービスを管理するのが一般的だ。Hinemosにはこれらに対応する設定ファイルが用意されており、これを/etc/init.dディレクトリ以下にコピーすることで、serviceコマンドやchkコマンドでHinemosマネージャの起動/停止を管理できるようになる。
# cp /opt/hinemos/sbin/service/hinemos_manager /etc/init.d/
これで、以下のようにしてHinemosマネージャを起動/停止できるようになる。
# service hinemos_manager start # service hinemos_manager stop
また、chkconfigでサービスの起動/停止を管理するには次のようにする。
# chkconfig --add hinemos_manager
これで、chkconfigでサービスの起動設定が可能になる。
# chkconfig --list hinemos_manager hinemos_manager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Hinemosマネージャのアンインストール
Hinemosマネージャをアンインストールしたい場合、配布アーカイブ内に用意されているmanager_uninstaller_JP.shを実行すれば良い。もしくは、手動でHinemosマネージャのインストールディレクトリおよびhinemosユーザー/グループを削除しても良い。
ファイアウォールの設定
Hinemosマネージャはクライアントからの接続待受に8080番ポートを使用する。そのため、このポートにクライアントからアクセスできるようファイアウォールの設定を行っておこう。
Hinemosクライアントのインストール
Hinemosクライアントについても、SourceForge.JPのHinemosプロジェクトページから入手できる。Hinemosクライアントについてはインストーラ(.msi)形式で配布されており、Windows 2008 Server版と、Windows 7の32ビットおよび64ビット版が用意されている。環境に応じたものをダウンロードしよう。
ダウンロードしたインストーラを実行するとインストールウィザードが起動するので、指示に従ってウィザードを進めていく(図2)。
Hinemosを使ってサーバーの死活監視を行う
Hinemosでは、Hinemosクライアントを使ってHinemosマネージャの各種設定を行っていく。Hinemosクライアントを起動するとユーザーIDおよびパスワード、接続先URLを入力する画面が表示されるので、適切なものを入力して「ログイン」をクリックする(図3)。デフォルトの設定では表4のようになっている
項目 | 値 |
---|---|
ユーザーID | hinemos |
パスワード | hinemos |
接続先URL | http://<Hinemosマネージャが稼働しているマシンのホスト名>:8080/HinemosWS/ |
ログインに成功すると、Hinemosマネージャのメインウィンドウが表示される(図4)。
管理用パスワードの変更
ログインに成功したら、まずはログインに使用するパスワードを変更しておこう。まず、「パースペクティブ」メニューの「パースペクティブ表示」をクリックする(図5)。
すると、「パースペクティブを開く」というダイアログが表示される(図6)。
Hinemosクライアントでは、機能ごとに「ビュー」と呼ばれる画面が用意されており、この「パースペクティブ」を使って関連するビューをまとめて開くことができる。たとえば、Hinemosマネージャに接続するためのアカウントについては「メンテナンス」パースペクティブで設定できる。「パースペクティブを開く」ダイアログで「メンテナンス」を選択し、「OK」をクリックすると、「メンテナンス」パースペクティブが表示される(図7)。
画面下側に表示される「メンテナンス[ユーザー管理]」ビューで「hinemos」ユーザーを選択し、ツールバーにある「パスワード変更」をクリックするとhinemosユーザーのパスワードを変更できる(図8)。
パスワードの変更後は、「接続」メニューの「ログアウト」を実行し、再度ログインを行っておこう。
管理対象マシンの追加
Hinemosで管理・監視を行う場合、まずは対象とするマシン(「ノード」と呼ぶ)をHinemosの「リポジトリ」に登録する必要がある。ノードの登録は、「リポジトリ」パースペクティブで行う(図9)。
「リポジトリ[ノード]」ビューのツールバーにある「作成」をクリックすると、リポジトリの登録ダイアログが表示される。ここでノードに関する情報を入力していく(図10)。
ここで、「属性」欄でピンク色に表示されている表5の項目は必須項目となる。また、ノードに関する情報はSNMPを使って取得することも可能だ。
名前 | 説明 |
---|---|
ファシリティID | 管理用のID。英数字のみ利用可能 |
ファシリティ名 | 管理用の名前。任意に指定できる |
プラットフォーム | ノードのOSプラットフォーム |
IPv4のアドレス | ノードのIPv4アドレス |
ノード名 | ノードのホスト名 |
入力の完了後、「登録」をクリックするとノードがリポジトリに追加される。ノードを登録したら、続いて「スコープ」を作成しよう。スコープは複数のノードをグループ化したもので、Hinemosでは、管理・監視といった操作やジョブ管理などをこのスコープ単位で実行する。ここでは「Sakura-servers」というスコープを作成し、ここに監視対象とするノードを登録することにする。スコープを作成するには、「リポジトリ[スコープ]」ビューで「スコープ」を選択した状態でツールバーにある「作成」をクリックする(図11)。
「リポジトリ[スコープの作成・変更]」画面が表示されるので、ここで「ファシリティID」と「ファシリティ名」を入力して「登録」をクリックする(図12)。
続いて、作成したスコープにノードを割り当てていく。「リポジトリ[スコープ]」ビューで操作対象とするスコープを選択し、ツールバーにある「割当て」をクリックする(図13)。
「リポジトリ[ノードの選択]」画面が表示されるので、ここで追加したいノードを選択し、「割当て」をクリックする(図14)。
以上の作業を繰り返し、監視したいすべてのノードについてノードの登録やスコープへの割当てを行っておく。
pingによる監視を行う
続いて、指定したスコープに属するノードに対しpingによる監視を行う設定を行ってみよう。この設定は「監視設定」パースペクティブで行う。「監視設定」パースペクティブを開き、画面下の「監視設定[一覧]」ビューのツールバーにある「作成」をクリックする(図15)。
監視種別を選択するダイアログが表示されるので、ここで「PING監視(数値)」を選択して「次へ」をクリックする(図16)。
詳細な監視設定を行うダイアログが表示されるので、ここで監視条件を指定していく(図17)。
ここで必須なのは、「監視項目ID」および「スコープ」、「アプリケーション」の項目だ。「監視項目ID」には監視項目を識別するための任意のIDを、「スコープ」には対象とするスコープを指定する。「アプリケーション」は通知時などに表示される文字列で、任意の文字列が指定できる。
Hinemosでは監視結果に対し「通知」および「収集」の2つのアクションを行うことができる。「通知」を有効にするとメールやHinemosクライアントの「監視」パースペクティブで監視結果を通知することができ、「収集」を有効にすると「性能」パースペクティブで収集した情報を時系列ごとに示したグラフで確認できる。
また、「監視」欄では通知を発生させる際の「重要度」の基準値を指定できる。たとえばping監視の場合、デフォルトではその応答時間(ミリ秒)が1000未満の場合「情報」、1000以上3000未満の場合「警告」、それ以上の場合は「危険」という重要度で通知が送信されることとなる。ここではまず「収集」のみを有効にしておこう。
設定が完了したら「OK」をクリックすると設定が反映され、設定に応じて収集や監視が行われるようになる。
収集されたデータは、「性能」パースペクティブで確認できる。性能パースペクティブを開き、「性能[一覧]」から表示したい監視項目を選択して「グラフ追加」をクリックすると、画面下に収集されたデータを元にしたグラフが表示される(図18)。
そのほかのポーリング型監視項目
先に述べたping監視は、Hinemosマネージャが監視対象に定期的にアクセスしてその監視を行うため「ポーリング監視」などと呼ばれている。Hinemosではポーリング監視として、pingだけでなくHTTPによる監視やJDBCを利用したSQLデータベースの監視、そして特定のポートの監視も可能だ。これらによる監視についても基本的な手順はping監視と同様で、「監視種別」ダイアログで「HTTP監視」や「SQL監視」、「サービス・ポート監視」を選択するだけだ(図19)。
HTTP監視では「数値」と「文字列」の2種類が用意されているが、「数値」の場合その応答時間を、「文字列」の場合その応答に特定の文字列が含まれているかどうかを監視できる(図20)。
また、SQL監視については指定されたデータベースに対しSELECT文を発行し、その結果を監視するものだ(図21)。
「サービス・ポート監視」では、指定したポートにアクセスしてサービスが稼働しているかどうかを監視するものだ。プロトコルを指定して監視を行うこともできる(図22)。
GUIでの設定が特徴のHinemos、より詳細な監視設定も可能
以上で説明してきたとおり、HinemosではWindows上からGUIで監視設定を行えるのが特徴である。GUIでの設定については一長一短はあるものの、UNIX/Linux経験が少ないユーザーでもハードルが低いというのが最大のメリットだろう。ここではHinemosのインストールと基本的な設定、pingなどのポーリング型監視の設定について紹介したが、Hinemosではpingだけでなく、CPUやI/Oなどのリソース管理機能も備えられている。次回はこれらの機能に関する設定方法を解説する。