目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / Performance Co-Pilot分析ツールキットを使用したパフォーマンスメトリックの分析

Performance Co-Pilot分析ツールキットを使用したパフォーマンスメトリックの分析

発行日: 06/03/2025
概要

パフォーマンス監視の目的のために、SUSE Linux Enterprise Microでは、コンテナ内でPerformance Co-Pilot (PCP)分析ツールキットを実行できるコンテナイメージを提供しています。

目的

システムのパフォーマンスを監視する必要があります。この記事では、ツールキットの設定および使用の方法を説明しています。

所要時間

この記事の理解には40分ほどを要します。

目標

ニーズに合った設定でPCPコンテナを起動できるようになります。

要件
  • SLE Microの実行中のインスタンス。

1 Performance Co-Pilot分析ツールキット

このツールキットは、リアルタイムで、またはPCPアーカイブログから収集されたパフォーマンス情報を収集および処理するためのツールで構成されます。

パフォーマンスデータは「パフォーマンスメトリックドメインエージェント」によって収集され、pmcdデーモンに渡されます。このデーモンは、PCP監視ツールからの要求に応じてパフォーマンス統計の収集とエクスポートを調整します。その後、pmloggerを使用してメトリックを記録します。詳細については、PCP documentationを参照してください。

1.1 PCPコンテナイメージの取得

PCPコンテナイメージは、systemdを利用してPCPサービスを管理するBCI-Initコンテナに基づきます。

このコンテナは、Podmanを使用して、またはCockpit Web管理コンソールからプルできます。Podmanを使用してイメージをプルするには、次のコマンドを実行します。

# podman pull registry.suse.com/suse/pcp:latest

Cockpitを使用してコンテナイメージを取得するには、Podman コンテナーに移動して、Get new image (新規イメージの取得)をクリックし、pcpを検索します。次に、registry.suse.comからSLE 15 SP4用のイメージを選択してダウンロードします。

2 PCPコンテナの実行

次のコマンドを実行すると、PCPコンテナを実行するために使用する必要がある最小限のオプションが表示されます。

# podman run -d  \
  --systemd always \
  -pHOST_IP:HOST_PORT:CONTAINER_PORT \
 -v HOST_DIR:/var/log/pcp/pmlogger \
  PCP_CONTAINER_IMAGE

各オプションには次のような意味があります。

-d

コンテナはttyなしでデタッチモードで実行されます。

--systemd always

コンテナをsystemdモードで実行します。PCPコンテナで実行するために必要なすべてのサービスは、systemdによってコンテナ内で自動的に開始されます。

--privileged

コンテナは拡張特権で実行されます。このオプションは、システムでSELinuxが有効になっている場合に使用します。有効になっていない場合、収集されるメトリックは不完全なものになります。

-v HOST_DIR:/var/log/pcp/pmlogger

バインドマウントを作成し、pmloggerのアーカイブがホスト上のHOST_DIRに書き込まれるようにします。デフォルトでは、pmloggerは収集したメトリックを/var/log/pcp/pmloggerに保存します。

PCP_CONTAINER_IMAGE

ダウンロードしたPCPコンテナイメージです。

podman runコマンドのその他の便利なオプションは次のとおりです。

その他のオプション
-p HOST_IP:HOST_PORT:CONTAINER_PORT

コンテナのポートをホストのポートにマップすることで、コンテナのポートを公開します。HOST_IPを指定しない場合、ポートはローカルホストにマップされます。HOST_PORTの値を省略すると、ランダムなポート番号が使用されます。デフォルトでは、pmcdデーモンはPMAPIをリスンして公開し、ポート44321でメトリックを受信します。したがって、このポートをホスト上の同じポート番号にマップすることをお勧めします。pmproxyデーモンは、デフォルトではREST PMWEBAPIをリスンして公開し、44322ポートでメトリックにアクセスします。したがって、このポートを同じホストポート番号にマップすることをお勧めします。

--net host

コンテナはホストのネットワークを使用します。このオプションは、ホストのネットワークインタフェースからメトリックを収集する場合に使用します。

-e

このオプションにより、次の環境変数を設定できます。

PCP_SERVICES

systemdがコンテナ内で起動するサービスのコンマ区切りリストです。

デフォルトのサービスは、pmcdpmiepmloggerpmproxyです。

この変数を使用すると、デフォルトとは異なるサービスのリストでコンテナを実行できます。たとえば、pmloggerのみでコンテナを実行できます。

# podman run -d \
  --name pmlogger \
  --systemd always \
  -e PCP_SERVICES=pmlogger  \
  -v pcp-archives:/var/log/pcp/pmlogger  \
  registry.suse.com/suse/pcp:latest
HOST_MOUNT

