Hitachi

JP1 Version 13 JP1/Integrated Management 3 - Manager 構築ガイド


10.1.2 セットアップ

IMエクスポーターが提供するアドオンプログラムのセットアップ手順を,次に示します。

JP1/IM - Agentのセットアップについては,JP1/IM - Agentの「1.21 JP1/IM - Agentのセットアップ(Windowsの場合)」および「2.19 JP1/IM - Agentのセットアップ(UNIXの場合)」を参照してください。

〈この項の構成〉

(1) Fluentdのログメトリクス定義のセットアップ(オプション)

ログメトリクス機能を使用する場合,アドオンプログラムの有効化手順でJP1/IM - AgentのFluentdの設定を実施したあと,次の設定を行います。

(a) ログメトリクス定義ファイルの編集(ログメトリクスの定義)

ログメトリクス定義ファイル(fluentd_任意の名前_logmetrics.conf)を作成し,インプットプラグイン機能とアウトプットプラグイン機能の定義を行います。

ログメトリクス定義ファイルのサンプルファイルについては,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(l)ログメトリクス機能」で,該当するファイルを説明している個所を参照してください。

(b) ログ監視対象定義ファイルの編集(includeの追加)

ログメトリクス定義ファイルによるログ監視を有効にするため,ログ監視対象定義ファイル(jpc_fluentd_common_list.conf)に「@include」の行を追加して,「(a)ログメトリクス定義ファイルの編集(ログメトリクスの定義)」で定義したログメトリクス定義ファイルを追加します。

ログ監視対象定義ファイルのサンプルファイルについては,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(l)ログメトリクス機能」で,該当するファイルを説明している個所を参照してください。

(c) Fluentdの再起動

(a)ログメトリクス定義ファイルの編集(ログメトリクスの定義)」および「(b)ログ監視対象定義ファイルの編集(includeの追加)」の定義内容を反映するため,Fluentdの再起動を行います。

再起動する場合のサービスの起動と停止の詳細については,マニュアル「JP1/Integrated Management 3 - Manager 運用ガイド」の「10. JP1/IM - Agentの起動と終了」を参照してください。

(2) スクレイプ定義の設定(必須)

Exporterの種類に応じて,スクレイプ定義を設定する必要があります。IMエクスポーターのアドオンプログラムが提供する機能をスクレイプ対象に設定する場合は,次に示すスクレイプ定義を追加します。

表10‒1 IMエクスポーターのアドオンプログラムが提供する機能のスクレイプ定義

アドオンプログラムの提供機能

対応OS

スクレイプするExporterまたは対象

スクレイプ定義

Windows性能情報収集機能

Windows

Windows exporter

設定不要です。

Linuxプロセス情報収集機能

Linux

Process exporter

AWS CloudWatch性能情報収集機能

WindowsおよびLinux

Yet another cloudwatch exporter

Azure Monitor性能情報収集機能

Promitor

ログメトリクス機能

Fluentd

ログメトリクス機能を使用する場合,設定が必要です。

必要な設定については,「(a)ログメトリクス機能のスクレイプ定義」を参照してください。

UAP監視機能

Script exporter

監視対象スクリプトの設定が必要です。

必要な設定については,「(b)Script exporterのスクレイプ定義」を参照してください。

(a) ログメトリクス機能のスクレイプ定義

ログメトリクス機能のスクレイプ機能では,ユーザー独自のExporterのスクレイプ機能を利用します。

  • ユーザー独自のディスカバリ設定ファイルの作成

    ユーザー独自のディスカバリ設定ファイル(file_sd_config_任意の名前.yml)を作成し,監視対象を定義します。

    ユーザー独自のディスカバリ設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)の該当するファイルを説明している個所を参照してください。

    また,ログメトリクス機能に関する記述内容については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(l)ログメトリクス機能」で,該当するファイルのサンプルファイルを説明している個所を参照してください。

  • Prometheus設定ファイルでのscrape_configsの設定

    Prometheus設定ファイル(jpc_prometheus_server.yml)で,scrape_configsの設定を追加します。

    Prometheus設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)の該当するファイルを説明している個所を参照してください。

    また,ログメトリクス機能に関する記述内容については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(l)ログメトリクス機能」で,該当するファイルのサンプルファイルを説明している個所を参照してください。

(b) Script exporterのスクレイプ定義

スクレイプ定義を指定する方法には,Script exporter設定ファイル(jpc_script_exporter.yml)に定義したスクリプトをすべて実行する「http_sd_config方式」と,Script exporter設定ファイル(jpc_script_exporter.yml)に定義したスクリプトの1つをPrometheus設定ファイル(jpc_prometheus_server.yml)のscrape_configsのparamsに指定する「file_sd_config方式」があります。デフォルトは「http_sd_config方式」です。

Script exporter設定ファイルおよびPrometheus設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)の該当するファイルを説明している個所を参照してください。

スクレイプ定義の例を,次に示します。

  • http_sd_config方式によるスクレイプ定義の例

scrape_configs:
  - job_name: jpc_script_exporter
    http_sd_configs:
      - url: http://インストールホスト名:ポート/discovery
    relabel_configs:
      - source_labels: [__param_script]
        target_label: jp1_pc_script
      - target_label: jp1_pc_exporter
        replacement: JPC Script Exporter
      - target_label: jp1_pc_category
        replacement: 任意のカテゴリ名
      - target_label: jp1_pc_trendname
        replacement: script_exporter
      - target_label: jp1_pc_multiple_node
        replacement: jp1_pc_exporter="{job='jpc_script.*',jp1_pc_multiple_node=''}"
      - target_label: jp1_pc_nodelabel
        replacement: Script metric collector(Script exporter)
      - target_label: jp1_pc_agent_create_flag
        replacement: false
    metric_relabel_configs:
      - source_labels: [jp1_pc_script]
        target_label: jp1_pc_nodelabel
      - regex: (jp1_pc_multiple_node|jp1_pc_script|jp1_pc_agent_create_flag)
        action: labeldrop
インストールホスト名

Script exporterをインストールしたホスト名を,1〜255文字の制御文字以外の文字で指定します。

ポート

Script exporterのポート番号を指定します。

任意のカテゴリ名

エージェントSIDのIM管理ノードのカテゴリIDを,1〜255文字の制御文字以外の文字で指定します。

  • file_sd_config方式によるスクレイプ定義の例

scrape_configs:
# 設定ファイルのスクリプトを実行する例
  - job_name: 任意のスクレイプジョブ名1
    file_sd_configs:
      - files:
        - 'Script Exporterのディスカバリ設定ファイルのパス'
    metrics_path: /probe
    params:
      script: [Script Exporter設定ファイルのscripts.name]
    relabel_configs:
      - source_labels: [__param_script]
        target_label: jp1_pc_nodelabel
      - target_label: jp1_pc_category
        replacement: 任意のカテゴリ名
      - target_label: jp1_pc_nodelabel
        replacement: Script metric collector(Script exporter)
    metric_relabel_configs:
      - source_labels: [jp1_pc_script]
        target_label: jp1_pc_nodelabel
      - regex: (jp1_pc_multiple_node|jp1_pc_script|jp1_pc_agent_create_flag)
        action: labeldrop
