New Relic Rubyエージェントは、PumaマスタープロセスからPumaのクラスタ全体のサーバー統計をサンプリングし、それらをRuby/Puma/*タイムスライスメトリクスとして報告できます。
この計装はデフォルトで無効になっています。
最低限の条件
要件 | 詳細 |
|---|---|
Rubyエージェントバージョン | 10.7.0以降 |
Pumaバージョン | 6.6.0以降 |
Pumaモード | シングルモード、または
が有効なクラスタモード。 |
計装を有効にする
Pumaの計装を有効にするには、newrelic.ymlでdisable_puma_instrumentationをfalseに設定します:
disable_puma_instrumentation: falseエージェントはPumaマスタープロセスから統計をサンプリングするため、エージェントがマスターにロードされている場所でのみメトリクスを収集します:
シングルモード(ワーカーなし): メトリクスは常に収集されます。
クラスターモード(1つ以上のワーカー): エージェントがワーカーではなくマスターにロードされるように、アプリケーションがプリロードされている場合にのみメトリクスが収集されます。
preload_app!をpuma.rbに追加します。workers 2preload_app!重要
Puma v6.xでは、
preload_app!を明示的に設定する必要があります。Puma v6.xは設定ブロックからpreload_appのデフォルトを適用しないため、workersが設定されていても明示的なpreload_app!がないクラスタ化されたアプリは、ワーカーにエージェントをロードし、Pumaメトリクスは収集されません。これが発生すると、エージェントは警告をログに記録します。
サンプルレートを調整する
デフォルトでは、エージェントは60秒ごとにPumaの統計をサンプリングします。これをnewrelic.ymlのpuma.sample_rate設定で変更します:
puma.sample_rate: 30キャプチャする内容
すべてのメトリクスはRuby/Puma/ネームスペースの下に記録されます。ワーカーごとの値はクラスタ全体で合計されます。
メトリック | 説明 |
|---|---|
| 利用可能なスレッドを待機しているrequestsの数。 |
| スレッドプール内で現在生成されているワーカースレッド数。 |
| 予備のリクエスト容量:アイドル状態のスレッドと、まだ生成されていないが
まで許可されているスレッドの合計。 |
| 設定されたスレッドの最大数。 |
| ワーカーが起動してから処理されたrequestsの累積数。 |
| Pumaワーカーの数。クラスターモードでのみ報告されます。 |
クエリの例
Metricタイプを使用して、NRQLでこれらのメトリクスをクエリします。YOUR_APP_NAMEをアプリケーション名に置き換えます。
すべてのPumaメトリクスを一度に表示するには:
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName LIKE 'Ruby/Puma/%'FACET metricTimesliceName TIMESERIES LIMIT MAX SINCE 1 hour ago単一のメトリクスを表示するには、その名前でフィルタリングします:
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName = 'Ruby/Puma/requests_count'TIMESERIES LIMIT MAX SINCE 1 hour ago使い方
有効にすると、エージェントはこれらのメトリクスを配信するためにPumaマスタープロセスでレポートスレッドを開始します。これにより、Pumaワーカーの接続と並行して、マスターで追加のエージェント接続が実行されます。
計装は、NewRelic::Agent.record_metricを介して整数のゲージとカウンターのみを記録します。リクエスト、クエリ、またはユーザーデータはキャプチャされません。