ホストのルートファイルシステムのバインドマウントを指す、コンテナ内でのパスです。デフォルト値は設定されていません。

REDIS_SERVERS

Redisサーバへの接続を指定します。非クラスタ化セットアップでは、ホストの仕様のコンマ区切りリストを指定します。クラスタ化セットアップでは、個々のクラスタホストを指定します。クラスタ内の他のホストは自動的に検出されます。デフォルト値はlocalhost:6379です。

環境変数で指定した設定とは異なる設定を使用する必要がある場合は、3項 「PCPサービスの設定」の手順に従います。

2.1 ブート時のPCPコンテナの自動起動

PCPコンテナを実行した後に、ブート時にコンテナを起動するようにsystemdを設定できます。これを行うには、次の手順に従います。

  1. podman generate systemdコマンドを使用して、コンテナのユニットファイルを作成します。

    # podman generate systemd --nameCONTAINER_NAME > /etc/systemd/system/container-CONTAINER_NAME.service

    ここで、CONTAINER_NAMEは、コンテナをコンテナイメージから実行するときに使用したPCPコンテナの名前です。

  2. systemdでサービスを有効化します。

    # systemctl enable container-CONTAINER_NAME

3 PCPサービスの設定

PCPコンテナ内で実行されるすべてのサービスにはデフォルト設定がありますが、その設定がニーズに合わない場合があります。環境変数で対応できないカスタム設定が必要な場合は、PCPサービス用の設定ファイルを作成して、次のようにバインドマウントを使用してPCPに渡します。

# podman run -d \
  --nameCONTAINER_NAME \
 --systemd always \
 -v $HOST_CONFIG:CONTAINER_CONFIG_PATH:z \
  -v HOST_LOGS_PATH:/var/log/pcp/pmlogger  \
  registry.suse.com/suse/pcp:latest

各要素の内容は次のとおりです。

CONTAINER_NAME

オプションのコンテナ名です。

HOST_CONFIG

ホストマシン上で作成した設定への絶対パスです。希望するファイル名を選択できます。

CONTAINER_CONFIG_PATH

コンテナ内の特定の設定ファイルの絶対パスです。利用可能な各設定ファイルについては、対応するセクションで詳しく説明します。

HOST_LOGS_PATH

コンテナログへのバインドマウントにするディレクトリです。

たとえば、pcpというコンテナがあり、設定ファイルpmcdがホストマシン上にあり、ログ用のpcp-archivesディレクトリもホストマシン上にある場合、次のコマンドでコンテナを実行します。

# podman run -d \
  --name pcp  \
  --systemd always \
  -v $(pwd)/pcp-archives:/var/log/pcp/pmlogger \
  -v $(pwd)/pmcd:/etc/sysconfig/pmcd \
registry.suse.com/suse/pcp:latest

3.1 pmcdデーモンのカスタム設定

pmcdデーモンの設定は、/etc/sysconfig/pmcdファイルに保存されます。このファイルには、pmcdデーモンの動作を変更する環境変数が保存されます。

次の変数を/etc/sysconfig/pmcdファイルに追加して、pmcdデーモンを設定できます。

PMCD_LOCAL

リモートホストをpmcdデーモンに接続できるかどうかを定義します。0に設定すると、デーモンへのリモート接続が許可されます。1に設定すると、デーモンはローカルホストのみをリスンします。デフォルトの設定は0です。

PMCD_MAXPENDING

エージェントへの保留中の接続の最大数を定義します。デフォルトの設定は5です。

PMCD_ROOT_AGENT

pmdarootが有効な場合(値が1に設定されている場合)、新しいPDMAを追加しても他のPMDAの再起動はトリガされません。pmdarootが有効ではない場合、新しいPMDAの追加時に、pmcdはすべてのPMDAを再起動する必要があります。デフォルトの設定は1です。

PMCD_RESTART_AGENTS

1に設定した場合、pmcdデーモンは終了したPMDAの再起動を試みます。pmcd自体にはPMDAを再起動する特権がないため、このオプションは、pmdarootを有効にしている場合にのみ有効にします。

PMCD_WAIT_TIMEOUT

pmcdが接続を受け入れるまでに待機可能な最大時間(秒単位)を定義します。この時間を超えると、接続は失敗として報告されます。デフォルトの設定は60です。

PCP_NSS_INIT_MODE

セキュリティ保護された接続を使用する場合にpmcdがNSS証明書データベースを初期化するモードを定義します。デフォルトの設定はreadonlyです。このモードをreadwriteに設定することはできますが、初期化に失敗した場合、デフォルト値がフォールバックとして使用されます。

次に例を示します。

PMCD_LOCAL=0
      PMCD_MAXPENDING=5
      PMCD_ROOT_AGENT=1
      PMCD_RESTART_AGENTS=1
      PMCD_WAIT_TIMEOUT=70
      PCP_NSS_INIT_MODE=readwrite

