目次


Guardium Active/Standby 環境におけるエージェントのログ送信先コレクターの取得方法

Guardium コレクターを Active/Standby 環境で利用時の STAP の接続先コレクターの情報を取得する方法の紹介

Comments

はじめに

IBM InfoSphere Guardium (以下 Guardium) は、監視対象システムに殆ど負荷を掛けること無く、DBA を含む全てのユーザーのデータベースへのアクセスを監視することが出来ます。さらに、様々なデータベースのアクティビティログを一元管理し、豊富な形式を用いて監査レポートの作成が行えます。

この記事では、Guardium v9.1 で追加された REST API を利用して、エージェントが現在監査ログを送信しているコレクターを取得する方法について解説します。Guardium に関しては、事前に「InfoSphere Guardium アーキテクチャー」および「InfoSphere Guardium によるデータベースの監視を開始する」を参照してください。

Guardium エージェントとコレクターの通信と通信先コレクターの監視

図 1 は Guardium を利用する際のシンプルな構成例です。コレクターにネットワーク障害や HW 障害が発生した場合に備えて、スタンバイコレクターを用意しているアクティブスタンバイ構成が一般的です。エージェントから優先的にログの送信が行われるコレクターをプライマリコレクター、プライマリーコレクターに障害が発生した際に送信されるコレクターをセカンダリコレクターと呼びます。以下、この環境を前提に説明を行います。

図 1.Guardium フェールオーバー環境構成例

エージェントから各コレクターへハートビートを利用した生存確認が実行されます。ネットワークエラーなどの障害でエージェントからプライマリーコレクターへの接続ができない場合には、エージェント側でこれを検知しセカンダリコレクターへのフェールオーバーを自動的に行います。プライマリーコレクターが障害から復帰した場合にも自動的にフェールバックします。一方で、実際の運用では、エージェントが実際にログを送信しているコレクターを監視することが求められる場合があります。

V9.0 以前は、以下の 2 つの監視方法がありました。

  1. エージェントの出力するログを監視する
  2. コレクターのレポートを確認する

1. エージェントの出力するログを監視する

以下は Linux エージェントにおいてフェールオーバーが発生した時の /var/log/messages に出力されたエージェントのログです。

Jul  9 17:40:15 rh62x86b guard_tap[2164]: Connected to Seconday Server 192.168.10.122

エージェントログはデータベース・サーバー上に存在するため、監視する仕組みを作成しデータベース・サーバー上で動作させる必要があります。

2. コレクターのレポートを確認する

[TAP モニター] -> [プライマリー SQLGuard ホスト変更ログ] レポートで、エージェントがログを送信しているコレクターの情報を確認できます。

図 2.プライマリー SQLGuard ホスト変更ログ レポート

フェールオーバーやフェールバック発生時には「Guardium ホスト名」が送信先コレクターのホスト名 (もしくは IP) となります。ただし、コレクターのレポート確認にはブラウザーから Guardium コレクターにログインして GUI を操作する必要があります。

REST API を利用したレポートの取得

Guardium は v9.1 より REST に対応し、Guardium 内のレポートをクライアントマシンから簡単に取得可能になりました。ここでは REST API を利用して送信先コレクターの情報を取得する方法を紹介します。環境は以下のとおりです。

図 3.監視サーバーによるレポート取得環境例

プライマリコレクターに障害が発生していることを想定し、情報の取得はセカンダリコレクターから行います。

REST API および curl を利用したレポートの取得と確認

次に、このレポートを REST API を利用して取得します。ここでは、curl を利用してコマンドラインからレポートを取得するための実行例を示します。実行例においては、わかりやすさのためにコマンドと実行結果の間に「***************」を入れています。

1. クライアントの登録 (コレクターCLI で実行)

コレクターに、REST API を実行するためのクライアント ID を登録します。

CLI> grdapi register_oauth_client client_id=kai

**********************************

{"client_id":"kai","client_secret":"17161940-3af8-430c-935f-53d0ba21124e","grant_types":"password","scope":"read,write","redirect_uri":"https://someApp"}
ok

2. アクセストークンの取得

手順 1 で取得した client_secret を利用して access_token を取得します。access_token のデフォルト利用期限は 3 時間となっています。期限切れの際には再度取得する必要があります。

この手順と次の手順は、curl を導入した監視サーバー (クライアント PC) から実行します。

ClientPC>curl -k -X POST -d "client_id=kai&grant_type=password&client_secret=17161940-3af8-430c-935f-53d0ba21124e&username=admin&password=guardium" https://collector_ip:8443/oauth/token

**********************************

{"access_token":"b491e8b1-ceeb-4cd2-bb35-904f6d750bcc","token_type":"bearer","expires_in":10799,"scope":"read write"}

3. 「プライマリー Guardium ホスト変更ログ」レポートの取得

手順 2 で取得した access_token を利用してレポートを取得します。GUI でレポートを参照する場合と同様に、オプションパラメータの値を指定して実行します。

ClientPC> curl -k --header "Authorization: Bearer 9954c64f-002b-4b72-ad72-22583435a23d" -H "Content-Type: application/json" -X POST -d '{"reportName":"プライマリ Guardium ホスト変更ログ","indexFrom":"1","reportParameter":{"QUERY_FROM_DATE":"now -1 day","QUERY_TO_DATE":"now","REMOTE_SOUR
CE":"%","SHOW_ALIASES":"TRUE"}}' https://collector_ip:8443
/REST API/online_report

**********************************

[
{
"S-TAP ホスト": "DB_Server",
"Guardium ホスト名": Ccollector_IP",
"期間の開始": "2014-06-11 19:32:10.0",
"期間の終了": "2014-06-11 19:32:10.0"

}
]

GUI と同様の内容のレポートの出力を確認することが出来ました。運用監視サーバーから、定期的にレポート取得を実行することで、DB サーバーに負荷を与えることなく接続先コレクター情報を取得し、接続先コレクターの状況を監視することが可能になります。

まとめ

本稿では、Guardium v9.1 で対応された REST API を利用してエージェントが現在ログを送信しているコレクターの情報を取得する方法を紹介しました。REST API を利用して取得できるレポートは「プライマリー SQLGuard ホスト変更ログ」に限りません。様々なレポートの監視を監視サーバーのバッチ処理に組み込むことで監視業務を自動化することが可能です。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=984229
ArticleTitle=Guardium Active/Standby 環境におけるエージェントのログ送信先コレクターの取得方法
publish-date=10222014