Hitachi

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


1.22.1 コンテナイメージの作成

〈この項の構成〉

(1) ベースとするコンテナイメージの条件

Dockerイメージ,Podmanイメージのベースとするコンテナイメージの条件については,それぞれマニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「14.3.12(4)(b)コンテナイメージの前提条件」,「14.3.12(5)(b)コンテナイメージの前提条件」を参照してください。

(2) Dockerイメージ,Podmanイメージの作成方法

  1. イメージを作成するDockerホスト上またはPodmanホスト上に作業ディレクトリを作成する。

  2. 作業ディレクトリ下に,次のものを用意する。

    • Dockerfileファイル

    • JP1/IM - Agentのインストールパッケージ

    • supervisord定義ファイル(Supervisorを使用する場合を例として記載しています)

    • 起動スクリプト

    • credentialsファイル(Yet another cloudwatch exporterを使用する場合)

    • confディレクトリに配置するファイル

    ここでは,次のディレクトリ構成とします。

    JP1/IM - Agentの定義ファイルのうち,更新したいファイルをconfディレクトリに配置します。

    作業ディレクトリ/※1
    ├ Dockerfile※2
    ├ JP1IMA/※3
    │ └X64LIN/
    │   ├ h_inst
    │   ├ ppmanage
    │   ├ setup
    │   └ PCC842C/
    │     └ 9GDL/
    │       └・・・
    ├ supervisord.conf※4
    ├ start.sh※5
    ├ credentials※6
    └ conf/
       ├ jpc_imagentcommon.json.model※7
       ├ jpc_alerting_rules.yml.model※8
       ├ jpc_ya_cloudwatch_exporter.yml.model※9
       ├ jpc_blackbox_exporter.yml.model※10
       ├ jpc_file_sd_config_blackbox_http.yml.model※11
       ├ jpc_file_sd_config_blackbox_icmp.yml.model※12
       ├ jpc_process_exporter.yml※13
       ├ jpc_script_exporter.yml※14
       ├ promitor/※15
       │ ├ scraper/※16
       │ │├ runtime.yaml※17
       │ │└ metrics-declaration.yaml※18
       │ └ resource-discovery/※19
       │   ├ runtime.yaml※20
       │   └ resource-discovery-declaration.yaml※21
       └ user/
         └ cert/
           └ XXXX.crt※22

    注※1 手順1で作成した作業ディレクトリ

    注※2 Dockerfileファイル

    注※3 JP1/IM - Agentのインストールパッケージを展開したディレクトリおよびファイル

    注※4 supervisord定義ファイル

    注※5 起動スクリプト

    注※6 AWSクレデンシャルファイル(Yet another cloudwatch exporterを使用する場合)

    注※7 imagent共通設定ファイル

    注※8 アラート設定ファイル(アラート定義を行う場合)

    注※9 Yet another cloudwatch exporter設定ファイル

    注※10 Blackbox exporter設定ファイル

    注※11 Blackbox(HTTP/HTTPS監視)のディスカバリ設定ファイル

    注※12 Blackbox(ICMP監視)のディスカバリ設定ファイル

    注※13 Process exporter設定ファイル(設定を変更する場合)

    注※14 Script exporter設定ファイル(設定を変更する場合)

    注※15 Promitor定義ファイル格納ディレクトリ(設定を変更する場合)

    注※16 Promitor Scraper定義ファイル格納ディレクトリ(設定を変更する場合)

    注※17 Promitor Scraper設定ファイル(設定を変更する場合)

    注※18 Promitor Scraper runtime設定ファイル(設定を変更する場合)

    注※19 Promitor Resource Discovery定義ファイル格納ディレクトリ(設定を変更する場合)

    注※20 Promitor Resource Discovery設定ファイル(設定を変更する場合)

    注※21 PromitorResource Discovery runtime設定ファイル(設定を変更する場合)

    注※22 統合マネージャーホストに接続するためのCA証明書

    なお,サービスプリンシパル方式でAzureに接続する場合の構築手順は,次のとおりです。

    1. 「JP1/IM - Agentのコンテナ環境の構築」の構築手順のうち,「1.21.2(8) Promitorの設定」の「(b) Azureに接続するための認証情報の設定」の手順4以外を実施し,作業ディレクトリ下にファイルを作成します。

    2. コンテナを起動後,「1.21.2(8) Promitorの設定」の「(b) Azureに接続するための認証情報の設定」の手順4を実施します。

    3. Promitorのサービスを起動します。サービス管理については,「JP1/IM - Agentのコンテナ環境の構築」の説明を参照してください。

    ■定義ファイルに関する注意事項

    定義ファイルにIPアドレスを指定しないでください。また,証明書ファイルにIPアドレス情報を含めないでください。IPアドレス情報を含めた場合,動的にIPアドレスが変わるコンテナに対応できません。

    ■Dockerfileファイルの例

    下記の例にあるENVの行のように必要に応じてインストーラの環境変数を設定してください。

    FROM oraclelinux:8
     
    RUN mkdir /root/.aws
    COPY credentials /root/.aws/credentials
    COPY JP1IMA/X64LIN  /tmp/X64LIN
    COPY start.sh /opt/start.sh
    COPY supervisord.conf /opt/supervisord.conf
    RUN dnf install -y python3
    RUN pip3 install supervisor
    RUN dnf install -y cpio
    RUN chmod a+x /opt/start.sh
     
    ENV JP1IMAGENT_INSTALL_MODE "image"
    ENV JP1IMAGENT_IMMGR_HOST "接続先マネージャのホスト名を設定する"
    ENV JP1IMAGENT_IMMGR_INITIAL_SECRET "初期シークレットを設定する"
    ENV JP1IMAGENT_ADDON_BLACKBOX_EXPORTER_ACTIVE "yes"
    ENV JP1IMAGENT_ADDON_YA_CLOUDWATCH_EXPORTER_ACTIVE "yes"
    ENV JP1IMAGENT_ADDON_PROMITOR_ACTIVE "no"
    ENV JP1IMAGENT_ADDON_PROCESS_EXPORTER_ACTIVE "yes" 
    ENV JP1IMAGENT_ADDON_SCRIPT_EXPORTER_ACTIVE "no" 
     
    RUN /tmp/X64LIN/setup -f -k P-CC842C-9GDL /tmp/
    COPY conf  /opt/jp1ima/conf
     
    CMD [ "/bin/bash", "-c", "/opt/start.sh" ]
    注※

    "yes"の場合,コンテナ起動後に次のログが出力され,サービス起動に失敗した状態となります。認証情報を設定して再起動すると,正常に起動します。

    Validation failed: Azure authentication is not configured correctly - No identity secret was configured for service principle authentication

    ■supervisordのサービス定義ファイルの作成例

    [unix_http_server]
    file=/tmp/supervisor.sock   ; the path to the socket file
     
    [supervisord]
    logfile=/tmp/supervisord.log
    logfile_maxbytes=5MB
    logfile_backups=10 
    loglevel=info
    pidfile=/tmp/supervisord.pid
    nodaemon=true
     
    [program:imagent]
    command=/opt/jp1ima/bin/imagent
    directory=/opt/jp1ima/bin/
    stopasgroup=true
    autostart=true
    stopwaitsecs=180
     
    [program:imagentaction]
    command=/opt/jp1ima/bin/imagentaction
    directory=/opt/jp1ima/bin/
    stopasgroup=true
    autostart=true
    stopwaitsecs=180
     
    [program:imagentproxy]
    command=/opt/jp1ima/bin/imagentproxy
    directory=/opt/jp1ima/bin/
    stopasgroup=true
    autostart=true
    stopwaitsecs=180
     
    [program:prometheus]
    command=コマンドライン  ※1
    directory=/opt/jp1ima/bin  ※2
    autostart=true  ※3
    stopasgroup=true
    stopwaitsecs=180
     
    [program:alertmanager]
    command=コマンドライン  ※1
    directory=/opt/jp1ima/bin  ※2
    autostart=true  ※3
    stopasgroup=true
    stopwaitsecs=180
     
    [program:node_exporter]
    command=コマンドライン  ※1
    directory=/opt/jp1ima/bin  ※2
    autostart=true  ※3
    stopasgroup=true
    stopwaitsecs=180
     
    [program:process_exporter]
    command=コマンドライン  ※1
    directory=/opt/jp1ima/bin
    autostart=true
    stopwaitsecs=180
     
    [program:プログラム名]
    command=コマンドライン  ※1
    directory=/opt/jp1ima/bin  ※2
    autostart=true  ※3
    stopasgroup=true  ※4
    stopwaitsecs=180

    注 使用しないサービスについては記述不要です。

    注※1 コマンドラインには,物理ホストの/usr/lib/systemd/systemディレクトリに格納されているjpc_xxxxxxx.serviceに記載されているExecStartの値を使用します。

    注※2 サービス管理プログラムからJP1/IM - Agentプログラムを動かす際のカレントディレクトリは「/opt/jp1ima/bin」にします。

    注※3 自動起動を有効にします。

    注※4 stopasgroupをtrueにします。

    ■起動スクリプトの例

    #!/bin/bash
    /opt/jp1ima/tools/jimasetup container※1
    mv -f /opt/jp1ima/conf/jpc_file_sd_config_blackbox_http.yml \
    /opt/jp1ima/conf/jpc_file_sd_config_off※2
    mv -f /opt/jp1ima/conf/jpc_file_sd_config_blackbox_icmp.yml \
    /opt/jp1ima/conf/jpc_file_sd_config_off※2
    mv -f /opt/jp1ima/conf/jpc_file_sd_config_cloudwatch.yml \
    /opt/jp1ima/conf/jpc_file_sd_config_off※2
    mv -f /opt/jp1ima/conf/jpc_file_sd_config_process.yml \
    /opt/jp1ima/conf/jpc_file_sd_config_off※2
    mv -f /opt/jp1ima/conf/jpc_file_sd_config_promitor.yml \
    /opt/jp1ima/conf/jpc_file_sd_config_off※2
    exec /usr/local/bin/supervisord -c /opt/supervisord.conf※3

    注※1 JP1/IM - Agentの初期設定コマンドをcontainerオプション指定で実行します。

    注※2 次に示すサービスについて,使用しないサービスに対応するディスカバリ設定ファイルを,/opt/jp1ima/confディレクトリから/opt/jp1ima/conf/jpc_file_sd_config_offディレクトリに移動します。

    サービス

    ディスカバリ設定ファイル

    prometheus_server

    なし

    alertmanager

    なし

    windows_exporter

    jpc_file_sd_config_windows.yml

    blackbox_exporter

    • jpc_file_sd_config_blackbox_http.yml

    • jpc_file_sd_config_blackbox_icmp.yml

    ya_cloudwatch_exporter

    jpc_file_sd_config_cloudwatch.yml

    fluentd

    なし

    promitor

    jpc_file_sd_config_promitor.yml

    script_exporter

    なし

    注※3 サービス管理ツールを実行します。

    ■imagent共通設定ファイルの例

    imagent共通定義ファイルのモデルファイル(jpc_imagentcommon.json.model)の例は次のとおりです。

    TLSを使用する場合はca_fileにCA証明書のパスを設定します。TLSを使用しない場合はtls_configの項目を削除します。

    {
      "JP1_BIND_ADDR": "ANY",
      "COM_LISTEN_ALL_ADDR": 0,
      "COM_MAX_LISTEN_NUM": 4,
      "JP1_CLIENT_BIND_ADDR": "ANY",
      "http": {
        "max_content_length": 10,
        "client_timeout": 30
      },
      "immgr": {
        "host": "@@immgr.host@@",
        "proxy_url": "@@immgr.proxy_url@@",
        "proxy_user": "@@immgr.proxy_user@@",
        "tls_config": {
          "ca_file": "/opt/jp1ima/conf/user/cert/XXXX.crt",
          "insecure_skip_verify": false,
          "min_version": "TLSv1_2"
        },
        "imbase": {
          "port": @@immgr.imbase_port@@
        },
        "imbaseproxy": {
          "port": @@immgr.imbaseproxy_port@@
        }
      }
    }
  3. Dockerfileの存在するディレクトリに移動し,DockerビルドまたはPodmanビルドを起動する。

    • Dockerの場合

    # docker build -t Dockerイメージ名:タグ .
    • Podmanの場合

    # podman build -t Podmanイメージ名:タグ .

