4.4. コンテナ監視(Docker/Kubernetes/Podman/OpenShift)の使い方

4.4.1. Dockerメトリクス監視機能

dockerコマンド経由で情報を取得し、Senju DevOperation Conductorのモニタリング機能を使って、監視することができます。

監視定義を千手ブラウザより登録し、監視を実施します。監視結果は、各種モニタ画面(グローバルノードモニタ/ノードモニタ)にてその監視状況を表示できます。予め設定したしきい値により障害を検知した場合は、メッセージモニタにメッセージが通知されます。(モニタリング機能については、ユーザーズガイド「 4.モニタリング 」を参照して下さい。)

4.4.2. Dockerコンテナログ監視機能

監視項目「Docker:コンテナログ監視」では Docker から取得したログをログファイルに蓄積します。このログファイルを監視することでDockerのコンテナログを検知することが可能です。

4.4.2.1. ログファイル

監視項目「Docker:コンテナログ監視」で取得したログファイルは次のファイルに出力されます。
ただし、ファイル名に使用できない記号と「=」(イコール)、「,」(カンマ)は「-」(半角ハイフン)に置き換えます。
  • ログフォーマットがLTSVの場合:

表 4.6 ログファイル名(LTSV)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/dkr_container_{nodeid}_{containername}.log

ログファイル名(センサー)

~/log/container.d/dkr_container_{user}@{nodeid}_{containername}.log

  • ログフォーマットがJSONの場合:

表 4.7 ログファイル名(JSON)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/dkr_container_{nodeid}_{containername}.json

ログファイル名(センサー)

~/log/container.d/dkr_container_{user}@{nodeid}_{containername}.json

4.4.2.2. ログフォーマット

以下にDockerコンテナログ監視で取得したログファイルのレコード形式について説明します。 デフォルトのレコードフォーマットは LTSV形式で、項目間はタブ区切りとなります。

【Dockerコンテナログファイル レコード形式】

  • ログフォーマットがLTSVの場合:

最新のタイムスタンプ コンテナ名 メッセージ

表 4.8 コンテナログ監視レコード形式(LTSV)

No.

項目

キー:

説明

1

タイムスタンプ

TimeStamp:

取得したコンテナログが記録された時刻。フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

2

コンテナ名

Container:

取得したコンテナ名

4

メッセージ

Message:

取得したコンテナログのメッセージ

  • ログフォーマットがJSONの場合:

イベント内容

表 4.9 コンテナログ監視レコード形式(JSON)

No.

項目

説明

1

コンテナログ内容

取得したコンテナログの内容が入ります。コンテナログの内容はJSONの形式で出力されます。

4.4.3. Kubernetesメトリクス監視機能

kubectlコマンド経由で情報を取得し、Senju DevOperation Conductorのモニタリング機能を使って、監視することができます。

監視定義を千手ブラウザより登録し、監視を実施します。監視結果は、各種モニタ画面(グローバルノードモニタ/ノードモニタ)にてその監視状況を表示できます。予め設定したしきい値により障害を検知した場合は、メッセージモニタにメッセージが通知されます。(モニタリング機能については、ユーザーズガイド「 4.モニタリング 」を参照して下さい。)

4.4.4. Kubernetesイベント監視機能

監視項目「Kubernetes:イベント監視」では Kubernetes から取得したログをログファイルに蓄積します。このログファイルを監視することでKubernetesのイベントを検知することが可能です。

4.4.4.1. ログファイル

監視項目「Kubernetes:イベント監視」で取得したログファイルは次のファイルに出力されます。ただし、ファイル名に使用できない記号は「-」(半角ハイフン)に置き換えます。

  • ログフォーマットがLTSVの場合:

表 4.10 ログファイル名(LTSV)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/k8s_events_{nodeid}_default.log

ログファイル名(通常+ネームスペース指定)

~/log/container.d/k8s_events_{nodeid}_default_{namespace}.log

ログファイル名(通常+コンテキスト指定)

~/log/container.d/k8s_events_{nodeid}_{context}.log