# 設定ファイルのスクリプトに,追加で引数1,2を指定し実行する例
  - job_name: 任意のスクレイプジョブ名2
    file_sd_configs:
      - files:
        - 'Script Exporterのディスカバリ設定ファイルのパス'
    metrics_path: /probe
    params:
      script: [Script Exporter設定ファイルのscripts.name]
      引数名1: [引数名1の値]
      引数名2: [引数名2の値]
    relabel_configs:
      - source_labels: [__param_script]
        target_label: jp1_pc_nodelabel
      - target_label: jp1_pc_category
        replacement: 任意のカテゴリ名
      - target_label: jp1_pc_nodelabel
        replacement: Script metric collector(Script exporter)
    metric_relabel_configs:
      - source_labels: [jp1_pc_script]
        target_label: jp1_pc_nodelabel
      - regex: (jp1_pc_multiple_node|jp1_pc_script|jp1_pc_agent_create_flag)
        action: labeldrop
任意のスクレイプジョブ名

同一ホストのほかのスクレイプジョブ名と重複しない任意の名前を,1〜255文字の制御文字以外の文字で指定します。

Script exporterのディスカバリ設定ファイルのパス

Script exporterのディスカバリ設定ファイル(jpc_file_sd_config_script.yml)のパスを指定します。

任意のカテゴリ名

エージェントSIDのIM管理ノードのカテゴリIDを,1〜255文字の制御文字以外の文字で指定します。

(3) Windows exporterの定義ファイルの編集

(a) 監視対象プロセスの指定(必須)

■Windows exporter設定ファイル(jpc_windows_exporter.yml)の編集

Windows exporter設定ファイル(jpc_windows_exporter.yml)を編集し,監視対象プロセスを定義します。

デフォルトでは,すべてのプロセスが監視対象外となるため,監視したいプロセスの指定をWindows exporter設定ファイルで行います。

Windows exporter設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Windows exporter設定ファイル(jpc_windows_exporter.yml)」を参照してください。

(b) 監視メトリックの変更(オプション)

■Prometheus設定ファイル(jpc_prometheus_server.yml)の編集

収集対象のメトリクスを変更する場合は,Prometheus設定ファイル(jpc_prometheus_server.yml)のmetric_relabel_configsの設定を変更します。

Prometheus設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)のJP1/IM - Agentの「Prometheus設定ファイル(jpc_prometheus_server.yml)」を参照してください。

■Windows exporter(プロセス監視)のメトリック定義ファイル(metrics_windows_exporter_process.conf)の編集

統合オペレーション・ビューアーの[トレンド]タブに表示するプロセス監視のメトリックを変更する場合は,Windows exporter(プロセス監視)のメトリック定義ファイル(metrics_windows_exporter_process.conf)の設定を変更します。

Windows exporter(プロセス監視)のメトリック定義ファイルについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Windows exporter(プロセス監視)のメトリック定義ファイル(metrics_windows_exporter_process.conf)」を参照してください。

(4) Process exporterのセットアップ

(a) 監視対象プロセスの指定(必須)

■Process exporter設定ファイル(jpc_process_exporter.yml)の編集

Process exporter設定ファイル(jpc_process_exporter.yml)を編集し,監視対象プロセスを定義します。

デフォルトでは,コメントアウトによりすべてのプロセスが監視対象外となるため,初期設定のコメントアウトを解除した上で,監視したいプロセスを指定します。

Process exporter設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Process exporter設定ファイル(jpc_process_exporter.yml)」を参照してください。

(b) 監視メトリックの変更(オプション)

■Prometheus設定ファイル(jpc_prometheus_server.yml)の編集

収集対象のメトリクスを変更する場合は,Prometheus設定ファイル(jpc_prometheus_server.yml)のmetric_relabel_configsの設定を変更します。

Prometheus設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)のJP1/IM - Agentの「Prometheus設定ファイル(jpc_prometheus_server.yml)」を参照してください。

■Process exporterのメトリック定義ファイル(metrics_process_exporter.conf)の編集

統合オペレーション・ビューアーの[トレンド]タブに表示するメトリックを変更する場合は,Process exporterのメトリック定義ファイル(metrics_process_exporter.conf)の設定を変更します。

Process exporterのメトリック定義ファイルについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Process exporterのメトリック定義ファイル(metrics_process_exporter.conf)」を参照してください。

(5) Yet another cloudwatch exporterのセットアップ(必須)

IMエクスポーターによってサポートするAWSサービスが増えますが,JP1/IM - AgentのYet another cloudwatch exporterのセットアップ手順に変更はありません。

Yet another cloudwatch exporterのセットアップ手順については,「2.19 JP1/IM - Agentのセットアップ(UNIXの場合)」の「2.19.2(7)Yet another cloudwatch exporterの設定」,および「1.19 JP1/IM - Managerのセットアップ(Windowsの場合)」の「1.19.3(1)(d)製品プラグインの設定(Windowsの場合)」を説明している個所を参照してください。

ただし,Windowsの場合,「2.19 JP1/IM - Agentのセットアップ(UNIXの場合)」の「2.19.2(7)Yet another cloudwatch exporterの設定」の「(b)CloudWatchに接続するための設定を変更する(Linuxの場合)(オプション)」に記載しているcredentialsファイルは,「C:\Windows\System32\config\systemprofile」に配置してください。

(a) システムノード定義ファイル(imdd_systemnode.conf)の設定(必須)

IMエクスポーターによって新たにサポートするAWSサービスに対して,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.1(1)IM管理ノードの作成(__configurationGetメソッド)」の「(e)ツリーの形式」に示すシステムノードを作成するときの,システムノード定義ファイル(imdd_systemnode.conf)の設定例を,次に示します。

表10‒2 システムノード定義ファイル(imdd_systemnode.conf)の設定例

設定項目

displayName

type

name

Amazon Elastic Container Service

JP1PC-AWS-ECS

[{".*":"regexp"}]

Amazon Elastic Block Store

JP1PC-AWS-EBS

[{".*":"regexp"}]

Amazon Elastic File System

JP1PC-AWS-EFS

[{".*":"regexp"}]

FSx File System

JP1PC-AWS-FSX

[{".*":"regexp"}]

Simple Notification Service

JP1PC-AWS-SNS

[{".*":"regexp"}]

Relational Database Service

JP1PC-AWS-RDS

[{".*":"regexp"}]

上記の内容をシステムノード定義ファイルに設定した場合,次のとおりになります。