(3) Dockerコンテナ,Podmanコンテナの作成方法

  1. DockerコンテナまたはPodmanコンテナを起動する。

    • Dockerの場合

    # docker container run --ulimit nofile=65536:65536 --add-host=マネージャホスト名:IPアドレス -d -h コンテナにつけるホスト名 Dockerイメージ名:タグ
    • Podmanの場合

    # podman container run --ulimit nofile=65536:65536 --add-host=マネージャホスト名:IPアドレス -d -h コンテナにつけるホスト名 Podmanイメージ名:タグ
    重要

    コンテナのホスト名は,統合オペレーション・ビューアーのツリーに表示されます。-hオプションを省略すると,DockerやPodmanが自動的にホスト名を設定し,そのホスト名が統合オペレーション・ビューアーのツリーに表示されることになるため,ホスト名を指定することを推奨します。

  2. サービス管理ツールのログ,JP1/IM - Agentのログを確認し,正常に稼働していることを確認する。

    エラーが出力されている場合や稼働させたいプロセスが起動していない場合は,原因を特定して,DockerイメージまたはPodmanイメージを作り直します。

  3. IM管理ノードのツリー情報を更新する。

    詳細については,「1.21.2(16) IM管理ノードのツリー情報の作成と反映(Windowsの場合)(必須)」を参照してください。

(4) Dockerコンテナ,Podmanコンテナの削除方法

  1. DockerコンテナまたはPodmanコンテナを停止する。

    • Dockerの場合

    # docker container stop コンテナ名
    • Podmanの場合

    # podman container stop コンテナ名
  2. DockerコンテナまたはPodmanコンテナを削除する。

    • Dockerの場合

    # docker container rm コンテナ名
    • Podmanの場合

    # podman container rm コンテナ名
  3. IM管理ノードのツリー情報を更新する。

    詳細については,「1.21.2(16) IM管理ノードのツリー情報の作成と反映(Windowsの場合)(必須)」を参照してください。

(5) カーネルパラメーターへの影響について

ファイルディスクリプタ数の上限については,コンテナ起動時の--ulimitオプションに「65536」を指定します。

詳細については,「1.22.1(3) Dockerコンテナ,Podmanコンテナの作成方法」を参照してください。