問題
New Relic のインフラストラクチャエージェントが CPU を大量に消費しています。
解決
New Relic のインフラストラクチャ エージェントは、CPU やメモリの消費を最小限に抑えながら、広範囲のシステム データをレポートするように設計されています。しかし、CPUの消費を抑える必要がある場合は、各種サンプラーやプラグインのサンプリング周波数を無効にしたり、減らしたりすることができます。
このトピックでは、CPU使用率を削減する可能性のあるいくつかのnewrelic-infra.yml
構成について説明します。
イベントサンプリングの削減
インフラストラクチャエージェントは、特定の頻度でいくつかの デフォルトイベントを報告します。オーバーヘッドを下げるには、サンプリング頻度を秒単位で減らすか、対応するプロパティ値を-1
に設定してサンプラーを完全に無効にすることができます。
重要
60秒以上のサンプルレートは、New Relicのユーザーインターフェイスのチャートにギャップが生じる可能性があるため、推奨しません。
以下の表は、設定するサンプラーの一覧です。
エージェントプラグインレポートの削減
インフラストラクチャエージェントには、インベントリデータ(特定のシステム構成や状態の情報)を収集するプラグインが組み込まれています。システムによっては、プラグインが多くのデータを収集している場合、CPU の消費量が比較的大きくなることがあります。フットプリントを減らすために、不要なデータを報告する特定のプラグインを無効にしたり、サンプリングの頻度を減らしたりすることができます。
Disable a single plugin: プラグインを無効にするには、対応するプロパティ値を-1
に設定します。
Disable all plugins: disable_all_plugins: true
Enable selected plugins: 特定のプラグインを有効にするには、 disable_all_plugins
に例外を挿入します。 たとえば、次の設定では、すべてのプラグインが無効になり、ネットワーク インターフェイスと SELinus プラグインが 120 秒ごとにレポートするように再度有効になります。
disable_all_plugins: true
network_interface_interval_sec: 120
selinux_interval_sec: 120
SELinuxプラグインは、 semodule -l
システムコマンドを定期的に呼び出して、既存のSELinuxモジュールに関する情報を取得します。ほとんどのCentOS/RedHatディストリビューションでは、このコマンドはCPU消費のピークを生成します。
この機能を無効にするには、 /etc/newrelic-infra.yml
ファイルに次の構成オプションを挿入します。
selinux_enable_semodule: false
Sysctl プラグインは、 /sys
ディレクトリ構造全体を調べ、そこにあるすべてのファイルから値を読み取ります。これを無効にするか間隔を短縮すると、インフラストラクチャ エージェントの CPU システム時間がいくらか減少する可能性があります。
インベントリの頻度を負の数に設定して無効にするか、 sysctl_interval_sec
構成値をプラグインの連続実行間の秒数に設定して頻度を減らすことができます。
例えば、10分に1回プラグインを実行するように。
Sysctlプラグインを無効にするには、次のようにします。
sysctl_interval_sec
プロパティの現在のデフォルト値は60
です。
以下のインベントリプラグインは、特にCPUを消費するものではありませんが、対応する設定オプションを設定することで、頻度を下げたり、無効にしたりすることができます。
Linux plugins
これらのLinuxプラグインの設定については、 Plugin variables を参照してください。
ホスト上の統合の見直し
インフラストラクチャのオンホスト統合機能を使用している場合は、CPU使用率に追加の影響が出ることがあります。影響の内容や調整方法は、使用している統合機能によって異なります。
ここでは、オン・ホスト・インテグレーションのCPU使用率を調整する方法をご紹介します。
- 統合 に調整可能な構成オプションがあるかどうかを確認してください。
- 可能であれば、インフラストラクチャエージェントを追加することで、監視の負荷を分散します。例えば、Kafkaの統合では、 マルチエージェントの展開が可能です 。