目次
1.はじめに
2.今回の実施内容
3.作業実施するうえでの予備知識
4.インストール
5.動作確認
6.ビュー作成
7.クエリ実行確認
8.最後に
参考URL
- Denodo-USER MANUALS Denodo Monitorの構成
- Denodo-USER MANUALS Denodo Monitorの起動
- Denodo-USER MANUALS Denodo Log Columnの詳細
1 はじめに
本記事は、データ仮想化製品Denodoについて紹介する連載記事になっております。
これまでの連載通りにDenodo Express環境設定がされていることを前提としていますので、未実施の場合は過去の記事を参照して構築をしてください。
データ仮想化技術やDenodoの概要については、第1章 データ仮想化とDenodo概要をご参照ください。
また、データ仮想化環境の構築については、第2章 データ仮想化環境の構築をご参照ください。
2 今回の実施内容
DenodoにはDenodo MonitorというDenodo サーバーに関する情報をログに記録する機能があります。
クエリ実行に関する情報やデータソースへのアクセス状況等が取得でき、実運用においてトラシューや利用状況の確認等において活躍する機能であり、導入が推奨されます。
今回はDenodo MonitorのログをDBに格納し利用できるまでの手順を記載します。
Postgresqlは13を例として進めます。
3 作業実施するうえでの予備知識
Denodo Monitorは前述の通りDenodoサーバーの状態をログに記録しますが、記録対象についての概要を簡単に記載します。
ログカラム情報などは参考URLを記載しておりますので、そちらを参照ください。
なお、ログはデフォルトだとログファイルへ書き出されますが、オプション設定としてDBへの書き出しやS3への書き出しにも対応しています。
ローカルモニター
Denodo Monitor が実行されているホストに関する情報を収集します。
- プロセスモニター: ローカルホストのすべての実行中のプロセスに関する情報をログに記録
- ソケットモニター: ローカルコンピュータのアクティブなコネクションの情報をログに記録
サーバーモニター
Denodo サーバーの実行中のスレッドとメモリ使用量に関するデータをログに記録します。
Denodo Monitor とは別のホストで実行されているサーバーから情報を取得できるように、JMX 経由で Denodo サーバーに接続し情報を収集します。
- リソースモニター
- メモリ情報: 監視対象サーバーを実行するJVMのメモリ使用量をログに記録
- クラス情報: 現在ロードされているクラスの数 、ロードされているクラスの総数、スレッドの数、およびスレッドの最大数をログに記録
- Virtual DataPort の情報(コネクション数、リクエスト数、メモリ使用量)
- スレッドモニター
- スレッドモニターは、Denodo サーバーによって起動されたスレッドと、それらが消費したCPU 時間をログに記録
Virtual DataPortモニター
運用では例えばトラブルシュート時に実行クエリを確認することがあり、Virtual Data Portの処理ログが欲しくなります。
以下3つのモニターがありますが、特にクエリモニターには当方お世話になっています。
- Virtual DataPort クエリモニター: Virtual DataPort によって処理されたすべてのステートメントをログに記録
- Virtual DataPort キャッシュモニター: Virtual DataPort のキャッシュロードプロセスのアクティビティをログに記録
- Virtual DataPort コネクションモニター: 開かれたコネクションと閉じられたコネクション、コネクションを開いた/閉じたユーザーアカウント、使用したインターフェイス、接続元 IP などに関する情報をログに記録
Virtual DataPortモニターの各種ログ出力は、デフォルトのテキスト出力に加え、PostgresqlやMySQL等のDBへの出力、およびS3への出力が可能です。
なお、Data Catalogにはビューの利用統計情報を表示する機能があるのですが、前提条件としてDenodo monitorログをDBに格納することが求められるため、DBへの格納設定をお勧めします。
実運用環境では、Denodo MonitorはDenodo機能提供サーバーとは別の環境で動かすことが推奨です。(最小構成の場合は、Solutiona Managerサーバ上に同居が良いかと思います)
4 インストール
Monitorの周りの設定と格納用DBの設定を行います。
Denod monitor
-
Denodoが提供するJREを利用できるよう、環境変数を設定します。
Windows 環境変数 > 詳細設定タブ「環境変数」へ遷移し、ユーザー環境変数とシステム環境変数に以下を設定。
変数名: JAVA_HOME
変数値: C:\Denodo\DenodoPlatform8.0
-
C:\Denodo\DenodoPlatform8.0\tools\monitor
ディレクトリに移動します。 -
denodo-monitor.zip
をカレントディレクトリに解凍します。 -
DBコネクタをコピーします。
コマンドプロンプトを立ち上げて、以下コマンド入力copy C:\Denodo\DenodoPlatform8.0\lib\extensions\jdbc-drivers\postgresql- 12\postgresql-42.3.5.jar C:\Denodo\DenodoPlatform8.0\tools\monitor\denodo- monitor\denodo-monitor\lib
-
C:\Denodo\DenodoPlatform8.0\tools\monitor\denodo-monitor\denodo-monitor\conf\ConfigurationParameters.properties
を修正します。
以下のようにQuery monitor設定部を修正します。# ============================================================================= # Settings to store the output of the Virtual DataPort query monitor in a database # ============================================================================= vdpqueries.jdbcagent.enable=true # falseから修正 # JDBC Agent Parameters: PostgreSQL vdpqueries.jdbcagent.driverClassName=org.postgresql.Driver # コメント解除 vdpqueries.jdbcagent.url=jdbc:postgresql://localhost:5432/monitor # コメント解除&DBのURL記載 vdpqueries.jdbcagent.user=monitor # コメント解除&ユーザー名入力 vdpqueries.jdbcagent.password=Pass!234 # コメント解除&パスワード入力
Postgresql
-
リンク等を参照にPostgreSQLをインストールします。
(※Windows上にインストールすることを想定。pgAdminもセットでインストール) -
pgAdminを起動し、Server接続後にPostgreSQL右クリック > Create > Login/Group Roleをクリックし、表示画面の各タブ画面内で以下入力します。
-
Databasesを右クリック > Create > databaseをクリックし、表示画面内で以下入力します。
-
monitorを右クリック > PSQL Tool をクリックしPSQLプロンプトを表示します。以下パスにあるSQLファイルを開き、記載されているクエリをPSQLプロンプトへコピペし実行します。
C:\Denodo\DenodoPlatform8.0\tools\monitor\denodo-monitor\denodo-monitor\sql\postgresql.sql
-
左ペインにテーブルが作成されるのでrequest_nitificationを右クリック > Propertiesをクリック
-
Admin Toolログイン後、格納用の仮想DBとして「monitor」という名前で仮想DBを作成します。(Administration > Database managementをクリック後、画面のように設定)
-
左ペインで、作成したmonitorを右クリック > New > Data source > JDBC をクリック後、表示されるConnectionタブ内にて以下を設定します。
-
設定入力が終わったら、TestConnectionが成功することを確認後、Saveをクリックします。
(※もし失敗する場合は、接続URL・ユーザー名・パスワード、およびPostgres側の権限を確認してみてください) -
前項のSaveクリック後表示される画面上のCreate base viewをクリック後、request_notificationにチェックを入れてから、Create selectedをクリックします。
-
ベースビュー表示されるので、Saveアイコン(Diskアイコン)クリック。
5 動作確認
起動およびログ書き出し確認
-
コマンドプロンプトを開き
C:\Denodo\DenodoPlatform8.0\tools\monitor\denodo-monitor\denodo-monitor\bin\denodomonitor_startup.bat
を実行します。コマンド実行するとフォアグラウンドでプログラムが動き続けます。
終了時にはCtrl+Cや閉じるボタンなどで終了してください。 -
Denodo Administration Toolを起動しログインします。
-
ログインが完了したら、
C:\Denodo\DenodoPlatform8.0\tools\monitor\denodo-monitor\denodo-monitor\logs\vdp-connections.log
を開きます
-
項1でのログイン履歴があることを確認します。(※以下分かりづらいですが、画像取得にあたりログインログアウト実施しており、正しく記録されています)
クエリ実行確認
-
登録したrequest_notificationビューを開き、Excution panel -> Excuteをクリックしクエリを実行します。
クエリ結果が何も表示されない場合は以下で切り分けを実施してみてください。
- pgAdminでSQL実行画面を開き、
SELECT * FROM request_notification;
を実行- 結果表示される => DenodoとPostgresqlの接続設定確認
- 結果表示されない => MonitorとPostgresqlの接続設定確認
余談
簡単なTipsとして運用で使いそうなカラムについて触れておきます。
- NumRows: 返答行数を確認する際に使えます。
-
State: クエリの状態確認する際に使えます。
- 行制限に該当すると
LOW_LIMIT_REACHED
。正常と異常はOK/ERROR
。止めるとSTOPPED
。タイムアウトはQUERY_TIMEOUT
が記録されます。
- 行制限に該当すると
-
Cache: キャッシュ無効は
0
。キャッシュ有効は1
。効いているかどうか確認時に。 -
Query: 発行クエリの確認時に。特定の期間に特定のビューに発行されたクエリを確認したい場合などに、フィルタをかまして使えます。
- ちなみにData Catalogクエリエディターからのクエリ実行時は、
SELECT_NAVIGATIONAL
で始まるクエリが記録されます。
- ちなみにData Catalogクエリエディターからのクエリ実行時は、
- UserAgent: どのエージェント(AdminToolやCatalogなど)からアクセスしているのかを確認する際に使えます。
- ClientIP: 接続元のIP確認する際に使えます。
8 最後に
今回はデータ活用を円滑に進めるためのモニタリングに活用できる、Denodo Monitorを紹介しました。
実際の運用においては、トラブルシュート時にクエリモニタから障害時のレコードを抽出して切り分けを行うこともありますし、月次でビューごとのアクセス数を集計したいという場合などにも利用できるので触れる場面は相応にあるかと思います。
今回は簡単な記述で概要の説明にとどまっていますので、ログをDBやS3に吐き出したい等、より活用したい方はマニュアルを参考の上でトライしてみてください。
次回はデータ利用者がデータに便利にアクセスできる機能である、Data CatalogとIndexsearchについて触れたいと思います。