Hitachi

JP1 Version 13 JP1/Integrated Management 3 - Manager 導入・設計ガイド


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メソッド)を使用します。

■ ユースケース「月次で削除対象のトレンドデータ(時系列データ)を出力・保存」

次のことを実施します。

  1. 時系列データ取得の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":"メトリックの説明"

    } {

    ・・・・

    }

    ]}

  2. 時系列データ取得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の場合に,トレンドデータを削除する手順を,次に示します。

  1. 次のコマンドを実行して,インテリジェント統合管理データベースに,スーパーユーザーロールで接続する。

    psql -d imgndb -U postgres -W -p トレンドデータ管理データベースのポート番号

    パスワードの入力を促されるため,次に示すパスワードを入力します。

    2BXY7aVkbicj

  2. 次のコマンドを実行して,メトリック名の一覧を取得する。

    select * from metric;

    上記のコマンドを実行すると,metric_name(トレンドデータとして取得したメトリック名),およびtable_name(時系列のトレンドデータを格納しているテーブル名)の値が取得できます。

  3. 手順2で確認したメトリック名に対応するテーブルを確認する(手順3以降はメトリックの数だけ繰り返す)。

    メトリック名に対応するテーブルの名前は「prom_data.メトリック名」です。

    次のコマンドを実行すると,各メトリック名に対応するテーブルのレコード件数を確認できます。

    select count(*) from prom_data.メトリック名;

  4. 削除対象のレコードの件数や内容を確認する。

    一例として,現時刻より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';

  5. トレンドデータを削除する。

    トレンドデータは,チャンクと呼ばれる単位(日時の間隔別の子テーブル)で管理されているため,トレンドデータの削除はチャンク単位で行います。

    一例として,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で指定します。