Web アプリケーション自体に加えて、New Relic Ruby エージェント (バージョン 3.6.0 以降) は、 Sidekiq ジョブを自動的にインスツルメンテーションすることができます。 。ワーカーにインスツルメンテーションライブラリを含める必要はありません。
Rubyエージェントはすべての Sidekiq ワーカーに perform
メソッドを実装します。 トレース タイプとして Non-web transactions を選択すると、バックグラウンド ジョブのデータがAPMのTransactions ページに表示されます。トレースとエラーも表示されます。
ジョブ引数の取得
Rubyエージェントバージョン3.6.9以降、オプションで、トランザクショントレースおよびトレースされたエラーでSidekiqジョブ引数をキャプチャするようにRubyエージェントを構成できます。これは、失敗したジョブを再現しようとする場合に特に役立ちます。
ジョブ引数に機密情報が含まれている場合に備えて、この機能はデフォルトでオフになっています。 この機能を有効にするには、エージェントのバージョンに応じてnewrelic.ymlを編集します。
newrelic_rpm 3.12.0 or higher
:
attributes.include: job.sidekiq.args.*
newrelic_rpm 3.6.9 to 3.11.x
:
sidekiq.capture_params: true
ヒント
この機能は、HTTP リクエスト パラメータがトランザクション トレースでキャプチャされ、Web リクエストのエラーがトレースされるかどうかを制御する一般的な capture_params
最上位設定とは異なります。これら 2 つの設定は個別に構成できます。
特定のジョブ引数を含めるか除外する
Ruby エージェント バージョン 9.5.0 以降では、上記のように Sidekiq ジョブ引数をキャプチャするように設定されたエージェントのインスタンスは、New Relic に報告される引数をきめ細かく制御するために、特定の引数を含めたり除外したりするようにさらに設定できるようになりました。
:'sidekiq.args.include'
構成オプションは、集合的にホワイトリストとして機能する文字列の配列に設定できます。これらの各文字列は、正規表現を完全にサポートするために Regexp.new
に渡されます。ジョブ引数がハッシュである場合、ハッシュのキーがインクルード パターンのいずれかに一致する場合、キーとそれに対応する値の両方がインクルードされます。スカラー引数の場合、スカラーの文字列表現は、キャプチャされるインクルード パターンの 1 つと一致する必要があります。
:'sidekiq.args.exclude'
オプションも同様に機能します。パターンを作成するためにそれぞれが Regexp.new
に渡される文字列の配列に設定できます。これらのパターンは集合的に、不要なジョブ引数の拒否リストとして機能します。除外パターンに一致するハッシュキー、ハッシュ値、またはスカラーは除外されます (New Relic には送信されません)。
sidekiq.args.include
と sidekiq.args.exclude
を構成します (newrelic_rpm 9.5.0 以降)。
newrelic.yml
例:
:'sidekiq.args.include'
または :'sidekiq.args.exclude'
配列内の文字列は正規表現に変換されます。Ruby の正規表現サポート に関する知識は活用できますが、必須ではありません。正規表現構文が使用されない場合、不完全一致が実行され、文字列「Fortune」は「Fortune 500」と「Fortune and Glory」の両方に一致します。完全に一致するには、 正規表現アンカーを使用します。
# Include any argument whose string representation matches either "apple" or "banana"# The "apple" pattern will match both "green apple" and "red apple"sidekiq.args.include: - apple - banana
# Exclude any arguments that match either "grape", "orange", or "pear"sidekiq.args.exclude: - grape - orange - pear
# Exclude any argument that is a 9 digit numbersidekiq.args.exclude: - '\d{9}'
# Include anything that starts with "blue" but exclude anything that ends in "green"sidekiq.args.include - '^blue'
sidekiq.args.exclude - 'green$'
Sidekiqのトラブルシューティングの仕事
ジョブが監視されていないように見える場合は、ワーカーの起動時に生成されたnewrelic_agent.logファイルを確認してください。 エージェントが Sidekiq を検出し、サーバーと通信するかどうかを示す必要があります。 サポートが必要な場合は、Sidekiq を起動するために使用した正確なコマンドラインを書き留めてください。