2
1

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 使ってみた情報をシェアしよう! by New RelicAdvent Calendar 2023

Day 24

New Relic によるプロセス・サービスモニタリングの設定ポイント

Last updated at Posted at 2023-12-29

はじめに

New Relic でSeniorTechnicalSupportEngineerをしている九龍です。

New Relic ではInfrastructure Agentを利用してOSのプロセス情報
Windows Serviceの情報を収集することが出来ます。

これらの設定はデータ量が多いためデフォルトでは収集せず、明示的に設定を行ったりガイド付きインストールによって自動化する必要があります。

これらの設定には似たようなパラメーターやあまり認知されていないパラメーターもあるため、よく(社内で)問合せされるパラメーターについて解説をしたいと思います。

プロセスモニタリング設定

New Relic Infrastructure ではOSのリソース情報だけではなくプロセス毎のCPU,Memory、Storage、Networkの利用状況を簡単に収集することが出来ます。

この機能は以下の場合に動作するようになります。

  1. Infra Agentをガイド付きインストールでインストールした場合(自動的に下記の設定が追記されます。)
  2. enable_process_metrics を 手動でtrue設定した場合

これによってOS内部で動作している各種プロセス毎のリソース情報が収集されるようになります。

コマンドライン引数の収集

プロセスモニタリングは情報漏洩リスクを軽減するためデフォルトではコマンドライン引数の情報を収集しません。
データを分析する際にコマンドライン引数まで含めて識別する必要がある場合にはコマンドライン引数の削除を無効化する必要があります。

strip_command_linefalse設定することによって コマンドライン引数も収集されるようになります。

対象プロセスのフィルタリング

全てのプロセス情報を収集することによって自分たちが意図していないプロセスがリソースを浪費しているなどの問題に気づく事ができます。
適切な分析のためには全てのプロセス情報を収集することをおすすめします。

しかし、コスト制約などによって特定のプロセスの稼働状況だけを把握したい場合には指定したプロセスの情報だけを収集することも可能です。

include_matching_metrics Blockでプロセス名やコマンドライン引数を文字列もしくは正規表現で一致するプロセスの情報だけを収集するように指定する事ができます。

[Infrastructure Agent v1.57.0以降ではexclude_matching_metricsで除外設定も行えるようになりました。]

newrelic-infra.yml
include_matching_metrics: # You can combine attributes from different metrics
    process.name:
      - regex "^java"    # Include all processes starting with "java"
    process.executable:
      - "/usr/bin/python2"              # Include the Python 2.x executable
      - regex "\\System32\\svchost"     # Include all svchost executables

Memoryを消費していないプロセスの情報を収集する

New Relic Infrastructure では、プロセスを消費している≒システムに負荷をかけているプロセスを分析することに主眼を置いているため、リソースを消費していない(メモリ消費をしていない)プロセスの情報は収集されません。

待機系プロセスなどの死活監視のために、メモリを消費していないプロセスの情報を収集し続ける必要がある場合にはこのフィルタを無効化する必要があります。

disable_zero_mem_process_filtertrue設定すればメモリを消費していないプロセスの情報も収集されるようになります。

※これはゼロメモリのプロセスフィルターを設定をdisable(無効)にするをtrueにするという事です。
ドラクエ風に表現すると設定値が理解しやすいと思います。

ゼロメモリーのプロセスフィルターをdisabled(無効)にしますか?
・はい(True)
・いいえ(false)

Windows サービスのモニタリング

New Relic Infrastructure でWindows サービスの状態をモニタリングする場合にはWindows services integration を利用します。
これによって、Windows サービスの状態(実行中、停止中など)や開始モード(自動、手動)などの設定値を収集することが出来ます。
これらの値はMetric Sampleに収集されます。

動作していないサービスを検出するNRQLは以下のようになります。

SELECT count(*) FROM Metric WHERE metricName = 'windows_service_state' AND state != 'running' FACET hostname, service_name

Windows services integrationでは各種アプリケーションのサービス情報を収集します。
Windows OS 自体のサービス情報(Win32.*)は収集しません。
Windows OS 自体の内部サービスの情報も収集する必要がある場合はwinservices-config.yml で以下のようにWin32 サービスを含めるように設定します。

winservices-config.yml
integrations:
  - name: nri-winservices
    config:
      exporter_bind_address: 127.0.0.1  
      exporter_bind_port: 9182
      include_matching_entities:
        windowsService.name:
          - regex "win32.*"
          - "newrelic-infra"
      scrape_interval: 30s
    timeout: 60s

Inventoryに記録されるサービス

Infrastructure Agentにはwindows_services_refresh_sec というパラメータが存在します。
このパラメーターもWindowsのサービスの情報を収集しますがこのパラメータによって収集されたWindows サービス情報は上記のWindows services integration とは関連がありません。
windows_services_refresh_sec によって収集されたデータはInventoryとInfrastructureEventSampleに記録されます。
以下のように設定した場合にはInfrastructureEventおよびInventoryへのWindows サービス情報の登録が停止します。

windows_services_refresh_sec : -1

まとめ

プロセス情報・サービス情報を収集することによって、単なるサーバーリソースの監視では無く一体どのようなプロセス、サービスにリソースが消費されているのか本来目的としているサービスに利用されるべきサーバーリソースが想定外のプロセスに浪費されていないかなどを確認することが出来るようになります。
これにより、スケールアウトではなくスケールアップが適しているなどの適切なサービス構成を計画する事が出来るようになります。

New Relic Infrastructure Agentのパラメーターを適切に設定してよりよいInfrastructure オブザーバビリティを実現してください。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?