{
  "meta":{
    "version":"2"
  },
  "allSystem":[
    {
      "id":"ecs",
      "displayName":"Amazon Elastic Container Service",
      "objectRoot":[
        {
          "type":"JP1PC-AWS-ECS",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"ebs",
      "displayName":"Amazon Elastic Block Store",
      "objectRoot":[
        {
          "type":"JP1PC-AWS-EBS",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"efs",
      "displayName":"Amazon Elastic File System",
      "objectRoot":[
        {
          "type":"JP1PC-AWS-EFS",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"fsx",
      "displayName":"FSx File System",
      "objectRoot":[
        {
          "type":"JP1PC-AWS-FSX",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"sns",
      "displayName":"Simple Notification Service",
      "objectRoot":[
        {
          "type":"JP1PC-AWS-SNS",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"rds",
      "displayName":"Relational Database Service",
      "objectRoot":[
        {
          "type":"JP1PC-AWS-RDS",
          "name":[{".*":"regexp"}]
        }
      ]
    }
  ]
}

(6) Promitorのセットアップ

Promitorで監視を行う場合は,次の設定を行います。

(a) Azureに接続するための設定(必須)

■サービス定義ファイルまたはユニット定義ファイルの変更

Promitorの設定ファイルの格納先は,環境変数PROMITOR_CONFIG_FOLDERに絶対パスで指定します。この環境変数はサービス定義ファイルまたはユニット定義ファイルに定義されているため,該当個所を変更します。サービス定義ファイルおよびユニット定義ファイルについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の,該当するファイルを説明している個所を参照してください。

■Promitor Scraper runtime設定ファイル(runtime.yaml)の変更

Promitor Scraperのruntime設定ファイル(runtime.yaml)では,Promitor Scraperの設定ファイル(metrics-declaration.yaml)のパスをmetricsConfiguration.absolutePathに指定します。Promitor Scraperのruntime設定ファイル(runtime.yaml)については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の,該当するファイルを説明している個所を参照してください。

■Azureへの接続情報の設定

PromitorからAzureに接続するための認証情報を設定します。設定方法については,「(b)Azureに接続するための認証情報の設定」を参照してください。

(b) Azureに接続するための認証情報の設定

PromitorからAzureに接続する方式には,サービスプリンシパル方式とマネージドID方式があります。PromitorをAzure VirtualMachine以外のホスト上にインストールする場合は,サービスプリンシパル方式だけが使用できます。PromitorをAzure VirtualMachine上にインストールする場合は,サービスプリンシパル方式またはマネージドID方式が使用できます。

Azureに接続する手順について,次に示す3つのパターンで説明します。

  • サービスプリンシパル方式

    クライアントシークレットを使用して,Azureに接続する

  • マネージドID方式(システム割り当て)

    システム割り当てマネージドIDを使用して,Azureに接続する

  • マネージドID方式(ユーザー割り当て)

    ユーザー割り当てマネージドIDを使用して,Azureに接続する

■サービスプリンシパル方式でAzureに接続する場合

Azure Portalで手順1〜3,Promitorがインストールされたホストで手順4〜6を実施します。

  1. アプリケーションを作成し,クライアントシークレットを発行する。

  2. アプリケーションの[概要]からアプリケーション(クライアント)IDを取得する。

  3. 監視対象のリソースグループ(またはサブスクリプション)を選択し,[アクセス制御(IAM)]−[ロールの割り当ての追加]を実行する。

  4. 手順1で取得したクライアントシークレットの「値」を,JP1/IM - Agentに登録する。

    シークレットを登録するためのキーには,次に示す値を指定します。

    シークレットを登録するためのキー

    指定する値

    Promitor Resource Discoveryのキー

    Promitor.resource_discovery.env.AUTH_APPKEY

    Promitor Scraperのキー

    Promitor.scraper.env.AUTH_APPKEY

    シークレットの登録方法については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」のJP1/IM - Agentの「9.5.7 シークレット難読化機能」で,「9.5.7(2)シークレットの追加・変更・削除」の説明を参照してください。

    重要

    コンテナ環境で構築する場合,コンテナイメージの作成前にこの手順を実施できません。コンテナの作成後に実施してください。

  5. Promitor Scraper runtime設定ファイル(runtime.yaml)とPromitor Resource Discovery runtime設定ファイル(runtime.yaml)で,authentication.modeServicePrincipalを指定します。

  6. Promitor Scraper設定ファイル(metrics-declaration.yaml)とPromitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)に,接続先のAzureの情報を指定する。

    • Promitor Scraper設定ファイル(metrics-declaration.yaml)

      azureMetadataに接続先のAzureの情報を指定します。

    • Promitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)

      azureLandScapeに接続先のAzureの情報を指定します。

■マネージドID方式(システム割り当て)でAzureに接続する場合

Azure Portalで手順1〜3,Promitorがインストールされたホストで手順4〜6を実施します。

  1. [Virtual Machines]で,PromitorがインストールされているAzure VirtualMachineを選択する。

  2. [ID]−[システム割り当て済み]で[状態]を「オン」に変更する。

  3. [ID]−[システム割り当て済み]の[アクセス許可]で「Azureロールの割り当て」を選択し,「監視閲覧者」を指定する。

  4. Promitor Scraper runtime設定ファイル(runtime.yaml)とPromitor Resource Discovery runtime設定ファイル(runtime.yaml)で,authentication.modeSystemAssignedManagedIdentityを指定する。

  5. Promitor Scraper設定ファイル(metrics-declaration.yaml)とPromitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)に,接続先のAzureの情報を指定する。

    • Promitor Scraper設定ファイル(metrics-declaration.yaml)

      azureMetadataに接続先のAzureの情報を指定します。

    • Promitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)

      azureLandScapeに接続先のAzureの情報を指定します。

■マネージドID方式(ユーザー割り当て)でAzureに接続する場合

Azure Portalで手順1〜5,Promitorがインストールされたホストで手順6〜7を実施します。

  1. サービス検索で,[マネージドID]−[マネージドIDの作成]を選択する。

  2. リソースグループ,名前などを指定して,マネージドIDを作成する。

  3. [Azureロールの割り当て]で「監視閲覧者」を割り当てる。

  4. [Virtual Machines]で,PromitorがインストールされているAzure VirtualMachineを選択する。

  5. [ID]−[ユーザー割り当て済み]−[追加]を選択し,手順2で作成したマネージドIDを追加する。

  6. Promitor Scraper runtime設定ファイル(runtime.yaml)とPromitor Resource Discovery runtime設定ファイル(runtime.yaml)で,authentication.modeUserAssignedManagedIdentityを指定します。

  7. Promitor Scraper設定ファイル(metrics-declaration.yaml)とPromitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)に,接続先のAzureの情報を指定する。

    • Promitor Scraper設定ファイル(metrics-declaration.yaml)

      azureMetadataに接続先のAzureの情報を指定します。

    • Promitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)

      azureLandScapeに接続先のAzureの情報を指定します。

(c) Azureにプロキシ経由で接続する設定(オプション)

Azureにプロキシ経由で接続する必要がある場合は,環境変数HTTPS_PROXYとNO_PROXYを使用します。設定方法の詳細については,「2.19 JP1/IM - Agentのセットアップ(UNIXの場合)」の「2.19.2(7)(c)CloudWatchにプロキシ経由で接続する(Linuxの場合)(オプション)」を参照してください。NO_PROXYには,Promitor Scraper runtime設定ファイル(runtime.yaml)のresourceDiscovery.hostの値を指定してください。

(d) 取得対象の設定(必須)

■個別に指定が必要な監視対象の設定(必須)

監視対象は,デフォルトでは自動検出する設定となっていますが,次に示す一部のサービスは自動検出に対応していません。これらのサービスについては,Promitor Scraper設定ファイル(metrics-declaration.yaml)を編集し,監視対象を個別に指定してください。

  • 監視対象を個別に指定する必要があるサービス

    マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(f)Promitor」のPromitorが監視対象としてサポートするサービスについて説明している表で,オートディスカバリの対象外となっているサービスが該当します。

  • 監視対象を個別に指定する方法

    Promitor Scraper設定ファイル(metrics-declaration.yaml)のコメントアウトを解除し,resourcesセクションで監視対象を指定します。

■監視対象の変更(オプション)

Promitorで監視対象を指定する方法には,次に示す2種類の方法があります。

  • 監視対象を個別に指定する方法

    監視するAzureリソースを個別に指定する場合は,Promitor Scraper設定ファイル(metrics-declaration.yaml)に指定します。

  • 監視対象を自動検出する方法

    テナント内のリソースを自動的に検出し,Azureリソースを監視する場合は,Promitor Scraper設定ファイル(metrics-declaration.yaml)およびPromitor Resource Discovery設定ファイル(resource-discovery-declaration.yaml)に指定します。

■監視メトリクスの変更(オプション)

取得するメトリクスや表示するメトリクスを変更する場合は,次の設定を行います。

  1. Azure Monitorで収集されていることを確認する。

    収集したいメトリックがAzure Monitorで収集されていることを確認します。

    次の手順での設定に備えて,メトリック名,統計タイプを確認しておきます。

    メトリック名については,Azure Monitor DocumentationのReference - Supported metrics - Resource metricsのMetricを参照してください。統計タイプについては,Azure Monitor DocumentationのReference - Supported metrics - Resource metricsのAggregation Typeを参照してください。

  2. Prometheus設定ファイル(jpc_prometheus_server.yml)の設定内容を変更する。

    収集対象のメトリクスを変更する場合は,Prometheus設定ファイル(jpc_prometheus_server.yml)のmetric_relabel_configsの設定を変更します。

    Prometheus設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)のJP1/IM - Agentの「Prometheus設定ファイル(jpc_prometheus_server.yml)」を参照してください。

  3. Promitorのメトリック定義ファイル(metrics_promitor.conf)の設定内容を変更する。

    統合オペレーション・ビューアーの[トレンド]タブに表示するメトリックを変更する場合は,Promitorのメトリック定義ファイル(metrics_promitor.conf)の設定を変更します。

    Promitorのメトリック定義ファイルについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Promitorのメトリック定義ファイル(metrics_promitor.conf)」を参照してください。

(e) テナント情報の表示文字列の設定(オプション)

プロパティ表示文字列定義ファイル(property_labels.conf)に,監視対象のテナントIDとサブスクリプションIDの表示文字列を設定します。この設定を行わない場合,IM管理ノードのプロパティやJP1イベントの拡張属性には,テナントとサブスクリプションは「default」と表示されます。

プロパティ表示文字列定義ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「プロパティ表示文字列定義ファイル(property_labels.conf)」を参照してください。

(f) システムノード定義ファイル(imdd_systemnode.conf)の設定(必須)

マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.1(1)IM管理ノードの作成(__configurationGetメソッド)」の「(e)ツリーの形式」に示すシステムノードを作成するときは,システムノード定義ファイル(imdd_systemnode.conf)を編集して,次の設定項目を指定します。ここに記載のない設定項目については,任意の値を指定します。

表10‒3 システムノード定義ファイル(imdd_systemnode.conf)の設定項目

設定項目

設定値

displayname

Azure Monitorのメトリクスを発行するサービスの名前を指定します。

type

次の文字列を大文字表記で指定します。

Azure-Azureサービス名

Azureサービス名」は,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(f)Promitor」で,Promitorが監視対象としてサポートするサービスについて説明している個所の「PromitorのresourceType名」が該当します。

name

次の文字列を指定します。

[{".*":"regexp"}]

Promitorのメトリック定義ファイル(metrics_promitor.conf)の初期設定で監視するAzureサービスに対して,システム管理ノードを設定する場合の,システムノード定義ファイルの設定例を,次に示します。

表10‒4 システムノード定義ファイル(imdd_systemnode.conf)の設定例

設定項目

displayName

type

name

Azure Function App

JP1PC-AZURE-FUNCTIONAPP

[{".*":"regexp"}]

Azure Container Instances

JP1PC-AZURE- CONTAINERINSTANCE

[{".*":"regexp"}]

Azure Kubernetes Service

JP1PC-AZURE-KUBERNETESSERVICE

[{".*":"regexp"}]

Azure File Storage

JP1PC-AZURE-FILESTORAGE

[{".*":"regexp"}]

Azure Blob Storage

JP1PC-AZURE-BLOBSTORAGE

[{".*":"regexp"}]

Azure Service Bus Namespace

JP1PC-AZURE-SERVICEBUSNAMESPACE

[{".*":"regexp"}]

Azure Cosmos DB

JP1PC-AZURE-COSMOSDB

[{".*":"regexp"}]

Azure SQL Database

JP1PC-AZURE-SQLDATABASE

[{".*":"regexp"}]

Azure SQL Server

JP1PC-AZURE-SQLSERVER

[{".*":"regexp"}]

Azure SQL Managed Instance

JP1PC-AZURE-SQLMANAGEDINSTANCE

[{".*":"regexp"}]

Azure SQL Elastic Pool

JP1PC-AZURE-SQLELASTICPOOL

[{".*":"regexp"}]

Azure Logic Apps

JP1PC-AZURE-LOGICAPP

[{".*":"regexp"}]

上記の内容をシステムノード定義ファイルに設定した場合,次のようになります。

{
  "meta":{
    "version":"2"
  },
  "allSystem":[
    {
      "id":"functionApp",
      "displayName":"Azure Function App",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-FUNCTIONAPP",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"containerInstance",
      "displayName":"Azure Container Instances",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-CONTAINERINSTANCE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"kubernetesService",
      "displayName":"Azure Kubernetes Service",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-KUBERNETESSERVICE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"fileStorage",
      "displayName":"Azure File Storage",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-FILESTORAGE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"blobStorage",
      "displayName":"Azure Blob Storage",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-BLOBSTORAGE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"serviceBusNamespace",
      "displayName":"Azure Service Bus Namespace",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-SERVICEBUSNAMESPACE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"cosmosDb",
      "displayName":"Azure Cosmos DB",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-COSMOSDB",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"sqlDatabase",
      "displayName":"Azure SQL Database",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-SQLDATABASE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"sqlServer",
      "displayName":"Azure SQL Server",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-SQLSERVER",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"sqlManagedInstance",
      "displayName":"Azure SQL Managed Instance",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-SQLMANAGEDINSTANCE",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"sqlElasticPool",
      "displayName":"Azure SQL Elastic Pool",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-SQLELASTICPOOL",
          "name":[{".*":"regexp"}]
        }
      ]
    },
    {
      "id":"logicApp",
      "displayName":"Azure Logic Apps",
      "objectRoot":[
        {
          "type":"JP1PC-AZURE-LOGICAPP",
          "name":[{".*":"regexp"}]
        }
      ]
    }
  ]
}

システムノード定義ファイルを設定しておくと,jddcreatetreeコマンドが実行されて,VirtualMachine以外のPromitorSIDが作成されたときに,Azureサービス名に応じたシステムノードの配下にIM管理ノードが表示されます。VirtualMachineのPromitorSIDについては,システムノード定義ファイルに記載不要で,ホストを表すノードの配下にIM管理ノードが表示されます。

システムノード定義ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)のJP1/IM - Managerの「システムノード定義ファイル(imdd_systemnode.conf)」を参照してください。