3.2 pmloggerのカスタム設定

pmloggerのカスタム設定は、次の設定ファイルに保存されます。

  • /etc/sysconfig/pmlogger

  • /etc/pcp/pmlogger/control.d/local

3.2.1 /etc/sysconfig/pmloggerファイル

次の属性を使用して、pmloggerを設定できます。

PMLOGGER_LOCAL

pmloggerがリモートホストからの接続を許可するかどうかを定義します。1に設定すると、pmloggerはローカルホストからの接続のみを許可します。

PMLOGGER_MAXPENDING

保留中の接続の最大数を定義します。デフォルト値は5です。

PMLOGGER_INTERVAL

pmloggerで使用するデフォルトのサンプリング間隔を定義します。デフォルト値は60秒です。この値はpmloggerのコマンドラインで上書きできることに注意してください。

PMLOGGER_CHECK_SKIP_LOGCONF

このオプションをyesに設定すると、pmloggerの設定をpmlogconfから取得する場合に、pmloggerの設定の再生成とチェックが無効になります。デフォルトの動作では、pmloggerの起動時に毎回、設定ファイルを再生成して変更の有無を確認します。

次に例を示します。

PMLOGGER_LOCAL=1
PMLOGGER_MAXPENDING=5
PMLOGGER_INTERVAL=10
PMLOGGER_CHECK_SKIP_LOGCONF=yes

3.2.2 /etc/pcp/pmlogger/control.d/localファイル

/etc/pcp/pmlogger/control.d/localファイルには、ホストの仕様、ログに記録する必要があるメトリック、ログの頻度(デフォルトは24時間)、およびpmloggerのオプションが保存されます。次に例を示します。

# === VARIABLE ASSIGNMENTS ===
#
# DO NOT REMOVE OR EDIT THE FOLLOWING LINE
$version=1.1

# Uncomment one of the lines below to enable/disable compression behaviour
# that is different to the pmlogger_daily default.
# Value is days before compressing archives, 0 is immediate compression,
# "never" or "forever" suppresses compression.
#
#$PCP_COMPRESSAFTER=0
#$PCP_COMPRESSAFTER=3
#$PCP_COMPRESSAFTER=never

# === LOGGER CONTROL SPECIFICATIONS ===
#
#Host           P?  S?  directory                       args

# local primary logger
LOCALHOSTNAME   y   n   PCP_ARCHIVE_DIR/LOCALHOSTNAME   -r -T24h10m -c config.default -v 100Mb
注記
注記: デフォルト値はローカルホストを指している

pmcdを実行するマシン(クライアント)とは異なるマシン上でpmloggerをコンテナ内で実行する場合、次の行を、クライアントを指すように変更します。

# local primary logger
CLIENT_HOSTNAME   y   n   PCP_ARCHIVE_DIR/CLIENT_HOSTNAME   -r -T24h10m -c config.default -v 100Mb

たとえば、slemicro_1というホスト名の場合、この行は次のようになります。

# local primary logger
slemicro_1   y   n   PCP_ARCHIVE_DIR/slemicro_1   -r -T24h10m -c config.default -v 100Mb

4 PCPのメトリックの管理

4.1 PCPのメトリックの一覧

コンテナ内から、コマンドpminfoを使用してメトリックを一覧にできます。たとえば、利用可能なすべてのパフォーマンスメトリックを一覧にするには、次のコマンドを実行します。

# pminfo

メトリックのプレフィクスを指定すると、関連するメトリックのグループを一覧にすることができます。

# pminfoMETRIC_PREFIX

たとえば、カーネルに関連するメトリックをすべて一覧にするには、次のコマンドを使用します。

# pminfo disk

disk.dev.r_await
disk.dm.await
disk.dm.r_await
disk.md.await
disk.md.r_await
...

追加の文字列を指定して、メトリックのリストを絞り込むこともできます。次に例を示します。

# piminfo disk.dev

disk.dev.read
disk.dev.write
disk.dev.total
disk.dev.blkread
disk.dev.blkwrite
disk.dev.blktotal
...

特定のメトリックのオンラインヘルプテキストを取得するには、-tオプションの後にそのメトリックを使用します。次に例を示します。

# pminfo -t kernel.cpu.util.user

kernel.cpu.util.user [percentage of user time across all CPUs, including guest CPU time]

特定のメトリックの説明テキストを表示するには、-Tオプションの後にそのメトリックを使用します。次に例を示します。

# pminfo -T kernel.cpu.util.user

Help:
percentage of user time across all CPUs, including guest CPU time

4.2 ローカルメトリックの確認

PCPコンテナを起動した後に、コンテナ内で次のコマンドを実行して、メトリックが適切に記録されることを確認できます。

