ITMは、複数の種類のデータベースを持っています。
TEPS(Tivoli Enterprise Portal)が持っている Database 、TDW(Tivoli Data Warehouse) の Database、そして、TEMS(Tivoli Enterprise Monitoring Server)が持っている EIB(Enterprise Inforamtion Base)と呼ばれるデータベースです。
TEMSのデータベースは、TEPS/TDWが使用する一般的なRDB(Relational Database)と、対比される形で「プロプライエタリ(製品独自の)なデータベース」と呼ばれる事があり、組み込み型のデータベースで、スキーマ等の仕様は公開されていません。
TEMSのEIBは、実体としてはファイル形式で、"ITMの導入ディレクトリ"/tables/"TEMS名"下に存在しています。
TEMSのEIBを構成するファイル群
[root@xt01 HUB_XT01]# pwd /opt/IBM/ITM/tables/HUB_XT01 [root@xt01 HUB_XT01]# ls -ltr total 300272 drwxrwxrwx 2 root root 4096 Nov 6 11:59 SQLLIB -rwxrwxrwx 1 root root 22092 Nov 6 11:59 kmsiobj.dat -rwxrwxrwx 1 root root 25 Nov 6 11:59 QA1DWORK.DB -rwxrwxrwx 1 root root 26 Nov 6 11:59 QA1DWGRP.DB -rwxrwxrwx 1 root root 8192 Nov 6 11:59 QA1DSWUS.IDX ・・・・・ -rwxrwxrwx 1 root root 147456 Apr 24 18:51 QA1CSTSH.IDX -rwxrwxrwx 1 root root 35274789 Apr 24 18:51 QA1CSTSH.DB -rwxrwxrwx 1 root root 15921152 Apr 24 18:51 QA1CSTSC.IDX -rwxrwxrwx 1 root root 227175178 Apr 24 18:51 QA1CSTSC.DB -rwxrwxrwx 1 root root 16384 Apr 24 19:03 QA1DNAME.IDX -rwxrwxrwx 1 root root 53248 Apr 24 19:03 QA1CSITF.IDX prw------- 1 root root 0 Apr 24 19:04 DSPIPE prw------- 1 root root 0 Apr 24 19:04 CMSPIPE -rwxrwxrwx 1 root root 8192 Apr 24 19:04 QA1DDYST.IDX -rwxrwxrwx 1 root root 32768 Apr 24 19:04 QA1CNODL.IDX [root@xt01 HUB_XT01]# |
各テーブル毎に、.DB/.IDX という拡張子のファイルが存在しています。
この記事では、このTEMSのデータベースの中身に実際にどんな情報が入っているか、覗いてみたいと思います。
TEMSのEIBの中のデータを、TEP(Tivoli Enterprise Portal)コンソールから確認してみます。
TEPコンソール上から、「照会エディター」を起動します。「照会エディター」のアイコンをクリックするか、「Ctrl + Q(Query)」で起動します。
新規の"照会"を作成します。 TEMSに対して"照会"を作成するので、"カテゴリーは"、「Tivoli Enterprise Monitoring Server」を選択します。 "データ・ソース"として、タイプのカラムに"TEMS"と書いてある行を選択します。 Window の左下端にある、"カスタムSQL"をチェックします。
ここでは、"dw_SAMPLE_QUERY" と言う名前で、現在稼働しているシチュエーションの一覧を表示する"照会"を作成してみます。以下のSQLをボックスに入力し、「OK」ボタンで保存して「照会エディター」を終了します。
シチュエーションの情報を取得するためのカスタムSQL
SELECT LCLTMSTMP, SITNAME, DELTASTAT, NODE, ORIGINNODE FROM O4SRV.ISITSTSH |
この SQL Query 以外にも、いろいろなサンプルが、「IBM Tivoli Monitoring V6.1 管理者用ワークスペースとビュー」というガイドで公開されています。
今度は、作成した"照会"を割り当てるためのViewを作成します。適当なワークスペース上で、表形式のアイコンを選んで、Viewにドラッグアップ&ドロップします。
「今すぐ照会を割り当てますか?」と聞かれるので、「はい」をクリックします。
Viewのプロパティが表示されるので、「照会を割り当てる場合は、ここをクリックしてください。」という横長の四角のボタンをクリックします。
先ほど作成した、"照会"を割り当てます。"照会"を割り当てたら「OK」ボタンを押して設定画面を抜け、Viewのプロパティ画面も「OK」を押して保存して抜けます。
View には上記の様な一覧が表示されるようになります。
EIBのデータベースのスキーマ情報については、公開されていないため、出力結果については想像するしかありませんが、"状況"が"開始済み"のものでフィルタリングすれば、TEMS環境内で稼働中のシチュエーションの一覧として使えそうです。
表示されている内容をよく見ると、UADVISOR_ で、始まっているシチュエーションが表示されているのが見えますが、これらは監視用のシチュエーションでは無く、ヒストリカルデータの収集設定を行うと作成されるものです。
ユーザーがTEPからヒストリカルデータの収集設定を作成している分には、意識する事はありませんが、ITMのシステム的には、ヒストリカル・データの収集設定も通常の監視設定と同じように、シチュエーションと似た仕組みを使って監視対象に配付されており、ここでは、その情報が見えています。
今度は、コマンドラインから同様の事を行ってみます。
TEPS(Tivoli Enterprise Porta Server)をインストールすると、KfwSQLClient.exe(Windowsの場合)/KfwSQLClient(Linux/UNIXの場合) というツールも一緒に導入されています。TEPSのDBにアクセスするためのツールですが、このツールを使って、TEMSのEIBにもコマンド・ラインから SQL Queryを投げる事ができます。
Linux/UNIXの場合は、このコマンドの実行前に多少、環境のセットアップが必用になります。
環境のセットアップも含め、TEPクライアントで行ったのと同様な事を行う、query.shと言うシェルを作成してみました。
EIBへ照会を行うシェル(query.sh)
#!/bin/ksh
# If there is no CANDLEHOME set, just exit
if [[ $CANDLEHOME == "" ]]
then
echo "please export CANDLEHOME"
exit 1
fi
export PATH=$PATH:$CANDLEHOME/bin
# If there is no JAVAHOME set, set JAVAHOME
if [[ $JAVAHOME == "" ]]
then
export JAVAHOME=`$CANDLEHOME/bin/cinfo -s cq | grep JAVAHOME | awk '{ print $5 }'`
fi
# Get Architecture
ARCH=`cinfo -s cq | grep BINARCH | awk '{ print $2 }'`
# setup environment
. $CANDLEHOME/$ARCH/cq/bin/pathsetup.sh
# Added for AIX
export LIBPATH=$LIBPATH:$JAVAHOME/bin:$JAVAHOME/bin/classic:$CANDLEHOME/$ARCH/cq/lib
# Added for RHEL
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVAHOME/bin:$JAVAHOME/bin/classic
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CANDLEHOME/$ARCH/cq/lib
# Sample :
CMD="$CANDLEHOME/$ARCH/cq/bin/KfwSQLClient /e"
$CMD "SELECT SITNAME,ORIGINNODE,DELTASTAT,ATOMIZE FROM O4SRV.ISITSTSH" | grep -v UADVISOR
|
上記のコードは、ITM 6.2.2 TEMS/TEPS (RHEL 5) の環境で稼働を確認しました。コピー&ペーストで使用できると思います。一部、不自然に行を分割して書いている部分がありますが、特に他意は無く、develepoerworks のソース部分のスタイルの横文字の字数制限(90文字)に引っかかったために分割したものです。
このコードでは、TEPクライアントで表示した時とは違い、UADVISOR で始まるヒストリカルデータの収集設定のシチュエーションは、grep -v で除外しています。
また、Agentが接続する TEMS名のカラムである"NODE"を外し、代わりにシチュエーションの"表示項目"を表す、"ATOM"カラムを出力する様に変更しました。
UNIX/Linuxの環境であれば、grep が使用できるので、以下の様に、特定のノードで、現在オープンしているシチュエーションをリストする事も簡単にできます。
query.sh の実行
[root@xt01 tmp]# ./query.sh | grep WINX64 | grep " Y " [206] NT_Log_Space_Low Primary:WINX64:NT Y Security [208] NT_Paging_File_Critical Primary:WINX64:NT Y \??\X:\pagefile.sys [209] NT_Paging_File_Critical Primary:WINX64:NT Y \??\Z:\pagefile.sys [213] NT_Physical_Disk_Busy_Critical Primary:WINX64:NT Y 0 D: Z: X: C: [root@xt01 tmp]# |
この例では、作成した query.shを使用して、WINX64 というホストに導入した Widowns OS Agent で現在、オープン中のシチュエーションの一覧とその表示項目を出力しています。
また、以前に AIXでテストした別のシェルのサンプル・シェルも、こちらの ITM の Wiki に貼ってありますので、ご興味のある方は、Wiki の方もご参照いただければと思います。
この記事の作成で使用した環境は以下の通りです。
- ITM 6.2.2 TEMS/TEPS / RHEL 5
また、ここでご紹介したコードは、特にサポートや動作保証等はありませんので、御参考程度にお使い頂ければと思います。
- Extract data from TEMS EIB on AIX ITM Wiki の記事です。
- IBM Tivoli Monitoring V6.1 管理者用ワークスペースとビュー ITM 6.1の Field Guide(実際の運用でのノウハウを含んだガイド)です
- Tivoli Documentation Central : IBM Tivoli Monitoring IBM Tivoli Monitoring のマニュアルへのリンクです。
- developerWorks Japan: Tivoli: Tivoliの日本の技術情報サイトです

花田 祐樹 Tivoli テクニカル・セールス : 大型DASD製品 RAMAC の Asia Pacific 担当地域のサポートとして日本アイビーエムに入社。その後、ミッドレンジストレージ製品の SCSI, Fibre Channel を中心とした 生産技術エンジニアとして活動。ミッドレンジ・ストレージ製品の開発終了後は、日本IBMの自動化・監視ソリューションであるAOEMF の分散系のデリバリー業務を担当し、System p 製品のLPAR監視・制御技術に対するソリューション・デリバリーを行う。その後、Tivoli ブランドに移籍し、Technical Salesにて運用監視製品の技術営業に携わる。HWからSWまで技術全体を見渡した最適なソリューションを提供できる事を目指す。ITを使って社会を少しでも幸せにする事が目標。