(7) コンテナ監視のセットアップ

監視対象によって,利用する機能とセットアップの方法が異なります。監視対象ごとの利用する機能とセットアップ方法の参照先を,次に示します。

監視対象

利用する機能

セットアップ方法の参照先

Red Hat OpenShift

ユーザー独自のPrometheus

この表以降の説明を参照してください。

Kubernetes

Amazon Elastic Kubernetes Service(EKS)

Azure Kubernetes Service(AKS)

Azure監視機能(Promitor)

デフォルトでAKSの監視も有効です。

10.1.2(6)Promitorのセットアップ」の説明を参照してください。

(a) ユーザー独自のPrometheusでのスクレイプの設定(必須)

  • Red Hat OpenShiftの場合

    設定不要です。

    インストール時にopenshift-monitoringプロジェクトのインストールとスクレイピングの設定が行われます。

  • KubernetesおよびAmazon Kubernetes Service(EKS)の場合

    Prometheusが未導入の場合,または,Prometheusが導入済みで次の表に示すスクレイプ対象が未設定の場合に,スクレイピングの設定を行います。

    スクレイプ対象

    取得できる情報

    収集できるメトリック

    kube-stat-metrics

    ノード,Pod,ワークロードのステータス情報

    マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の,「12.5.2(2)(h)Red Hat OpenShift」の「主な取得項目」について説明している個所を参照してください。

    node_exporter

    ノードの性能情報

    kubelet

    Podの性能情報

