2.7.2 トレンドデータ管理DB
インテリジェント統合管理データベースにトレンドデータ管理DBを構築すると,管理対象から収集したトレンドデータを,トレンドデータ管理DBで一元管理できます。
- 〈この項の構成〉
(1) データベースの構成
インテリジェント統合管理データベースの「2.7.1(1)(a)データベースの構成」を参照してください。
(2) インストールとセットアップ
インテリジェント統合管理データベースにトレンドデータ管理DBを構築して,トレンドデータを管理します。
インテリジェント統合管理データベース(トレンドデータ管理DB)の構築については,マニュアル「JP1/Integrated Management 3 - Manager 構築ガイド」の「インテリジェント統合管理データベースの構築」を記載している個所を参照してください。
(3) トレンドデータの削除
(a) 機能概要
トレンドデータ(「時刻,値」の形式)の時刻を起点として,保存期間を過ぎたトレンドデータを,トレンドデータ管理DBから自動で削除する機能です。
保存期間のデフォルトは32日(46080分)です。
保存期間は,インテリジェント統合管理データベースのセットアップコマンド(jimgndbsetup)で,保存期間を変更できます。上限は1096日(3年)です。
ただし,設定変更にはトレンドデータ管理サービスの再起動が必要です。
- ■動作イメージ
-
例えば,保存期間が「32日」,削除機能の実行時刻が「2022/01/21 09:05:42.055」の場合,「2022/01/21 09:05:42.055」から過去32日分のトレンドデータ,つまり,「2021/12/20 09:05:42.055」〜「2022/01/21 09:05:42.055」の期間が保存され,この期間以外のトレンドデータは削除されます。
上記の条件の場合に,データベースに格納されている各トレンドデータが削除されるかどうかの例を,次に示します。
データベースに格納されているトレンドデータ
削除されるかどうか
:
:
削除される
2021/12/20 09:05:42.017のデータ
2021/12/20 09:06:42.017のデータ
削除されない
2021/12/20 09:07:42.017のデータ
:
:
2022/01/21 09:05:42.017のデータ
(b) 保存期間の設定および変更
トレンドデータの保存期間の設定および変更は,jimgndbsetupコマンドで行います。
- ■保存期間の設定
-
-
物理ホスト環境の場合
インテリジェント統合管理データベースセットアップ情報ファイル(jimgndbsetupinfo.conf)の項目「RETENTION」で,保存期間※を指定します。
-
クラスタ環境の場合
クラスタ環境インテリジェント統合管理データベースセットアップ情報ファイル(jimgndbclustersetupinfo.conf)の項目「RETENTION」で,保存期間※を指定します。
- 注※
-
設定した保存期間を過ぎたトレンドデータは,定期的(30分間隔)に削除されます。
項目「RETENTION」の記載例を,次に示します。
# IM GNDATABASE SERVICE - Retention
RETENTION=32
インテリジェント統合管理データベースセットアップ情報ファイル,およびクラスタ環境インテリジェント統合管理データベースセットアップ情報ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)の「インテリジェント統合管理データベースセットアップ情報ファイル(jimgndbsetupinfo.conf)」,および「クラスタ環境インテリジェント統合管理データベースセットアップ情報ファイル(jimgndbclustersetupinfo.conf)」を参照してください。
-
- ■jimgndbsetupコマンドの実行
-
jimgndbsetupコマンドの実行例を,次に示します。
jimgndbsetup -f セットアップ情報ファイル名※
- 注※
-
-
物理ホスト環境の場合
インテリジェント統合管理データベースセットアップ情報ファイル名
-
クラスタ環境の場合
クラスタ環境インテリジェント統合管理データベースセットアップ情報ファイル名
-
jimgndbsetupコマンドの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「jimgndbsetup」(1. コマンド)を参照してください。
(c) トレンドデータの自動削除のタイミングについて
トレンドデータの削除は,jimgndbsetupコマンドによる保存期間の設定完了時を起点として,30分ごとに自動実行されます。トレンドデータの保存期間がデフォルト(32日(46080分))の場合,30分ごとに,保存期間が46080分を経過したトレンドデータを削除します。
なお,トレンドデータの自動削除を実行するタイミングで,データベースが停止していた場合は,データベースの起動時に,トレンドデータの自動削除が実行されます。この場合,自動削除処理が完了した30分後に,次の自動削除処理がスケジューリングされます。
また,トレンドデータの削除のタイミングおよび間隔は,ユーザーが変更できません。
トレンドデータの削除の実行予定日時は,jimgndbstatusコマンドで確認できます。
jimgndbstatusコマンドの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「jimgndbstatus」(1. コマンド)を参照してください。
(d) 削除対象のトレンドデータの保存について
保存期間を過ぎたトレンドデータは,トレンドデータ管理DBから削除されます。保存期間の経過後も利用したいトレンドデータ(時系列データ)が存在する場合は,JP1/IM - Manager(インテリジェント統合管理基盤)の時系列データ取得のAPI※を使用して,該当するデータを出力および保存します。
時系列データ取得のAPIの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.11.2 時系列データ取得」を参照してください。
- 注※
-
JP1/IM - Agentの製品プラグインが必要です。JP1/IM - Agentの製品プラグインで実装するトレンド情報取得の時系列データ取得メソッド(__timeSeriesDataGetメソッド)を使用します。
■ ユースケース「月次で削除対象のトレンドデータ(時系列データ)を出力・保存」
次のことを実施します。
-
時系列データ取得のAPIに指定する,IM管理ノードのSIDおよびメトリックを,事前にリスト化する。
- ●出力対象のJP1/IM - AgentのSIDの確認
-
IM管理ノード情報取得のAPIなどを利用して,時系列データを出力するJP1/IM - AgentのSIDを確認します。
JP1/IM - AgentのSIDは,PrometheusSID(_JP1PC-IMB_統合エージェント管理基盤のホスト名/_JP1PC-M_Pホスト名/_HOST_Pホスト名/_PROMETHEUS_)やエージェントSID(_JP1PC-IMB_統合エージェント管理基盤のホスト名/_JP1PC-M_Pホスト名/_JP1PC-AHOST_Iホスト名/_HOST_Iホスト名/_JP1PC-A_jp1_pc_nodelabel)のノードから特定します。
Pホスト名:Prometheus serverがセットアップされているホストのホスト名
Iホスト名:監視対象ホストのホスト名
jp1_pc_nodelabel:Prometheus設定ファイル(jpc_prometheus_server.yml)のscrape_configsで,jp1pc_nodelabelに設定している値
IM管理ノード情報取得のAPIの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.8.3 IM管理ノード情報取得」を参照してください。
Windowsのコマンドプロンプト上で,OSSのcurlコマンドを利用して,IM管理ノード情報取得のAPIを実行する場合のイメージを,次に示します。
・ログインのAPIを実行
curl -XPOST -H "Content-Type: application/json" -c 出力先のテキストファイルAのパス -d "{\"user\":\"JP1ユーザー名\",\"password\":\"パスワード\"}" http://ホスト名:20703/im/api/v1/login
・IM管理ノード情報取得のAPIを実行
curl -GET -H "Content-Type: application/json" -b テキストファイルAのパス http://ホスト名:20703/im/api/v1/nodes/configInfo
・IM管理ノード情報取得のAPIの実行結果(JSON形式)
{"simtData":
[{
"sid":"XXXX/XXXX",
"value":{"component":"/HITACHI/JP1/XXXX","visible":"true","label":"XXXX"}
},{
・・・・
},{
"sid":"YYYY/YYYY/YYYY",
"value":{ ・・・・
"methods":[・・・,"__metricListGet","__timeSeriesDataGet",・・・],
・・・・}
},{
・・・・
}]
}
- ●出力できるメトリックの確認
-
メトリック一覧取得のAPIなどを利用して,時系列データのメトリック名を確認します。
メトリック一覧取得のAPIの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.11.1 メトリック一覧取得」を参照してください。
Windowsのコマンドプロンプト上で,OSSのcurlコマンドを利用して,メトリック一覧取得APIを実行する場合のイメージを,次に示します。
・ログインAPIの実行例
curl -XPOST -H "Content-Type: application/json" -c 出力先のテキストファイルAのパス -d "{\"user\":\"JP1ユーザー名\",\"password\":\"パスワード\"}" http://ホスト名:20703/im/api/v1/login
・メトリック一覧取得APIの実行例
curl -XPOST -H "Content-Type: application/json" -b テキストファイルAのパス -d "{\"sid\":\"JP1/IM - AgentのSID\"}" http://ホスト名:20703/im/api/v1/nodes/metrics
・メトリック一覧取得APIの実行結果の例(JSON形式)
{"metrics":[
{
"name":メトリック名,
"default":デフォルトの設定,
"label":メトリック表示名,
"description":"メトリックの説明"
} {
・・・・
}
]}
-
時系列データ取得APIに,JP1/IM - AgentノードのSID,メトリック,および出力対象期間(開始日時と終了日時)を指定して実行する
- ●トレンドデータの取得
-
時系列データ取得のAPIを利用して,トレンドデータ(時系列データ)のメトリック名を取得します。時系列データ取得のAPIは,SIDとメトリックの組み合わせで実行するため,トレンドデータを出力したいJP1/IM - AgentノードのSIDまたはメトリックが複数ある場合は,SID数×メトリック数の回数の実行が必要です。
時系列データ取得のAPIの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「5.11.2 時系列データ取得」を参照してください。
なお,時系列データ取得のAPIで取得できるデータ数の上限は,30,000個です。例えば,1インスタンス当たりのデータ数が1個の場合,毎分×1か月(31日)のデータを出力すると,データ数は44,640個となるため,出力対象期間を2回に分割して取得する必要があります。分割の要否や分割数は,データの間隔,出力対象期間,およびメトリックの内容(1インスタンス当たりのデータ数)に依存します。
また,時系列データ取得のAPIでは,JSON形式でデータを取得できるため,JSON形式のデータからトレンドデータを取り出す必要があります。
具体的には,"timeSeriesData"の"data"に,「{"time":日時のデータ,"value":その日時における(メトリックの)値},」という形式で格納されているため,「日時のデータ」と「その日時における(メトリックの)値」のデータを抽出する必要があります。
時系列データ取得APIのリクエストとレスポンスの例を,次に示します。
・時系列データ取得APIのリクエストの例
POST http://ホスト名:20703/im/api/v1/nodes/timeSeries
{
"sid":"_JP1PC-IMB-IMMHOST/_JP1PC-M_IMAHOST/_HOST_IMAHOST/_PROMETHEUS_",
"metric": "cpu_used_rate",
"startTime": "2021-06-01T00:00:00Z",
"endTime": "2021-06-15T23:59:59Z",
"countPerInstance":1,
"instanceCount":30000
}
・時系列データ取得APIのレスポンスの例
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"metric":"cpu_used_rate",
"timeSeriesData":[
{
"unit":"%",
"data":[
{"time":"2021-06-01T00:00:00Z","value":14.04},
・・・
]
],
"exceedCountDetected": {
"countPerInstance": false,
"instanceCount": false
}
}
Windowsのコマンドプロンプト上で,OSSのcurlコマンドを利用して,時系列データ取得APIを実行し,1か月分のデータを2回に分けて出力する場合のイメージを,次に示します。
・ログインAPIの実行例
curl -XPOST -H "Content-Type: application/json" -c 出力先のテキストファイルAのパス -d "{\"user\":\"JP1ユーザー名\",\"password\":\"パスワード\"}" http://ホスト名:20703/im/api/v1/login
・時系列データ取得APIの実行例<1回目>
curl -XPOST -H "Content-Type: application/json" -b テキストファイルAのパス -d "{\"sid\":\"JP1/IM - AgentのSID\",
\"metric\":\"メトリック名\",
\"startTime\":\"2021-06-01T00:00:00Z\",
\"endTime\":\"2021-06-15T23:59:59Z\",
\"countPerInstance\":30000,
\"instanceCount\":1}"
http://ホスト名:20703/im/api/v1/nodes/timeSeries
・時系列データ取得APIの実行結果の例(JSON形式)<1回目>
{"metric":
"cpu_used_rate",
"timeSeriesData":[
{"unit":"%",
"data":[
{"time":"2021-06-01T00:00:00Z","value":10.480632},
・・・・
]}
],
"exceedCountDetected":{"countPerInstance":false,"instanceCount":false}
}
・時系列データ取得APIの実行例<2回目>
curl -XPOST -H "Content-Type: application/json" -b テキストファイルAのパス -d "{\"sid\":\"JP1/IM - AgentのSID\",
\"metric\":\"メトリック名\",
\"startTime\":\"2021-06-16T00:00:00Z\"
\"endTime\":\"2021-06-30T23:59:59Z\",
\"countPerInstance\":30000,
\"instanceCount\":1}"
http://ホスト名:20703/im/api/v1/nodes/timeSeries
・時系列データ取得APIの実行結果の例(JSON形式)<2回目>
{"metric":
"cpu_used_rate",
"timeSeriesData":[
{"unit":"%",
"data":[
{"time":"2021-06-16T00:00:00Z","value":9.560327},
・・・・
]}
],
"exceedCountDetected":{"countPerInstance":false,"instanceCount":false}
}
(e) トレンドデータの手動削除
運用を止めずに,インテリジェント統合管理データベースのトレンドデータを削除する場合は,スーパーユーザーロール(postgres)でテーブルを直接操作してトレンドデータの削除を行います。
Linux 7,Linux 8,またはLinux 9の場合に,トレンドデータを削除する手順を,次に示します。
-
次のコマンドを実行して,インテリジェント統合管理データベースに,スーパーユーザーロールで接続する。
psql -d imgndb -U postgres -W -p トレンドデータ管理データベースのポート番号
パスワードの入力を促されるため,次に示すパスワードを入力します。
2BXY7aVkbicj
-
次のコマンドを実行して,メトリック名の一覧を取得する。
select * from metric;
上記のコマンドを実行すると,metric_name(トレンドデータとして取得したメトリック名),およびtable_name(時系列のトレンドデータを格納しているテーブル名)の値が取得できます。
-
手順2で確認したメトリック名に対応するテーブルを確認する(手順3以降はメトリックの数だけ繰り返す)。
メトリック名に対応するテーブルの名前は「prom_data.メトリック名」です。
次のコマンドを実行すると,各メトリック名に対応するテーブルのレコード件数を確認できます。
select count(*) from prom_data.メトリック名;
-
削除対象のレコードの件数や内容を確認する。
一例として,現時刻より1か月前のレコードを削除対象とする場合(直近1か月のレコードを残す場合)は,次のコマンドを実行すると,各メトリック名に対応するテーブルのレコード件数を確認できます。
select count(*) from prom_data.メトリック名 where time <= cast(now() - interval※ '1 months' as timestamp);
また,次のコマンドを実行すると,削除対象のレコードの内容を確認できます。
select * from prom_data.メトリック名 where time <= cast(now() - interval※ '1 months' as timestamp);
- 注※
-
intervalで指定する値の単位には,minutes,hourなども指定できます。
また,次の例に示すように,特定日の指定もできます。
select * from prom_data.メトリック名 where time <= '2021-09-30';
-
トレンドデータを削除する。
トレンドデータは,チャンクと呼ばれる単位(日時の間隔別の子テーブル)で管理されているため,トレンドデータの削除はチャンク単位で行います。
一例として,1か月より前のデータを削除する場合は,次のコマンドを実行します。
select drop_chunks('prom_data.メトリック名', older_than => interval※ '1 months');
- 注※
-
intervalで指定する値の単位には,minutes,hourなども指定できます。
また,次の例に示すように,特定日の指定もできます。
select drop_chunks('prom_data.メトリック名', older_than => '2021-09-30');
なお,トレンドデータをチャンク単位で削除すると,削除時に指定した期間のデータだけが含まれるチャンクが削除されます。そのため,指定した期間のデータであっても,指定した期間外のデータも含まれるチャンクに格納されている場合は,削除されません。
(f) トレンドデータの自動削除(サイズキャップ)
トレンドデータ管理DBが使用しているディスク容量を監視します。使用しているディスク容量が基準値(インテリジェント統合管理データベースセットアップ情報ファイル,または,クラスタ環境インテリジェント統合管理データベースセットアップ情報ファイルのTDDBDISKMAXに指定した値の90%)を超えた場合は,古いトレンドデータを削除して,使用しているディスク容量を削減します。
インテリジェント統合管理データベースのセットアップコマンドで,次の項目を設定できます。
-
トレンドデータ管理DBの最大ディスク所要量
指定した値の90%を超えると,トレンドデータの自動削除が実行されます。
-
削除するトレンドデータの期間
トレンドデータの自動削除が実行されると,トレンドデータの最古から指定した期間分のデータが削除されます。
- ■ディスク所要量の監視、トレンドデータの削除タイミングについて
-
ディスク所要量の監視,および,(基準値を超えた場合の)トレンドデータの削除を1つのタスクとし,このタスクを1分間隔で実行します(1回のタスクが終了してから1分後に次のタスクを実行します)。
- ■削除するトレンドデータの期間について
-
インテリジェント統合管理データベースセットアップ情報ファイル,または,クラスタ環境インテリジェント統合管理データベースセットアップ情報ファイルのTDDBCUTOFFTERMで指定します。