InstanaPCP および Windows のパフォーマンスカウンター

Windows では、エージェントの起動時に「 InstanaPCP 」アプリケーションが自動的に起動します。 InstanaPCP アプリケーションは、以下の処理を実行します:

  • IIS がホストするアプリケーションの自動トレースの環境をセットアップします。
  • 実行中のプロセス (GC や CPU など) のメトリックを収集し、それらをエージェントに送信します。
  • Windows ホスト上で実行中のプロセスのリストをエージェントに送信します。
  • configuration.yaml ファイルに定義されているカスタム・パフォーマンス・カウンター・メトリックを収集します。

パフォーマンス・カウンター

Instana Windows ホストからプロセスとそのメトリクスを収集する2つの方法をサポートしています。

最初の方法(デフォルトの方法)

InstanaPCP の起動時、レジストリに値 2 が の設定 ProcessNameFormat が作成されます。 この設定により、以下のレジストリパスにおいて、プロセス名の形式 processname_processid が から processname に変更されます:

  1. HKLM:\SYSTEM\CurrentControlSet\Services\.NETFramework\Performance
  2. HKLM:\SYSTEM\CurrentControlSet\Services\PerfProc\Performance

2つ目の方法

この方法ではロジックを書き換えるため、プロセス名の形式を変更する必要はありません。 この方法を使用するには、ホストレベルで INSTANA_COLLECT_METRICS_BY_PROCESS_READING 環境変数を 1 または true に設定してください。 この方法では、プロセス名の形式を変更しないため、より柔軟性が高くなります。今後、これがデフォルトのオプションとなり、サポートされる唯一のオプションとなります。

カスタム・パフォーマンス・カウンター

Instana カスタムパフォーマンスカウンターの監視に対応しています。 デフォルトでは、カスタム・パフォーマンス・カウンターは無効になっています。 カスタム・パフォーマンス・カウンターを使用可能にするには、以下の例に示すように configuration.yaml ファイルを更新します。

com.instana.plugin.perfcounters:
  enabled: true
 

パフォーマンス・カウンターは、4 つの異なる値と名前で定義されます。 パフォーマンス・カウンターは、カテゴリー別にグループ化されています。 特定のインスタンスにバインドすることも、ホスト全体にバインドすることもできます。 カウンターを一意的に記述するには、以下の例のような構文を使用します。

[host]\[category]([instance])\[counter name]
 

カウンターによっては、 instance はオプションの場合があります。 以下のカウンターは例です。

\Processor Information(_Total)\% Processor Time
 

この例のカウンターの属性について、以下のリストで説明します。

  • host 空です。 カウンターは、現行ホスト (localhost) 用です。
  • category「プロセッサー情報」です。
  • instance_Totalです。
  • counter name「プロセッサー時間 (%)」です。

Instana カウンター localhost の照会のみをサポートしています。

一部のカテゴリーは host-wide; instance のみがこれらのカテゴリーに定義されていません。 以下の例は、ホスト全体のカテゴリーを示しています。

\System\Processor Queue Length
 

フラグを有効にした後、モニターするカウンターを定義します。 以下の例に示すように、構成を更新します。

com.instana.plugin.perfcounters:
  enabled: true
  counters:
    - category: [name of the counters category]
      instance: [instance name]
      counters:
        - [name of the counter]
 

以下の出力は、カウンターのサンプル値を示しています。

com.instana.plugin.perfcounters:
  enabled: true
  counters:
    - category: Processor Information
      instance: _Total
      counters:
        - "% Processor Time"
 