以降の手順は,Red Hat OpenShift,Kubernetes,およびAmazon Kubernetes Service(EKS)で共通となります。

(b) 接続のための設定(必須)

ユーザー独自のPrometheusから情報を収集するための,リモートライトの設定を行います。

監視対象ごとの設定変更の方法については,「(c)Prometheusの設定変更(Red Hat OpenShift)」および「(d)Prometheusの設定変更(Amazon Elastic Kubernetes Service(EKS))」を参照してください。

■global.external_labelsセクション
  • jp1_pc_prome_hostname(必須)

    Prometheusのホスト名を指定します。

  • jp1_pc_prome_clustername(オプション)

    クラスタ名を指定します。

    このラベルを指定しない場合,クラスタのIM管理ノードは作成されません。

(指定例)

global:
external_labels:
  jp1_pc_prome_hostname: promHost
  jp1_pc_prome_clustername: myCluster
■remote_writeセクション
  • 接続先の設定

    リモートライト先として,JP1/IM - Manager(インテリジェント統合管理基盤)のエンドポイントを指定します。エンドポイントを2つ指定し,「コンテナ監視に必要なラベルの設定」の1.と2.をそれぞれのセクションに記載します。クラスタのノードを作成する場合は,エンドポイントをもう1つ指定し,3.を記載してください。

  • コンテナ監視に必要なラベルの設定

    コンテナ監視に必要なラベルを付与するため,次に示す内容をwrite_relabel_configsセクションに記述します。リモートライト時にリラベルされるため,ユーザー独自のPrometheusのローカルストレージには影響しません。

1. 基本の設定

  - source_labels: '[__name__]'
    regex: 'kube_job_status_failed|kube_job_owner|kube_pod_status_phase|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_current_number_scheduled|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_replicaset_spec_replicas|kube_replicaset_status_ready_replicas|kube_replicaset_owner|kube_statefulset_replicas|kube_statefulset_status_replicas_ready|kube_node_status_condition|container_cpu_usage_seconds_total|container_fs_reads_bytes_total|container_fs_writes_bytes_total|container_memory_working_set_bytes|container_spec_memory_limit_bytes|node_boot_time_seconds|node_context_switches_total|node_cpu_seconds_total|node_disk_io_now|node_disk_io_time_seconds_total|node_disk_read_bytes_total|node_disk_reads_completed_total|node_disk_writes_completed_total|node_disk_written_bytes_total|node_filesystem_avail_bytes|node_filesystem_files|node_filesystem_files_free|node_filesystem_free_bytes|node_filesystem_size_bytes|node_intr_total|node_load1|node_load15|node_load5|node_memory_Active_file_bytes|node_memory_Buffers_bytes|node_memory_Cached_bytes|node_memory_Inactive_file_bytes|node_memory_MemAvailable_bytes|node_memory_MemFree_bytes|node_memory_MemTotal_bytes|node_memory_SReclaimable_bytes|node_memory_SwapFree_bytes|node_memory_SwapTotal_bytes|node_netstat_Icmp6_InMsgs|node_netstat_Icmp_InMsgs|node_netstat_Icmp6_OutMsgs|node_netstat_Icmp_OutMsgs|node_netstat_Tcp_InSegs|node_netstat_Tcp_OutSegs|node_netstat_Udp_InDatagrams|node_netstat_Udp_OutDatagrams|node_network_flags|node_network_iface_link|node_network_mtu_bytes|node_network_receive_errs_total|node_network_receive_packets_total|node_network_transmit_colls_total|node_network_transmit_errs_total|node_network_transmit_packets_total|node_time_seconds|node_uname_info|node_vmstat_pswpin|node_vmstat_pswpout'
    action: 'keep'
  - source_labels: ['__name__','namespace']
    regex: '(kube_pod_|kube_job_|container_).*;(.*)'
    target_label: jp1_pc_nodelabel
    replacement: $2
  - source_labels: ['__name__','node']
    regex: 'kube_node_.*;(.*)'
    target_label: jp1_pc_nodelabel
  - source_labels: ['__name__','daemonset']
    regex: 'kube_daemonset_.*;(.*)'
    target_label: jp1_pc_nodelabel
  - source_labels: ['__name__','deployment']
    regex: 'kube_deployment_.*;(.*)'
    target_label: jp1_pc_nodelabel
  - source_labels: ['__name__','replicaset']
    regex: 'kube_replicaset_.*;(.*)'
    target_label: jp1_pc_nodelabel
  - source_labels: ['__name__','statefulset']
    regex: 'kube_statefulset_.*;(.*)'
    target_label: jp1_pc_nodelabel
  - source_labels: ['__name__','owner_kind','owner_name']
    regex: 'kube_job_owner;CronJob;(.*)'
    target_label: jp1_pc_nodelabel
  - source_labels: ['__name__']
    regex: 'node_.*'
    target_label: jp1_pc_nodelabel
    replacement: Linux metric collector(Node exporter)
  - source_labels: ['__name__']
    regex: '(kube_pod_|kube_job_|container_).*;(.*)'
    target_label: jp1_pc_module
    replacement: kubernetes/Namespace
  - source_labels: ['__name__']
    regex: 'kube_node_.*'
    target_label: jp1_pc_module
    replacement: kubernetes/Node
  - source_labels: ['__name__']
    regex: 'kube_daemonset_.*'
    target_label: jp1_pc_module
    replacement: kubernetes/DaemonSet
  - source_labels: ['__name__']
    regex: 'kube_deployment_.*'
    target_label: jp1_pc_module
    replacement: kubernetes/Deployment
  - source_labels: ['__name__']
    regex: 'kube_replicaset_.*'
    target_label: jp1_pc_module
    replacement: kubernetes/ReplicaSet
  - source_labels: ['__name__']
    regex: 'kube_statefulset_.*'
    target_label: jp1_pc_module
    replacement: kubernetes/StatefulSet
  - source_labels: ['__name__','owner_kind']
    regex: 'kube_job_owner;CronJob'
    target_label: jp1_pc_module
    replacement: kubernetes/CronJob
  - source_labels: ['__name__']
    regex: 'kube_.*|container_.*'
    target_label: jp1_pc_trendname
    replacement: kubernetes
  - source_labels: ['__name__']
    regex: 'node_.*'
    target_label: jp1_pc_trendname
    replacement: node_exporter
  - source_labels: ['__name__']
    regex: 'kube_.*'
    target_label: jp1_pc_exporter
    replacement: JPC Kube state metrics
  - source_labels: ['__name__']
    regex: 'node_.*'
    target_label: jp1_pc_exporter
    replacement: JPC Node exporter
  - source_labels: ['__name__']
    regex: 'container_.*'
    target_label: jp1_pc_exporter
    replacement: JPC Kubelet
  - source_labels: ['__name__']
    regex: 'kube_.*'
    target_label: job
    replacement: jpc_kube_state
  - source_labels: ['__name__']
    regex: 'node_.*'
    target_label: job
    replacement: jpc_kube_node
  - source_labels: ['__name__']
    regex: 'container_.*'
    target_label: job
    replacement: jpc_kubelet
  - source_labels: ['__name__']
    regex: 'node_.*'
    target_label: jp1_pc_category
    replacement: platform
  - source_labels: ['job','instance']
    regex: 'jpc_kube_state;([^:]+):?(.*)'
    target_label: jp1_pc_remote_monitor_instance
    replacement: ${1}:Kubernetes state metric collector(Kube state metrics)
  - source_labels: ['job','instance']
    regex: 'jpc_kubelet;([^:]+):?(.*)'
    target_label: jp1_pc_remote_monitor_instance
    replacement: ${1}:Kubernetes resource metric collector(Kubelet)
  - regex: '__.+__|jp1_pc_prome_hostname|jp1_pc_prome_clustername|jp1_pc_nodelabel|jp1_pc_trendname|jp1_pc_module|jp1_pc_exporter|jp1_pc_remote_monitor_instance|instance|job|cronjob|namespace|schedule|concurrency_policy|daemonset|deployment|condition|status|job_name|owner_kind|owner_name|owner_is_controller|reason|replicaset|statefulset|revision|phase|node|kernel_version|os_image|container_runtime_version|kubelet_version|kubeproxy_version|pod_cidr|provider_id|system_uuid|internal_ip|key|value|effect|resource|unit|pod|host_ip|pod_ip|created_by_kind|created_by_name|uid|priority_class|host_network|ip|ip_family|image_image_id|image_spec|container_id|container|type|persistentvolumeclaim|label_.+_LABEL|id|name|device|major|minor|operation|cpu|failure_type|scope'
    action: 'labelkeep'

