TDVでは、自身に対するデータ利用状況やアクセス元といったデータに関するKPIを集計するためにリクエスト・セッションログやデータソースのアクセスログを外部データベースへ収集する機能を持っています。集めたログはSpotfireなどのBIツールと接続し公開データサービスの中から不要なデータを発見したり、不正なアクセス形跡がないかのモニタリングなど様々な管理用途でご利用いただけます。
この記事では収集のためのTDVおよびデータベース上の設定手順について述べます。
Data Usage Metricsの収集について
TDVでは利用状況に関するログ(Data Usage Metrics)を下記のライフサイクルに従って外部のデータベースを収集することができます。
フェーズ | 備考 |
1. データ収集 |
お客さまのDBへ順次メトリックを収集します。収集はリクエスト数またはバッファメモリの閾値を超えたタイミングで開始されます。また、TDVサーバーを再起動するタイミングでも開始されます。 |
2. データ保持 | メトリックデータは設定に応じた期間、DBに保持されます。 |
3. メトリックの利用 |
メトリックデータはビューとしてTDVより公開されますので、お好みのレポートツールからTDVへ接続し、メトリックの分析を行うことができます。 |
収集されるデータは次の3種類からなります。
- セッション
- リクエスト
- リソース利用状況
メトリックデータの収集に必要な外部データベースについては、現在以下の3つがサポートされています。対応バージョンについては各データベースアダプタのサポート対象にしたがいます。
- PostgreSQL
- Oracle
- SQL Server
メトリック収集の設定手順
1. データソースの準備
サポート対象のうちいずれかのデータベースをデータソースとしてTDVに追加します。
今回はPostgreSQL12にtdv-metrics-repoの名前でデータベースを作成し、publicスキーマをイントロスペクトで追加します。
2. データソースへメトリックデータ用テーブルを作成する
Studioの左側にあるリソースツリーより、<ホスト名> > policy > metrics のファイルを開きます。
「ストレージ」の「参照」ボタンをクリックし、収集先のデータソースを選択します。今回は先ほど追加したtdv-metrics-repoを選択し、「OK」をクリックします。
続けてメトリックデータ用のテーブルを作成します。「テーブルの作成またはバインド」をクリックします。
テーブルの作成先となるスキーマと各テーブルの名前を設定します。今回はスキーマとしてpublicを選択し、テーブル名はそれぞれデフォルトのままとします。設定後、「DDLの実行」をクリックします。
確認ダイアログが表示されます。問題がなければ「はい」をクリックして実行します。
※同名のテーブルがすでに存在する場合、そこに含まれるデータが消去されます。
DDLが完了すると、以下のようなダイアログが表示されます。
データソースに新たに3つのテーブルが追加されます。
3. データ収集ライフサイクルに関する設定
ライフサイクルのフェーズ1「データ収集」および2「データ保持」についての設定を行います。
データ収集は「バッファリングのしきい値」欄からしきい値の種類およびサイズ(件数)を設定できます。
しきい値には「メモリ」と「要求数(リクエスト数)」の2種類があります。前者はTDVのログバッファサイズを指定し、これを上回るたびにデータベースへの書き込みを行います。一方後者は指定のリクエスト件数を上回るたびに書き込みを行います。
またデータ保持は「切り捨てオプション」より設定できます。「メトリックデータをどのくらいの期間保持しますか?」の欄ではメトリックデータの保持期間を日数単位で指定できます。メトリクスの最大保持日数は10億日です。
また「有効期限の終了日に、どのくらいの切り捨てプロセスを実行しますか?」の欄では、期限切れとなったデータの消去プロセスの実行間隔を指定できます。
設定が完了しましたら、metricsファイルを保存します。
4. データ収集の有効化
「ステータス」の「有効」にチェックを入れた時点で、データ収集が開始されます。
5. データの確認
メトリックデータの設定後、TDVのsystemデータベースから自動でメトリックに関する3テーブルが公開されます。
また必要に応じTDV StudioでKPI算出に必要な形式でビューを作成し、公開することも可能です。
補足:バッファの保存場所について
以下のディレクトリに保存されます。
<TDV Install Directory>repository\data\pg_wal
書き込み先のデータベースがダウンしている、またはネットワークに問題があった場合には、バッファデータを以下のディレクトリにファイルとして格納します。
<TDV Install Directory>tmp\metrics
カラム一覧
各テーブルのカラム一覧とその意味は以下のとおりです。
Excelファイルにまとめたものも末尾に添付してあります。
metrics_sessions
# | name | type | description (en) | description (ja) |
---|---|---|---|---|
1 | cluster | VARCHAR(255) | Name of the cluster that the server is a part of or else NULL. | サーバーが属するクラスターの名前、またはNULL |
2 | nodehost | VARCHAR(255) | Server hostname | サーバのホスト名 |
3 | nodeport | INTEGER | Server port. | サーバのポート |
4 | sessionid | BIGINT | Unique session ID. | 一意のセッションID |
5 | sessiontype | VARCHAR(40) | The session type can be one of the following: HTTP—A web services client. INTERNAL—A session started within the server. JDBC—A JDBC client. ODBC—An ODBC client. STUDIO—The Studio tool. |
セッションタイプ HTTP - ウェブサービスクライアント INTERNAL - サーバー内で開始されるセッション JDBC - JDBC クライアント ODBC - ODBC クライアント STUDIO - TDV Studio |
6 | clienthost | VARCHAR(255) | The host the client is connecting from. NULL for INTERNAL sessions. | クライアントが接続しているホスト、INTERNALセッションの場合はNULL |
7 | type | VARCHAR(20) | Session begin / Session end. | セッション開始/終了 |
8 | logintime | TIMESTAMP | The time at which the session started. | セッションが開始された時刻 |
9 | logouttime | TIMESTAMP | The time at which the session ended. NULL if the session is still active. | セッションが終了した時刻、セッションがまだアクティブな場合はNULL |
10 | status | VARCHAR(20) | The session status can be one of the following: ACTIVE—The session is still active. CLOSED—The session was closed in an orderly fashion. DISCONNECTED—The session was disconnected. TERMINATED—The session was terminated. TIMED_OUT—The session timed out. |
セッションの状態 ACTIVE - セッションはまだアクティブである。 CLOSED - セッションは順序よくクローズされた。 DISCONNECTED - セッションは切断された。 TERMINATED - セッションは終了した。 TIMED_OUT - セッションがタイムアウトした。 |
11 | totalduration | BIGINT | The number of milliseconds the session was active. | セッションがアクティブであった時間(ミリ秒) |
12 | totalRequests | BIGINT | The number of requests created on this session. | このセッションで作成されたリクエストの数 |
13 | bytestoclient | BIGINT | The estimated number of bytes sent to the client. | クライアントに送信された推定バイト数 |
14 | bytesfromclient | BIGINT | The estimated number of bytes received from the client. | クライアントから受け取った推定バイト数 |
15 | user | VARCHAR(255) | The current user name. | 現在のユーザー名 |
16 | domain | VARCHAR(255) | The current domain. | 現在のドメイン |
17 | group | VARCHAR(255) | If the user is only in one group, the group will be shown. If they are in more than one group, NULL will be shown. | ユーザーが一つのグループにのみ属している場合、そのグループ 複数のグループに所属している場合はNULL |
metrics_requests
# | name | type | description (en) | description (ja) |
---|---|---|---|---|
1 | cluster | VARCHAR(255) | Name of the cluster that the server is a part of or else NULL. | サーバーが属するクラスターの名前、またはNULL |
2 | nodehost | VARCHAR(255) | Server hostname | サーバのホスト名 |
3 | nodeport | INTEGER | Server port. | サーバのポート番号 |
4 | requestid | BIGINT | The request's ID. | リクエストのID |
5 | parentid | BIGINT | The parent request’s ID. NULL if there is no parent request. | 親リクエストのID、親リクエストがない場合はNULL |
6 | sessionid | BIGINT | The request's session ID. | リクエストのセッションID。 |
7 | requesttype | VARCHAR(255) | Type of request (e.g. SQL, Transformation, Java Procedure, etc.) | リクエストのタイプ(例:SQL、変換、Javaプロシージャ、など) |
8 | description | CLOB | The request’s source, or a description of what was called. | リクエストのソース、または呼び出されたものの説明 |
9 | starttime | TIMESTAMP | The time when the request started. | リクエストが開始された時刻 |
10 | endtime | TIMESTAMP | The time when the request ended. NULL if it is still running. | リクエストが終了した時刻、まだ実行中の場合はNULL |
11 | totalduration | BIGINT | The number of milliseconds the request required to execute. | リクエストが実行されるのに要した時間(ミリ秒) |
12 | serverduration | BIGINT | The number of milliseconds of server-side time that elapsed during request execution. | リクエストの実行中に経過したサーバーサイドの時間(ミリ秒) |
13 | rowsAffected | BIGINT | The number of rows affected by the request. For SQL SELECT statements, this is the number of rows read. For other requests, this is the number of rows modified. A value of -1 indicates that the number is not known. |
リクエストによって影響を受けた行数 SQLのSELECT文の場合、読み込まれた行数 その他のリクエストでは、変更された行数 不明である場合は-1 |
14 | maxmemory | BIGINT | The maximum amount of memory reserved by the request during execution. | 実行中にリクエストによって予約されたメモリの最大量 |
15 | maxdisk | BIGINT | The maximum amount of disk used by the request during execution. | 実行中にリクエストが使用するディスクの最大量 |
16 | message | CLOB | A message that is usually set on failure to provide additional information. NULL if no message is available. | 追加情報の提供に失敗した場合に通常設定されるメッセージ、メッセージがない場合はNULL |
17 | status | VARCHAR(20) | The request status can be one of the following: STARTED—The request is in the process of starting. This status usually lasts only a short time. WAITING—The request is waiting for enough system resources to start running. RUNNING—The request is currently executing. READY—The request has completed execution and results are available. CLOSING—The request is in the process of closing. This status usually lasts only a short time. SUCCESS—The request was completed successfully. FAILED—The request failed. TERMINATED—The request was terminated. |
リクエストのステータス STARTED - リクエストは開始のプロセスにある。このステータスは通常、短時間しか続かない。 WAITING - リクエストは、実行を開始するのに十分なシステムリソースを待っている。 RUNNING - リクエストは現在実行中である。 READY - リクエストは実行を完了し、結果が利用可能である。 CLOSING - リクエストはクローズ処理中である。このステータスは通常、短時間しか続かない。 SUCCESS - リクエストは正常に完了した。 FAILED - リクエストは失敗した。 TERMINATED - リクエストは終了された。 |
18 | user | VARCHAR(255) | The current user name. | 現在のユーザー名 |
19 | domain | VARCHAR(255) | The current domain. | 現在のドメイン |
20 | group | VARCHAR(255) | If the user is only in one group, the group will be shown. If they are in more than one group, NULL will be shown. | ユーザーが1つのグループにのみ属している場合はそのグループ 複数のグループに所属している場合は、NULL |
metrics_resource_usage
# | name | type | description (en) | description (ja) |
---|---|---|---|---|
1 | cluster | VARCHAR(255) | Name of the cluster that the server is a part of or else NULL. | サーバーが属するクラスターの名前、またはNULL |
2 | nodehost | VARCHAR(255) | Server hostname | サーバのホスト名 |
3 | nodeport | INTEGER | Server port. | サーバのポート |
4 | sessionid | BIGINT | Unique session ID. | 一意のセッションID |
5 | user | VARCHAR(255) | The current user name. | 現在のユーザー名 |
6 | domain | VARCHAR(255) | The current domain. | 現在のドメイン |
7 | group | VARCHAR(255) | If the user is only in one group, the group will be shown. If they are in more than one group, NULL will be shown. | ユーザーが1つのグループにしか所属していない場合、そのグループが表示されます。複数のグループに所属している場合は、NULLが表示される。 |
8 | requestid | BIGINT | The request's ID. | リクエストのID |
9 | parentid | BIGINT | The parent request’s ID. NULL if there is no parent request. | 親リクエストのID、親リクエストが存在しない場合はNULL |
10 | datasourcepath | VARCHAR(255) | The path of the datasource in which the resources exists. | リソースが存在するデータソースのパス |
11 | datasourcetype | VARCHAR(255) | Data type of the data source.(For e.g. VirtualWsdl/VirtualRelational) | データソースのデータ型(例:VirtualWsdl/VirtualRelational) |
12 | resourcepath | VARCHAR(255) | The path of resource being used. | 使用されているリソースのパス |
13 | resourcetype | VARCHAR(40) | The type of the resource.(For e.g. PROCEDURE/TABLE) | リソースのタイプ(例:PROCEDURE/TABLE) |
14 | resourceguid | VARCHAR(40) | The guid of the resource(unique 128-bit identifier) | リソースのguid(一意の128ビット識別子) |
15 | resourcekind | VARCHAR(20) | The kind of resource being used(For e.g. System/User-defined) | 使用されているリソースの種類(例:システム/ユーザー定義) |
16 | starttime | TIMESTAMP | The time when the request started. | リクエストの開始時刻 |
17 | endtime | TIMESTAMP | The time when the request ended. | リクエストが終了した時刻 |