# pcp

Performance Co-Pilot configuration on localhost:

 platform: Linux localhost 5.3.18-150300.59.68-default #1 SMP Wed May 4 11:29:09 UTC 2022 (ea30951) x86_64
 hardware: 1 cpu, 1 disk, 1 node, 1726MB RAM
 timezone: UTC
 services: pmcd pmproxy
     pmcd: Version 5.2.2-1, 9 agents, 4 clients
     pmda: root pmcd proc pmproxy xfs linux mmv kvm jbd2
 pmlogger: primary logger: /var/log/pcp/pmlogger/localhost/20220607.09.24
     pmie: primary engine: /var/log/pcp/pmie/localhost/pmie.log

次に、ログが適切な出力先に書き込まれているかどうかを確認します。

# lsPATH_TO_PMLOGGER_LOGS

この場合、PATH_TO_PMLOGGER_LOGS/var/log/pcp/pmlogger/localhost/である必要があります。

4.3 リモートシステムからのメトリックの記録

pmloggerコンテナが実行されているシステムとは異なるリモートシステムからメトリックを収集するコレクタコンテナを展開できます。リモートコレクタシステムごとに、pmcdデーモンと、pmdaのセットが必要です。集中監視システムで複数のコレクタを展開するには、次の手順に従います。

  1. メトリックの収集元の各システム(クライアント)で、pmcdデーモンを使用してコンテナを実行します。

    # podman run -d \
        --name pcp-pmcd \
        --privileged \
        --net host \
        --systemd always \
        -e PCP_SERVICES=pmcd \
        -e HOST_MOUNT=/host \
        -v /:/host:ro,rslave \
        registry.suse.com/suse/pcp:latest
  2. 監視システム上で、クライアントcontrol.CLIENTごとにpmlogger設定ファイルを次の内容で作成します。

    $version=1.1
    
    CLIENT_HOSTNAME n n PCP_ARCHIVE_DIR/CLIENT -N -r -T24h10m -c config.default -v 100Mb

    CLIENT_HOSTNAMEはDNSで解決可能である必要があることに注意してください。IPアドレス、または代わりに完全修飾ドメイン名(FQDN)を使用できます。

  3. 監視システム上で、クライアントごとに、記録されたログを保存するためのディレクトリを作成します。

    # mkdir /root/pcp-archives/CLIENT

    たとえば、slemicro_1の場合、次のようになります。

    # mkdir /root/pcp-archives/slemicro_1
  4. 監視システム上で、クライアントごとにpmloggerでコンテナを実行します。

    # podman run -d \
        --name pcp-pmlogger-CLIENT \
     --systemd always \
     -e PCP_SERVICES=pmlogger \
     -v /root/pcp-archives/CLIENT:/var/log/pcp/pmlogger:z \
        -v $(pwd)/control.CLIENT:/etc/pcp/pmlogger/control.d/local:z \
        registry.suse.com/suse/pcp:latest

    たとえば、slemicro_1というクライアントの場合、次のようになります。

    # podman run -d \
        --name pcp-pmlogger-slemicro_1 \
        --systemd always \
        -e PCP_SERVICES=pmlogger \
        -v /root/pcp-archives:/var/log/pcp/pmlogger:z \
        -v $(pwd)/control.slemicro_1:/etc/pcp/pmlogger/control.d/local:z \
        registry.suse.com/suse/pcp:latest
    注記
    注記

    2つ目のバインドマウントは、ステップ 2で作成した設定ファイルを指し、pmloggerのデフォルト設定を置き換えます。このバインドマウントを作成しない場合、pmloggerはデフォルトの/etc/pcp/pmlogger/control.d/localファイルを使用します。デフォルト設定はローカルホストを指しているため、クライアントからのログ記録は失敗します。設定ファイルの詳細については3.2.2項 「/etc/pcp/pmlogger/control.d/localファイル」を参照してください。

  5. ログ収集が正常に機能しているかどうかを確認するには、次のコマンドを実行します。

    # ls -l pcp-archives/CLIENT/CLIENT

    次に例を示します。

    # ls -l pcp-archives/slemicro_1/slemicro_1
    
    total 1076
    -rw-r--r--. 1 systemd-network systemd-network 876372 Jun  8 11:24 20220608.10.58.0
    -rw-r--r--. 1 systemd-network systemd-network    312 Jun  8 11:22 20220608.10.58.index
    -rw-r--r--. 1 systemd-network systemd-network 184486 Jun  8 10:58 20220608.10.58.meta
    -rw-r--r--. 1 systemd-network systemd-network    246 Jun  8 10:58 Latest
    -rw-r--r--. 1 systemd-network systemd-network  24595 Jun  8 10:58 pmlogger.log