2. Podのノードを作成するための設定

  - source_labels: ['__name__']
    regex: 'kube_pod_owner|kube_pod_status_phase|container_cpu_usage_seconds_total|container_fs_reads_bytes_total|container_fs_writes_bytes_total|container_memory_working_set_bytes|container_spec_memory_limit_bytes'
    action: 'keep'
  - source_labels: ['pod']
    target_label: jp1_pc_nodelabel
  - target_label: jp1_pc_module
    replacement: kubernetes/Pod
  - target_label: jp1_pc_trendname
    replacement: kubernetes
  - target_label: jp1_pc_exporter
    replacement: JPC Kube state metrics
  - target_label: job
    replacement: jpc_kube_state
  - source_labels: ['instance']
    regex: '([^:]+):?(.*)'
    target_label: jp1_pc_remote_monitor_instance
    replacement: ${1}:Kubernetes state metric collector(Kube state metrics)
  - regex: '__.+__|jp1_pc_prome_hostname|jp1_pc_prome_clustername|jp1_pc_nodelabel|jp1_pc_trendname|jp1_pc_module|jp1_pc_exporter|jp1_pc_remote_monitor_instance|instance|job|cronjob|namespace|schedule|concurrency_policy|daemonset|deployment|condition|status|job_name|owner_kind|owner_name|owner_is_controller|reason|replicaset|statefulset|revision|phase|node|kernel_version|os_image|container_runtime_version|kubelet_version|kubeproxy_version|pod_cidr|provider_id|system_uuid|internal_ip|key|value|effect|resource|unit|pod|host_ip|pod_ip|created_by_kind|created_by_name|uid|priority_class|host_network|ip|ip_family|image_image_id|image_spec|container_id|container|type|persistentvolumeclaim|label_.+_LABEL|id|name|device|major|minor|operation|cpu|failure_type|scope'

3. クラスタのノードを作成するための設定

- source_labels: ['__name__','jp1_pc_prome_clustername']
      regex: '(container_cpu_usage_seconds_total|container_fs_reads_bytes_total|container_fs_writes_bytes_total|container_memory_working_set_bytes|container_spec_memory_limit_bytes);(.+)'
      action: 'keep'
    - source_labels: ['jp1_pc_prome_clustername']
      target_label: jp1_pc_nodelabel
    - target_label: jp1_pc_module
      replacement: kubernetes/Cluster
    - target_label: jp1_pc_trendname
      replacement: kubernetes
    - target_label: jp1_pc_exporter
      replacement: JPC Kubelet
    - target_label: job
      replacement: jpc_kubelet
    - source_labels: ['instance']
      regex: '([^:]+):?(.*)'
      target_label: jp1_pc_remote_monitor_instance
      replacement: ${1}:Kubernetes state metric collector(Kubelet)
    - regex: '__.+__|jp1_pc_prome_hostname|jp1_pc_prome_clustername|jp1_pc_nodelabel|jp1_pc_trendname|jp1_pc_module|jp1_pc_exporter|jp1_pc_remote_monitor_instance|instance|job|cronjob|namespace|schedule|concurrency_policy|daemonset|deployment|condition|status|job_name|owner_kind|owner_name|owner_is_controller|reason|replicaset|statefulset|revision|phase|node|kernel_version|os_image|container_runtime_version|kubelet_version|kubeproxy_version|pod_cidr|provider_id|system_uuid|internal_ip|key|value|effect|resource|unit|pod|host_ip|pod_ip|created_by_kind|created_by_name|uid|priority_class|host_network|ip|ip_family|image_image_id|image_spec|container_id|container|type|persistentvolumeclaim|label_.+_LABEL|id|name|device|major|minor|operation|cpu|failure_type|scope'
      action: labelkeep

(c) Prometheusの設定変更(Red Hat OpenShift)

■前提条件

  • cluster-adminロールを持つユーザーとしてクラスタにアクセスできる

  • OpentShift CLI(oc)がインストールされている

■手順

  1. ConfigMapオブジェクトが作成されているか確認する。

    $ oc -n openshift-monitoring get configmap cluster-monitoring-config
  2. ConfigMapオブジェクトが作成されていない場合,新規にファイルを作成する。

    $ vi cluster-monitoring-config.yaml
  3. ConfigMapオブジェクトが作成されている場合,openshift-monitoringプロジェクトでcluster-monitoring-configオブジェクトを編集する。

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  4. data/config.yaml/prometheusK8sに設定内容をキャメルケースで記載する。

    (記載例)

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          externalLabels:
            jp1_pc_prome_hostname: promHost
            jp1_pc_prome_clustername: myCluster
          remoteWrite:
          - url: http://JP1/IM - Manager(インテリジェント統合管理基盤)のホスト名:20703/im/api/v1/trendData/write
            writeRelabelConfigs:
            - sourceLabels: '[__name__]'
              regex: 'kube_job_status_failed|kube_job_owner|kube_pod_status_phase|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_current_number_scheduled|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_replicaset_spec_replicas|kube_replicaset_status_ready_replicas|kube_replicaset_owner|kube_statefulset_replicas|kube_statefulset_status_replicas_ready|kube_node_status_condition|container_cpu_usage_seconds_total|container_fs_reads_bytes_total|container_fs_writes_bytes_total|container_memory_working_set_bytes|container_spec_memory_limit_bytes|node_boot_time_seconds|node_context_switches_total|node_cpu_seconds_total|node_disk_io_now|node_disk_io_time_seconds_total|node_disk_read_bytes_total|node_disk_reads_completed_total|node_disk_writes_completed_total|node_disk_written_bytes_total|node_filesystem_avail_bytes|node_filesystem_files|node_filesystem_files_free|node_filesystem_free_bytes|node_filesystem_size_bytes|node_intr_total|node_load1|node_load15|node_load5|node_memory_Active_file_bytes|node_memory_Buffers_bytes|node_memory_Cached_bytes|node_memory_Inactive_file_bytes|node_memory_MemAvailable_bytes|node_memory_MemFree_bytes|node_memory_MemTotal_bytes|node_memory_SReclaimable_bytes|node_memory_SwapFree_bytes|node_memory_SwapTotal_bytes|node_netstat_Icmp6_InMsgs|node_netstat_Icmp_InMsgs|node_netstat_Icmp6_OutMsgs|node_netstat_Icmp_OutMsgs|node_netstat_Tcp_InSegs|node_netstat_Tcp_OutSegs|node_netstat_Udp_InDatagrams|node_netstat_Udp_OutDatagrams|node_network_flags|node_network_iface_link|node_network_mtu_bytes|node_network_receive_errs_total|node_network_receive_packets_total|node_network_transmit_colls_total|node_network_transmit_errs_total|node_network_transmit_packets_total|node_time_seconds|node_uname_info|node_vmstat_pswpin|node_vmstat_pswpout'
              action: keep
      - source_labels: ['__name__','namespace']
        regex: '(kube_pod_|kube_job_|container_).*;(.*)'
        target_label: jp1_pc_nodelabel
        replacement: $2
      - source_labels: ['__name__','node']
        regex: 'kube_node_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','daemonset']
        regex: 'kube_daemonset_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','deployment']
        regex: 'kube_deployment_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','replicaset']
        regex: 'kube_replicaset_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','statefulset']
        regex: 'kube_statefulset_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','owner_name']
        regex: 'kube_job_owner;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','instance']
        regex: 'node_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__']
        regex: 'kube_.*'
        target_label: jp1_pc_trendname
        replacement: kube_state_metrics
      - source_labels: ['__name__']
        regex: 'node_.*'
        target_label: jp1_pc_trendname
        replacement: node_exporter
      - source_labels: ['__name__']
        regex: 'container_.*'
        target_label: jp1_pc_trendname
        replacement: kubelet
      - source_labels: ['__name__']
        regex: 'kube_.*'
        target_label: jp1_pc_exporter
        replacement: JPC Kube state metrics
      - source_labels: ['__name__']
        regex: 'node_.*'
        target_label: jp1_pc_exporter
        replacement: JPC Node exporter
      - source_labels: ['__name__']
        regex: 'container_.*'
        target_label: jp1_pc_exporter
        replacement: JPC Kubelet
      - source_labels: ['__name__']
        regex: 'kube_.*'
        target_label: job
        replacement: jpc_kube_state
      - source_labels: ['__name__']
        regex: 'node_.*'
        target_label: job
        replacement: jpc_node
      - source_labels: ['__name__']
        regex: 'container_.*'
        target_label: job
        replacement: jp1_kubelet
  5. ファイルを保存して,変更内容をConfigMapオブジェクトに適用する。

    $ oc apply -f cluster-monitoring-config.yaml