ログファイル名(通常+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_events_{nodeid}_{context}_{namespace}.log

ログファイル名(センサー)

~/log/container.d/k8s_events_{user}@{nodeid}_default.log

ログファイル名(センサー+ネームスペース指定)

~/log/container.d/k8s_events_{user}@{nodeid}_default_{namespace}.log

ログファイル名(センサー+コンテキスト指定)

~/log/container.d/k8s_events_{user}@{nodeid}_{context}.log

ログファイル名(センサー+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_events_{user}@{nodeid}_{context}_{namespace}.log

  • ログフォーマットがJSONの場合:

表 4.11 ログファイル名(JSON)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/k8s_events_{nodeid}_default.json

ログファイル名(通常+ネームスペース指定)

~/log/container.d/k8s_events_{nodeid}_default_{namespace}.json

ログファイル名(通常+コンテキスト指定)

~/log/container.d/k8s_events_{nodeid}_{context}.json

ログファイル名(通常+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_events_{nodeid}_{context}_{namespace}.json

ログファイル名(センサー)

~/log/container.d/k8s_events_{user}@{nodeid}_default.json

ログファイル名(センサー+ネームスペース指定)

~/log/container.d/k8s_events_{user}@{nodeid}_default_{namespace}.json

ログファイル名(センサー+コンテキスト指定)

~/log/container.d/k8s_events_{user}@{nodeid}_{context}.json

ログファイル名(センサー+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_events_{user}@{nodeid}_{context}_{namespace}.json

4.4.4.2. ログフォーマット

以下にKubernetesイベント監視で取得したログファイルのレコード形式について説明します。 デフォルトのレコードフォーマットは LTSV形式で、項目間はタブ区切りとなります。

【Kubernetesイベントログファイル レコード形式】

  • ログフォーマットがLTSVの場合:

最新のタイムスタンプ ノードID 名前空間 タイプ(通常、警告) 理由 オブジェクト サブオブジェクト 発生環境 メッセージ 最初のタイムスタンプ 回数 名前

表 4.12 イベント監視レコード形式(LTSV)

No.

項目

キー:

説明

1

最新のタイムスタンプ

LastTimeStamp:

取得したイベントが記録された最新時刻。存在しない場合は、FirstTimeStampの値を利用します。
フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

2

ノードID

NodeId:

ノードID名

3

名前空間

Namespace:

名前空間

4

タイプ(通常、警告)

Type:

イベントタイプ(Normal/Warning)

5

理由

Reason:

イベントオブジェクトのステータス理由。

6

オブジェクト

Object:

イベントに関連するオブジェクト

7

サブオブジェクト

SubObject:

イベントに関連するサブオブジェクト

8

発生環境

Source:

取得したイベントの発生環境

9

メッセージ

Message:

取得したイベントのメッセージ

10

最初のタイムスタンプ

FirstTimeStamp:

取得したイベントが最初に記録された時刻。存在しない場合は、eventTimeの値を利用します。
フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

11

回数

Count:

取得イベントの発生回数

12

名前

Name:

取得したPod名

  • ログフォーマットがJSONの場合:

イベント内容

表 4.13 イベント監視レコード形式(JSON)

No.

項目

説明

1

イベント内容

取得したイベント内容が入ります。イベント内容はJSONの形式で出力されます。

4.4.5. Kubernetesコンテナログ監視機能

監視項目「Kubernetes:コンテナログ監視」では Kubernetes から取得したログをログファイルに蓄積します。このログファイルを監視することでKubernetesのコンテナログを検知することが可能です。

4.4.5.1. ログファイル

監視項目「Kubernetes:コンテナログ監視」で取得したログファイルは次のファイルに出力されます。
ただし、ファイル名に使用できない記号と「=」(イコール)、「,」(カンマ)は「-」(半角ハイフン)に置き換えます。
  • ログフォーマットがLTSVの場合:

表 4.14 ログファイル名(LTSV)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/k8s_container_{nodeid}_{selector}_default.log

ログファイル名(通常+ネームスペース指定)

~/log/container.d/k8s_container_{nodeid}_{selector}_default_{namespace}.log

ログファイル名(通常+コンテキスト指定)

~/log/container.d/k8s_container_{nodeid}_{selector}_{context}.log

ログファイル名(通常+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_container_{nodeid}_{selector}_{context}_{namespace}.log

ログファイル名(センサー)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_default.log

ログファイル名(センサー+ネームスペース指定)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_default_{namespace}.log

ログファイル名(センサー+コンテキスト指定)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_{context}.log

ログファイル名(センサー+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_{context}_{namespace}.log

  • ログフォーマットがJSONの場合:

表 4.15 ログファイル名(JSON)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/k8s_container_{nodeid}_{selector}_default.json

ログファイル名(通常+ネームスペース指定)

~/log/container.d/k8s_container_{nodeid}_{selector}_default_{namespace}.json

ログファイル名(通常+コンテキスト指定)

~/log/container.d/k8s_container_{nodeid}_{selector}_{context}.json

ログファイル名(通常+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_container_{nodeid}_{selector}_{context}_{namespace}.json

ログファイル名(センサー)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_default.json

ログファイル名(センサー+ネームスペース指定)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_default_{namespace}.json

ログファイル名(センサー+コンテキスト指定)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_{context}.json

ログファイル名(センサー+コンテキスト+ネームスペース指定)

~/log/container.d/k8s_container_{user}@{nodeid}_{selector}_{context}_{namespace}.json

4.4.5.2. ログフォーマット

以下にKubernetesコンテナログ監視で取得したログファイルのレコード形式について説明します。 デフォルトのレコードフォーマットは LTSV形式で、項目間はタブ区切りとなります。

【Kubernetesコンテナログファイル レコード形式】

  • ログフォーマットがLTSVの場合:

最新のタイムスタンプ Pod名 コンテナ名 メッセージ

表 4.16 コンテナログ監視レコード形式(LTSV)

No.

項目

キー:

説明

1

タイムスタンプ

TimeStamp:

取得したコンテナログが記録された時刻。フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

2

Pod名

Pod:

取得したPod名

3

コンテナ名

Container:

取得したコンテナ名

4

メッセージ

Message:

取得したコンテナログのメッセージ

  • ログフォーマットがJSONの場合:

イベント内容

表 4.17 コンテナログ監視レコード形式(JSON)

No.

項目

説明

1

コンテナログ内容

取得したコンテナログの内容が入ります。コンテナログの内容はJSONの形式で出力されます。

4.4.6. Podmanメトリクス監視機能

podmanコマンド経由で情報を取得し、Senju DevOperation Conductorのモニタリング機能を使って、監視することができます。

監視定義を千手ブラウザより登録し、監視を実施します。監視結果は、各種モニタ画面(グローバルノードモニタ/ノードモニタ)にてその監視状況を表示できます。予め設定したしきい値により障害を検知した場合は、メッセージモニタにメッセージが通知されます。(モニタリング機能については、ユーザーズガイド「 4.モニタリング 」を参照して下さい。)

4.4.7. OpenShiftメトリクス監視機能

ocコマンド経由で情報を取得し、Senju DevOperation Conductorのモニタリング機能を使って、監視することができます。

監視定義を千手ブラウザより登録し、監視を実施します。監視結果は、各種モニタ画面(グローバルノードモニタ/ノードモニタ)にてその監視状況を表示できます。予め設定したしきい値により障害を検知した場合は、メッセージモニタにメッセージが通知されます。(モニタリング機能については、ユーザーズガイド「 4.モニタリング 」を参照して下さい。)

4.4.8. OpenShiftイベント監視機能

監視項目「OpenShift:イベント監視」では OpenShift から取得したログをログファイルに蓄積します。このログファイルを監視することでOpenShiftのイベントを検知することが可能です。

4.4.8.1. ログファイル

監視項目「OpenShift:イベント監視」で取得したログファイルは次のファイルに出力されます。ただし、ファイル名に使用できない記号は「-」(半角ハイフン)に置き換えます。

  • ログフォーマットがLTSVの場合:

表 4.18 ログファイル名(LTSV)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/ops_events_{nodeid}_default.log

ログファイル名(通常+コンテキスト指定)

~/log/container.d/ops_events_{nodeid}_{context}.log

ログファイル名(センサー)

~/log/container.d/ops_events_{user}@{nodeid}_default.log

ログファイル名(センサー+コンテキスト指定時)

~/log/container.d/ops_events_{user}@{nodeid}_{context}.log

  • ログフォーマットがJSONの場合:

表 4.19 ログファイル名(JSON)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/ops_events_{nodeid}_default.json

ログファイル名(通常+コンテキスト指定)

~/log/container.d/ops_events_{nodeid}_{context}.json

ログファイル名(センサー)

~/log/container.d/ops_events_{user}@{nodeid}_default.json

ログファイル名(センサー+コンテキスト指定時)

~/log/container.d/ops_events_{user}@{nodeid}_{context}.json

4.4.8.2. ログフォーマット

以下にOpenShiftイベント監視で取得したログファイルのレコード形式について説明します。 デフォルトのレコードフォーマットは LTSV形式で、項目間はタブ区切りとなります。

【OpenShiftイベントログファイル レコード形式】

  • ログフォーマットがLTSVの場合:

最新のタイムスタンプ ノードID 名前空間 タイプ(通常、警告) 理由 オブジェクト サブオブジェクト 発生環境 メッセージ 最初のタイムスタンプ 回数 名前

表 4.20 イベント監視レコード形式(LTSV)

No.

項目

キー:

説明

1

最新のタイムスタンプ

LastTimeStamp:

取得したイベントが記録された最新時刻。存在しない場合は、FirstTimeStampの値を利用します。
フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

2

ノードID

NodeId:

ノードID名

3

名前空間

Namespace:

名前空間

4

タイプ(通常、警告)

Type:

イベントタイプ(Normal/Warning)

5

理由

Reason:

イベントオブジェクトのステータス理由。

6

オブジェクト

Object:

イベントに関連するオブジェクト

7

サブオブジェクト

SubObject:

イベントに関連するサブオブジェクト

8

発生環境

Source:

取得したイベントの発生環境

9

メッセージ

Message:

取得したイベントのメッセージ

10

最初のタイムスタンプ

FirstTimeStamp:

取得したイベントが最初に記録された時刻。存在しない場合は、eventTimeの値を利用します。
フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

11

回数

Count:

取得イベントの発生回数

12

名前

Name:

取得したPod名

  • ログフォーマットがJSONの場合:

イベント内容

表 4.21 イベント監視レコード形式(JSON)

No.

項目

説明

1

イベント内容

取得したイベント内容が入ります。イベント内容はJSONの形式で出力されます。

4.4.9. OpenShiftコンテナログ監視機能

監視項目「OpenShift:コンテナログ監視」では OpenShift から取得したログをログファイルに蓄積します。このログファイルを監視することでOpenShiftのコンテナログを検知することが可能です。

4.4.9.1. ログファイル

監視項目「OpenShift:コンテナログ監視」で取得したログファイルは次のファイルに出力されます。
ただし、ファイル名に使用できない記号と「=」(イコール)、「,」(カンマ)は「-」(半角ハイフン)に置き換えます。
  • ログフォーマットがLTSVの場合:

表 4.22 ログファイル名(LTSV)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/ops_container_{nodeid}_{selector}_default.log

ログファイル名(通常+コンテキスト指定)

~/log/container.d/ops_container_{nodeid}_{selector}_{context}.log

ログファイル名(センサー)

~/log/container.d/ops_container_{user}@{nodeid}_{selector}_default.log

ログファイル名(センサー+コンテキスト指定時)

~/log/container.d/ops_container_{user}@{nodeid}_{selector}_{context}.log

  • ログフォーマットがJSONの場合:

表 4.23 ログファイル名(JSON)

項目

内容

ログディレクトリ名

~/log/container.d/

ログファイル名(通常)

~/log/container.d/ops_container_{nodeid}_{selector}_default.json

ログファイル名(通常+コンテキスト指定)

~/log/container.d/ops_container_{nodeid}_{selector}_{context}.json

ログファイル名(センサー)

~/log/container.d/ops_container_{user}@{nodeid}_{selector}_default.json

ログファイル名(センサー+コンテキスト指定時)

~/log/container.d/ops_container_{user}@{nodeid}_{selector}_{context}.json

4.4.9.2. ログフォーマット

以下にOpenShiftコンテナログ監視で取得したログファイルのレコード形式について説明します。 デフォルトのレコードフォーマットは LTSV形式で、項目間はタブ区切りとなります。

【OpenShiftコンテナログファイル レコード形式】

  • ログフォーマットがLTSVの場合:

最新のタイムスタンプ Pod名 コンテナ名 メッセージ

表 4.24 コンテナログ監視レコード形式(LTSV)

No.

項目

キー:

説明

1

タイムスタンプ

TimeStamp:

取得したコンテナログが記録された時刻。フォーマット:YYYY-MM-DDThh:mm:ddZ(例:2020-03-13T07:09:06Z)

2

Pod名

Pod:

取得したPod名

3

コンテナ名

Container:

取得したコンテナ名

4

メッセージ

Message:

取得したコンテナログのメッセージ

  • ログフォーマットがJSONの場合:

イベント内容

表 4.25 コンテナログ監視レコード形式(JSON)

No.

項目

説明

1

コンテナログ内容

取得したコンテナログの内容が入ります。コンテナログの内容はJSONの形式で出力されます。

4.4.10. テキストログ監視の設定方法

以下にSenju DevOperation Conductorのテキストログ監視を利用して、Kubernetesイベントログ監視/Kubernetesコンテナログ監視/OpenShiftイベント監視で取得したログメッセージを監視する運用例を示します。この例では、ログメッセージにキーワードが発生時にメッセージモニタに通知されるようにログフィルタを登録し、監視する場合について説明します。

<ログフィルタの登録>
千手ブラウザのツリービューで<ドメイン>→“フィルタ”→“ログフィルタ”を選択します。ログフィルタのエンティティでリストビューの何も表示されていない部分でマウスの右ボタンを押してコンテキストメニューを表示し、[新規作成]メニューを選択します。ログフィルタのプロパティが表示されます。ログフィルタ名などの各項目を入力し[OK]ボタンを押下します。これにより、ログフィルタの登録が完了します。

<フィルタ監視項目の追加>
千手ブラウザのツリービューの<ドメイン>→“フィルタ”→“ログフィルタ”→<ログフィルタ>でフィルタ監視項目を登録するログフィルタを選択し、リストビューの何も表示されていない部分でマウスの右ボタンを押してコンテキストメニューを表示し、[新規作成]メニューを選択します。フィルタ監視項目のプロパティが表示されますので、指定フィールドを検知するキーワードで監視設定し、通知したいメッセージIDを登録します。

<テキストログ監視の設定>
OpenShiftイベントログファイルのテキストログ監視を行うには、千手ブラウザのツリービューで、<ドメイン>→“ノードグループ”→<ノードグループ>を選択し、そのリストビューからOpenShiftイベント監視のプローブとして設定したノードを選択し、マウスの右ボタンをクリックしコンテキストメニューを表示し、[プロパティ]メニューを選択します。ノードのプロパティウィンドウが表示されますので、[ログ監視]タブを選択します。ノードのプロパティ([ログ監視]タブ)にて、監視対象のパス名とファイル名にOpenShiftログファイルを指定し、監視方法に先に作成したログフィルタを指定します。ログ監視を登録した後に、登録したノードに対して[反映(監視属性)]を実行することにより、ログファイルの監視を開始します。

以上で、テキストログ監視の設定方法は完了です。この設定によりKubernetesイベントログファイル/Kubernetesコンテナログファイル/OpenShiftイベントログファイルにキーワードが出力された場合、メッセージモニタに通知されます。

警告

管理対象ノードにおいて千手が起動していない状態で、[反映(監視属性)]を行うと失敗しますので、注意して下さい。

4.4.11. 使用上の制限事項

  • Docker監視項目、Kubernetes監視項目、Podman監視項目およびOpenShift監視項目のパラメータにスペース、メタキャラクタを含む値を指定することはできません。

  • OpenShift監視項目のセンサー監視では「コンテキスト」パラメータの値に「#」が含まれる場合、センサーのログインシェルの種類により「#」をバックスラッシュ「\」でエスケープする必要があります。

表 4.26 エスケープ有無の表

シェル種類

エスケープ有無

指定例

csh

default/xxxx-xxx:nnnn/IAM\\\#xxxxx@nri.co.jp

bash

default/xxxx-xxx:nnnn/IAM#xxxxx@nri.co.jp

dash

default/xxxx-xxx:nnnn/IAM#xxxxx@nri.co.jp

  • 「Podman:コンテナ別」で始まる監視項目は、一部podman statsコマンドで取得していますが、podman statsコマンドはPodman、cgroupのバージョンとrootlessモードの状態により、サポートされないことがあります。詳細については下記の表に示します。

表 4.27 Podman stats実行可否結果表

Podman V2

Podman V3

cgroup v1

cgroup v2

cgroup v1

cgroup v2

rootless有効

×

×

×

rootless無効

○:実行可能
×:実行不可
△:一部項目取得可能
  • OpenShift監視での監視先がRed Hat OpenShift Service on AWS (ROSA)の場合、以下の監視項目は利用できません。
    • OpenShift:Pod別CPU使用率(%)

    • OpenShift:Pod別CPUミリコア使用量(millicores)

    • OpenShift:Pod別メモリ使用量(KB)

    • OpenShift:Pod別メモリ使用量(MB)

    • OpenShift:ワーカーノード別CPU使用率(%)

    • OpenShift:ワーカーノード別CPUミリコア使用量(millicores)

    • OpenShift:ワーカーノード別メモリ使用率(%)

    • OpenShift:ワーカーノード別メモリ使用量(MB)

    • OpenShift:デプロイメント別CPU使用率(%)

    • OpenShift:レプリカセット別CPU使用率(%)

    • OpenShift:デーモンセット別CPU使用率(%)