【Hinemos 4.0/Perl】WebサービスAPI経由でイベント履歴を取得する

この記事は8年以上前に書かれたものです。 情報が古い可能性があります。

Hinemos ver4.0.xでは、マネージャに対する要求を全てWebサービスAPI経由で行うようになりました。これにより、旧バージョンでの制限事項となっていたNAT越しでのマネージャへのアクセスが行えるとともに、WebサービスAPIを経由することで、Java以外のプログラミング言語からでも、全ての機能にアクセスすることができるようになりました。これは、Hinemosの大きな進化といってよいと思います。

今回は、その進化をほんの少しだけ実感してみたいと思います。以下は、マネージャからイベント履歴を取得するPerlのサンプルプログラムです。なお、ver3.2.xのWebサービスAPIには、イベント履歴を取得するためのAPIはありません(ver4.0.xで実装されました)。

Hinemos ver4.0.xのWebサービスAPIへのアクセスは、ver3.2.xと同じくSOAPを使用して行います。PerlでSOAPを扱うモジュールはいくつかありますが、最もポピュラーなものとしてSOAP::Liteがあります。今回はそのSOAP::Liteを使用して、APIの呼び出しを行っています。

WebサービスAPIへアクセスするためのエンドポイント、またAPIが用意しているメソッドについては、Hinemosマネージャのソースコードに全て記載されていますので、ここでは詳しく触れません。今回は、MonitorEndpointというエンドポイントへアクセスし、getEventListというメソッドを呼び出してみます。このメソッドは2つの引数(ファシリティIDの文字列、イベントフィルタ条件のオブジェクト)を取り、イベント履歴のリストを含むSOAPレスポンスを返します。なお、マネージャから返されるSOAPレスポンスは、SOAP::Liteによって自動的にSOAP::SOMクラスのオブジェクトへインフレーションされます。また、SOAPレスポンスに含まれる「実際に必要なデータ」は、このSOAP::SOMオブジェクトのresultメソッドで取得することができます。取得したデータは既にPerlのハッシュリファレンス構造となっているため、XMLの解析やデータの詰め替え等は全く不要で、必要に応じてデリファレンスするだけで簡単に値にアクセスすることができます。

上記コードの中ほどのforループ内では、メソッド呼び出しにより取得したハッシュリファレンスから、出力日時、重要度、監視項目ID、ファシリティID及びメッセージを抽出・加工して標準出力へ出力しています。また、__END__以降のセクションでは、エンドポイントへの接続に必要な設定情報やその他の情報をYAML形式で記述しています。ちなみに、priorityは重要度の数値=文字列の対応を表したもので、APIから取得した重要度(数値)を人間に読みやすい値に変換するために使用します。ただし、これはエンドポイントへの接続に必要な設定情報ではないため、本来なら定数として別の場所で定義すべきですが、今回は簡便さのため、敢えてYAML内に記述しています。

それでは、プログラムを実際に動かしてみます。実行例は以下のとおりです。

期待どおりの出力が得られました。また、プログラムの第1引数としてファシリティIDを与えることもできます。

期待どおり、引数に指定したファシリティIDのイベント履歴のみが出力されました。

なお、今回はデータ取得の例でしたが、マネージャに対する設定変更の指示も、同じく非常に簡単に実装することができます。後日、機会があればその例についてもご紹介したいと思います。

以上、簡単ですがHinemos ver4.0.xのWebサービスAPIに関する話題をご紹介しました。


ご意見やお問い合わせについて

この記事へのご意見やお問い合わせについては、こちら(お問い合わせフォーム)もしくは
Hinemos営業担当【hsd-sales@atomitech.jp】までご連絡ください。

※お問い合わせフォームからご連絡の場合には、お問い合わせ内容で「Hinemosについて」を選択し、
 本文の冒頭に「Hinemos研究日記_【タイトル名】」とご記載ください。
※メールアドレスへご連絡の場合には、件名を「Hinemos研究日記_【タイトル名】」でご連絡ください。