7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic のプロセス稼働データ最適化に関する3つのTips!

Last updated at Posted at 2024-11-26

インフラを監視する上で重要な項目の一つである「プロセス監視」。New Relicで監視した時にたくさんのプロセスに関する情報を取得して、データ量が増えてしまった経験はありませんか?
必要なプロセスは監視したいけど、データ量は最適化したい!
そんな時に検討する方法を3つご紹介したいと思います。

このアップデートの詳細はこちら。
New Relic アップデート(2024年9月)
New Relic アップデート

New Relicにおけるプロセス監視について

インフラストラクチャエージェントバージョン 1.12.0 以降が必要です。 2020 年 7 月 20 日より前に作成されたアカウント、および/または新しいガイド付きインストールを使用してインストールされたインフラストラクチャ エージェントでは、この変数がデフォルトで有効になっています。
もし無効になっている場合に送信設定を行うためにはenable_process_metricstrueにする必要があります。
有効化するとCPU 使用率、メモリ使用量、プロセス ID、および各プロセスに関するその他の関連詳細などのメトリックが、アクティブなプロセスを 20 秒ごとにデータをサンプリングし、それぞれを ProcessSample に格納します。
しかしOS上で起動しているプロセスが多い環境においては、取得するデータもその分増えるため想定よりも増えてしまい、プロセス監視を断念する = enable_process_metricsfalseにする判断をせざるを得ない可能性もあります。

プロセス監視はとても重要な監視項目の一つです。
この記事では、必要なデータを取り込みプロセス監視を継続していける要するベストプラクティスとなる3つの方法をご紹介したいと思います!

運用をより良くするための情報として、下記の記事も合わせてご参照ください。

事前準備

プロセス内のどのメトリクスが重要かを判断するのは運用される方ですが、以下のNRQLを使うことで、収集されている現在のプロセスを確認することが可能です。
設定を行う前に、自身の環境の確認にご活用ください。

(例1)Metricとして取り込んだ最新のプロセスCPU使用率の直近1時間の状況を、process.name毎に時系列で表示

SELECT latest(`host.process.cpuPercent`) FROM Metric FACET `process.name`  SINCE 1 HOURS AGO TIMESERIES

(例2)ProcessSampleに取り込んだプロセスCPU使用率の直近1時間の状況を、processDisplayName毎に時系列で表示

SELECT average(cpuPercent) FROM ProcessSample FACET processDisplayName SINCE 1 HOURS AGO TIMESERIES

またデフォルトでは、低メモリのプロセスはサンプリングの対象から除外されます。
もし今回対象となるプロセスが低メモリのプロセスの場合は、disable-zero-mem-process-filterを設定してから先に進めてください
※今回の例に使用している環境では設定していません

# デフォルトでは false になっているので true に変更する
disable_zero_mem_process_filter: true

設定の詳細はこちらのドキュメントも併せてご参照ください

1. Prosess collector の収集間隔の変更

まず現在のProsess collectorの収集間隔を確認します。
下記NRQLを実行したときに1分毎に3つのドットで表示されていれば、現在の間隔は20秒ということを意味します。

FROM ProcessSample SELECT average(cpuPercent) facet processDisplayName  TIMESERIES MAX since 5 minutes ago

デフォルトのnewrelic-infra.ymlの設定は下記のようになっています。

enable_process_metrics: true
status_server_enabled: true
status_server_port: 18003

以下のように設定することでサンプリング間隔を変更することは可能です。
最小値は20ですが、今回は例として60秒に設定します(-1に設定すると無効になります)

設定の詳細はこちらのドキュメントも併せてご参照ください

enable_process_metrics: true

# 下記を追加
metrics_process_sample_rate: 60

status_server_enabled: true
status_server_port: 18003

newrelic-infraプロセスを変更後にリロードすると、TIMESERIES MAX NRQLで1分ごとに1つのドットのみのデータが表示されます。

2. 不要なプロセスの除外設定(Black list方式)

New Relic Infrastructure エージェントの exclude_matching_metrics 設定を使用すると、一致するパターンに基づいて特定のメトリックを収集およびレポートから除外することが可能です。この機能は、関連するメトリックに焦点を当てて、New Relic に送信されるデータの量を管理および削減するのに特に役立ちます。

まずは現在の状況を確認します

FROM ProcessSample SELECT average(cpuPercent) facet processDisplayName since 5 minutes ago  

newrelic-infra.ymlに下記のように設定を追加します

enable_process_metrics: true
metrics_process_sample_rate: 60

# 下記を追加
exclude_matching_metrics:
  process.name:
    - regex "^amazon"    
    - "systemd-journald"

status_server_enabled: true
status_server_port: 18003

newrelic-infraプロセスを変更後にリロードすると、除外設定を行ったプロセスが表示されなくなります

設定の詳細はこちらのドキュメントも併せてご参照ください

3. 必要なプロセスのみ取得設定(White list方式)

逆にNew Relic Infrastructure エージェントの include_matching_metrics 設定を使用すると、一致するパターンに基づいて特定のメトリックのみ収集およびレポートすることが可能です。最も重要性の高いメトリックに焦点を絞り、New Relic に送信されるデータの量を削減できます。

まずは現在の状況を確認します

FROM ProcessSample SELECT average(cpuPercent) facet processDisplayName since 5 minutes ago  

newrelic-infra.ymlに下記のように設定を追加します

enable_process_metrics: true
metrics_process_sample_rate: 60
exclude_matching_metrics:
  process.name:
    - regex "^google"    
    - "systemd-journald"

# 下記を追加
include_matching_metrics:
  process.name:
    - "newrelic-infra"    
    - regex "^systemd"

status_server_enabled: true
status_server_port: 18003

newrelic-infraプロセスを変更後にリロードすると、含めるよう設定したプロセスのみ表示されるようになります。

この例のように、同じ項目に対して include_matching_metricsexclude_matching_metrics の両方が存在する場合、includeが優先されます。つまり、インフラストラクチャ エージェントは、「java」または「systemd」で始まる process.name からメトリックを収集または報告します。

設定の詳細はこちらのドキュメントも併せてご参照ください

注意点

インフラ エージェントは、 process.name や process.cmd などのディメンションをNew Relic上でのフィルターとして使用することのみをサポートしており、メトリック名で直接設定しフィルターすることはできません。

たとえば、以下の構成ではインフラ サービスの起動に失敗します。

  exclude_matching_metrics:
    - "host.process.threadCount"

まとめ

このようにNew Relic Infrastructure エージェントのオプションである metrics_process_sample_rateexclude_matching_metrics または include_matching_metrics 設定は、プロセス監視を行うために必要なデータの適切な収集間隔の調整、および特定のメトリックを収集およびレポートから除外/含めることができる強力な機能です。データ量を管理し、関連するメトリックに焦点を当て、特定のニーズを満たすためのデータ収集を効率的に行い、最適なプロセス監視の実現にお役立てください!!

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。

New Relic株式会社のAdvent Calendar 2024では、New Relicを使い始められたばかりの方、すでに熟達されているの方の活用Tips、アイディアまで、New Relicに関する知見を幅広く募集しています!

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?