(d) Prometheusの設定変更(Amazon Elastic Kubernetes Service(EKS))

■手順

  1. 任意の名前のymlファイル(例:my_prometheus_values.yml)を作成し,serverセクションに設定内容を記載する。

    • external_labelsの設定内容

      global.external_labelsセクションに記載します。

    • remote_writeの設定内容

      remoteWriteセクションに記載します。

    (記載例)

    server:
      global:
        external_labels:
          jp1_pc_prome_hostname: promHost
          jp1_pc_prome_clustername: myCluster
      remoteWrite:
        - url: http://JP1/IM - Manager(インテリジェント統合管理基盤)のホスト名:20703/im/api/v1/trendData/write
            write_relabel_configs:
            - sourceLabels: '[__name__]'
              regex: 'kube_job_status_failed|kube_job_owner|kube_pod_status_phase|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_current_number_scheduled|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_replicaset_spec_replicas|kube_replicaset_status_ready_replicas|kube_replicaset_owner|kube_statefulset_replicas|kube_statefulset_status_replicas_ready|kube_node_status_condition|container_cpu_usage_seconds_total|container_fs_reads_bytes_total|container_fs_writes_bytes_total|container_memory_working_set_bytes|container_spec_memory_limit_bytes|node_boot_time_seconds|node_context_switches_total|node_cpu_seconds_total|node_disk_io_now|node_disk_io_time_seconds_total|node_disk_read_bytes_total|node_disk_reads_completed_total|node_disk_writes_completed_total|node_disk_written_bytes_total|node_filesystem_avail_bytes|node_filesystem_files|node_filesystem_files_free|node_filesystem_free_bytes|node_filesystem_size_bytes|node_intr_total|node_load1|node_load15|node_load5|node_memory_Active_file_bytes|node_memory_Buffers_bytes|node_memory_Cached_bytes|node_memory_Inactive_file_bytes|node_memory_MemAvailable_bytes|node_memory_MemFree_bytes|node_memory_MemTotal_bytes|node_memory_SReclaimable_bytes|node_memory_SwapFree_bytes|node_memory_SwapTotal_bytes|node_netstat_Icmp6_InMsgs|node_netstat_Icmp_InMsgs|node_netstat_Icmp6_OutMsgs|node_netstat_Icmp_OutMsgs|node_netstat_Tcp_InSegs|node_netstat_Tcp_OutSegs|node_netstat_Udp_InDatagrams|node_netstat_Udp_OutDatagrams|node_network_flags|node_network_iface_link|node_network_mtu_bytes|node_network_receive_errs_total|node_network_receive_packets_total|node_network_transmit_colls_total|node_network_transmit_errs_total|node_network_transmit_packets_total|node_time_seconds|node_uname_info|node_vmstat_pswpin|node_vmstat_pswpout'
              action: keep
      - source_labels: ['__name__','namespace']
        regex: '(kube_pod_|kube_job_|container_).*;(.*)'
        target_label: jp1_pc_nodelabel
        replacement: $2
      - source_labels: ['__name__','node']
        regex: 'kube_node_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','daemonset']
        regex: 'kube_daemonset_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','deployment']
        regex: 'kube_deployment_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','replicaset']
        regex: 'kube_replicaset_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','statefulset']
        regex: 'kube_statefulset_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','owner_name']
        regex: 'kube_job_owner;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__','instance']
        regex: 'node_.*;(.*)'
        target_label: jp1_pc_nodelabel
      - source_labels: ['__name__']
        regex: 'kube_.*'
        target_label: jp1_pc_trendname
        replacement: kube_state_metrics
      - source_labels: ['__name__']
        regex: 'node_.*'
        target_label: jp1_pc_trendname
        replacement: node_exporter
      - source_labels: ['__name__']
        regex: 'container_.*'
        target_label: jp1_pc_trendname
        replacement: kubelet
      - source_labels: ['__name__']
        regex: 'kube_.*'
        target_label: jp1_pc_exporter
        replacement: JPC Kube state metrics
      - source_labels: ['__name__']
        regex: 'node_.*'
        target_label: jp1_pc_exporter
        replacement: JPC Node exporter
      - source_labels: ['__name__']
        regex: 'container_.*'
        target_label: jp1_pc_exporter
        replacement: JPC Kubelet
      - source_labels: ['__name__']
        regex: 'kube_.*'
        target_label: job
        replacement: jpc_kube_state
      - source_labels: ['__name__']
        regex: 'node_.*'
        target_label: job
        replacement: jpc_node
      - source_labels: ['__name__']
        regex: 'container_.*'
        target_label: job
        replacement: jp1_kubelet
  2. 変更内容を適用する。

    helm upgrade prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace -f  my_prometheus_values_yaml

(e) 取得対象の設定(オプション)

■監視対象の変更

ユーザー環境の監視対象の一部だけをJP1/IMで監視したい場合は,write_relabel_configsセクションに指定します。下記に指定例を示します。

(指定例1)特定のリソースのホワイトリストを指定

  - source_labels: ['__name__','pod']
    regex: '(kube_pod_|container_).*;coredns-.*|prometheus'
    action: 'keep'

(指定例2)すべてのリソースのブラックリストを指定

  - source_labels: ['jp1_pc_nodelabel']
    regex: 'coredns-.*|prometheus'
    action: 'drop'
また,すでに収集対象としているメトリックについて,異なる単位でも集約して監視を行いたい場合は,remote_writeセクションを追加し,監視したい単位での定義を行います。
■監視メトリクスの変更

統合オペレーション・ビューアーの[トレンド]タブに表示するメトリックを変更する場合は,メトリック定義ファイルを編集します。