注: カウンター名は二重引用符 (") で囲みます。 特殊文字 %_ のための文字

カテゴリーごとにさらにカウンターが必要な場合は、以下の例に示すように、それらを counters 配列に追加します。

com.instana.plugin.perfcounters:
  enabled: true
  counters:
    - category: Memory
      counters:
        - Page Faults/sec
        - Cache Faults/sec
        - Page Reads/sec
 
注: この例では、Memory カテゴリはホスト全体に適用されるため、は instance 定義されていません。
注: パフォーマンスカウンターの照会は、本質的に負荷の高い操作です。 多数のカウンターがある場合は、エージェントのパフォーマンスに影響します。

以下の例は、複数のカテゴリーとカウンターを示しています。

com.instana.plugin.perfcounters:
  enabled: true
  counters:
    - category: System
      counters:
        - Processor Queue Length
        - System Calls/sec
    - category: Process
      instance: _Total
      counters:
        - Private bytes
        - Working Set
        - Thread Count
    - category: Memory
      counters:
        - Page Faults/sec
        - Cache Faults/sec
        - Page Reads/sec
    - category: .NET CLR Exceptions
      instance: _Global_
      counters:
        - "# of Exceps Thrown / sec"
        - "# of Pinned Objects"
 

以下の例は、パフォーマンス・カウンターを含むホスト・ダッシュボードを示しています。

図 1. パフォーマンス・カウンターのダッシュボードの例
パフォーマンス・カウンター・ダッシュボードの例

さらに支援が必要な場合は、サポート Case を開いてください。

トラブルシューティング

その他の問題が発生した場合は、 IBM サポートにお問い合わせください。

InstanaPCP が実行されていない

監視対象の種類: clr_instana_pcp_not_running

エージェントのログに「 InstanaPCP does not seem to be running 」という警告メッセージが表示される場合があります。 このメッセージは、エージェントが InstanaPCPとの対話に失敗した場合に表示されます。 エージェントは、ブートストラッピング・プロセスの早い段階で InstanaPCP を開始すると、 InstanaPCPと通信できるようになります。 以下のいずれかのエラーが発生した場合、エージェントはブートストラッピング・プロセスの早い段階で InstanaPCP を開始できません。

  • エージェントが十分な特権で実行されていません (ローカル・システムまたは管理者として実行されていません)。
  • ホスト上の.NET Framework 版はサポートされていません。 .NET Framework 4.5.1 およびそれ以降のバージョンがサポートされています。
  • メモリーの過剰使用が原因で、 InstanaPCP が再始動しました。

このメッセージが繰り返し表示される場合は、以下の確認を行ってください。

  1. エージェントを実行するユーザーにローカル管理特権があるかどうかを確認します。 ユーザーにローカル管理特権がない場合は、そのユーザーにローカル管理特権を付与するか、別のユーザー・アカウントを使用してください。 インストールパッケージから Instana エージェントをインストールすると、通常、サービスは「ローカル システム」として実行され、サービスに十分な権限が与えられます。

  2. お使いのマシンにインストールされている.NET Framework のバージョンを確認してください。 Windows のインストーラーパッケージは、 InstanaPCP に必要な.NET Framework の最小バージョンを自動的にインストールします。 ただし、ZIPアーカイブからホストエージェントをインストールする場合は、.NET Framework をインストールする必要がある場合があります。 お使いの.NET Framework が正しいバージョンかどうか不明な場合は、[こちら]( \system\com\instana\agent-windows-extensions<latest>\agent-windows-extensions--<latest> directoryhttps://www.microsoft.com/en-us/windows/windows-10/updates/updates-and-features) にアクセスし、コマンドラインから「 InstanaPCP 」をスタンドアロンセットアップとして手動で実行してください。 正しいバージョンの.NET Framework がインストールされていない場合、メッセージが表示されます。

  3. 以下のようにして、過剰消費に関連するメッセージがログに表示されているかどうかを確認します。

    InstanaPCP.exe Private-Bytes is above warning-treshhold for XXX times now
    
    Killing InstanaPCP.exe for excessive memory-usage. Possible memory-leak in native Windows-Libraries.
     

これらのメッセージは、以下のいずれかの問題が発生した場合に表示されます。

  • InstanaPCP が動作している Windows マシンでは、IISのバージョンが7より古く、メモリリークが発生しました。 このリークは、Microsoft 更新をインストールすることでパッチが適用される可能性があります。 この問題は、 Windows 2008 を搭載したマシンで発生する可能性があります。 この Microsoft 更新プログラムをインストールする前に、 IBM サポートに連絡し、お使いのマシンでメモリリークが発生していないか確認してください。 IBM サポートチームが、Microsoftパッケージを更新するためのリンクをご提供いたします。
  1. サーバー上では多数の.NET アプリケーションが実行されており、それらのアプリケーションから大量のトレースが生成されています。 エージェント configuration.yaml ファイルの以下の設定を変更して、 InstanaPCP のメモリ制限を引き上げてください:

    com.instana.plugin.clr:
      pcp_warn_limit: <MB-treshold before warning>
      pcp_stop_limit: <MB-treshold  to stop / restart the process>
     

InstanaPCP が接続されていない

監視対象の種類: clr_instana_pcp_not_connected

ホスト・エージェントが InstanaPCP プロセスに接続できないため、.NET プロセスのトレース・データおよびランタイム・メトリックの取得と処理ができません。

この問題は通常、一時的な障害であり、 InstanaPCP が初期化を完了した後、すぐに解決されます。 この問題が解決しない場合は、 IBM サポートにお問い合わせください。