対象となるメトリック定義ファイルを,次に示します。

  • Node exporterのメトリック定義ファイル(metrics_node_exporter.conf)

  • コンテナ監視のメトリック定義ファイル(metrics_kubernetes.conf)

各メトリック定義ファイルについては,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の該当するファイルを説明している個所を参照してください。

(f) システムノード定義ファイル(imdd_systemnode.conf)の設定(必須)

マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.1(1)IM管理ノードの作成(__configurationGetメソッド)」の「(e)ツリーの形式」に示すシステムノードを作成するときは,システムノード定義ファイル(imdd_systemnode.conf)を編集して,次の設定項目を指定します。ここに記載のない設定項目については,任意の値を指定します。

表10‒5 システムノード定義ファイル(imdd_systemnode.conf)の設定項目

設定項目

設定値

displayname

Kubernetesコンポーネントの名前を指定します。

type

次の文字列を大文字表記で指定します。

Kubernetes-Kubernetesコンポーネント名

Kubernetesコンポーネント名」は,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「12.5.2(2)(i)Kubernetes」で,Kubernetesの監視対象のコンポーネント名について説明している個所の「コンポーネント名」が該当します。

name

次の文字列を指定します。

[{".*":"regexp"}]

コンテナ監視のメトリック定義ファイルの初期設定で監視するKubernetesコンポーネントに対して,システム管理ノードを設定する場合の,システムノード定義ファイルの設定例を,次に示します。

表10‒6 システムノード定義ファイル(imdd_systemnode.conf)の設定例

設定項目

displayName

type

name

Clusters

JP1PC-KUBERNETES-CLUSTER

[{".*":"regexp"}]

Nodes

JP1PC-KUBERNETES-NODE

[{".*":"regexp"}]

Namespaces

JP1PC-KUBERNETES-NAMESPACE

[{".*":"regexp"}]

Deployments

JP1PC-KUBERNETES-DEPLOYMENT

[{".*":"regexp"}]

DaemonSets

JP1PC-KUBERNETES-DAEMONSET

[{".*":"regexp"}]

ReplicaSets

JP1PC-KUBERNETES-REPLICASET

[{".*":"regexp"}]

StatefulSets

JP1PC-KUBERNETES-STATEFULSET

[{".*":"regexp"}]

CronJobs

JP1PC-KUBERNETES-CRONJOB

[{".*":"regexp"}]

Pods

JP1PC-KUBERNETES-POD

[{".*":"regexp"}]

上記の内容と上位のKubernetesをシステムノード定義ファイルに設定した場合,次のようになります。

{
  "meta":{
    "version":"2"
  },
  "allSystem":[
    {
      "id":"kubernetes",
      "displayName":"Kubernetes",
      "children":[
        {
          "id":"cluster",
          "displayName":"Clusters",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-CLUSTER",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"namespace",
          "displayName":"Namespaces",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-NAMESPACE",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"node",
          "displayName":"Nodes",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-NODE",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"deployment",
          "displayName":"Deployments",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-DEPLOYMENT",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"daemonset",
          "displayName":"DaemonSets",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-DAEMONSET",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"replicaset",
          "displayName":"ReplicaSets",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-REPLICASET",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"statefulset",
          "displayName":"StatefulSets",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-STATEFULSET",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"cronjob",
          "displayName":"CronJobs",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-CRONJOB",
              "name":[{".*":"regexp"}]
            }
          ]
        },
        {
          "id":"pod",
          "displayName":"Pods",
          "objectRoot":[
            {
              "type":"JP1PC-KUBERNETES-POD",
              "name":[{".*":"regexp"}]
            }
          ]
        }
      ]
    }
  ]
}

システムノード定義ファイルを指定しておくと,jddcreatetreeコマンドが実行されたときに,Kubernetesコンポーネント名に応じたシステムノードの配下にIM管理ノードが表示されます。

システムノード定義ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)のJP1/IM - Managerの「システムノード定義ファイル(imdd_systemnode.conf)」を参照してください。

(8) Script exporterの定義ファイルの編集(オプション)

(a) 監視対象スクリプトの指定(必須)

■Script exporter設定ファイル(jpc_script_exporter.yml)の編集

Script exporter設定ファイル(jpc_script_exporter.yml)を編集して,監視対象スクリプトを定義します。

Script exporter設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Script exporter設定ファイル(jpc_script_exporter.yml)」を参照してください。

(b) 監視メトリックの変更(オプション)

■Prometheus設定ファイル(jpc_prometheus_server.yml)の編集

スクリプトから収集したメトリクスを追加する場合は,Prometheus設定ファイル(jpc_prometheus_server.yml)のmetric_relabel_configセクションに追加します。

Prometheus設定ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」(2. 定義ファイル)のJP1/IM - Agentの「Prometheus設定ファイル(jpc_prometheus_server.yml)」を参照してください。

scrape_configs:
  - job_name: jpc_script_exporter
     :
    metric_relabel_configs:
      - source_labels:['__name__']
        regex: 'script_success|script_duration_seconds|script_exit_code【ここにメトリクスを追加します】'
■Script exporterのメトリック定義ファイル(metrics_script_exporter.conf)の編集

統合オペレーション・ビューアーの[トレンド]タブに表示するメトリックを変更する場合は,Script exporterのメトリック定義ファイル(metrics_script_exporter.conf)の設定を変更します。

Script exporterのメトリック定義ファイルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「10. IMエクスポーターの定義ファイル」の「Script exporterのメトリック定義ファイル(metrics_script_exporter.conf)」を参照してください。

(9) JP1/IM - Managerでのログメトリクス定義のセットアップ(任意)

ログメトリクス機能を利用して,JP1/IM - Managerの統合オペレーション・ビューアーの[トレンド]タブで,ノードのトレンド情報を表示したときに,ログメトリクスの時系列データを表示したい場合は,JP1/IM - Managerで表示するログメトリクスの定義を行います。

ここでのログメトリクス定義には,ユーザー独自のメトリック定義を利用します。

(10) リッスンポート番号とリッスンアドレスの設定(オプション)

デフォルトのポート番号から変更しない,かつ,リッスンするIPアドレスを限定しない場合は,この手順の実施は不要です。

リッスンするポート番号やIPアドレスを変更する場合の変更個所などについては,マニュアル「JP1/Integrated Management 3 - Manager 運用ガイド」の「13.2 IMエクスポーターの構成変更」の,「13.2.2 Exporterのリッスンポートを変更する場合に必要な作業」および「13.2.3 ログメトリクス機能が使用するスクレイプのリッスンポートを変更する場合に必要な作業」を参照してください。

(11) Windows exporterによるプロセスの死活監視(オプション)

IMエクスポーターのアドオンプログラムを死活監視する場合の監視対象を,次に示します。

表10‒7 Windows exporterで監視するプロセス

サービス

監視するプロセス

監視対象名

jpc_script_exporter_service

Agentパス\bin\jpc_script_exporter_service.exe

監視対象名1:Script exporter

監視対象名2:script_exporter

jpc_promitor_scraper_service

Agentパス\bin\jpc_promitor_scraper_service.exe

監視対象名1:RM Promitor

監視対象名2:promitor_scraper

jpc_promitor_resource_discovery_service

Agentパス\bin\jpc_promitor_resource_discovery_service.exe

監視対象名1:RM Promitor

監視対象名2:promitor_resource_discovery

注※

Windowsサービス化プログラムを示します。

監視対象名1と監視対象名2を使用したアラート定義の例は,「1.21.2(9)(b) Windows exporterによるプロセスの死活監視」を参照してください。