• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

XMLによるトランザクションの作成(.NET)

New Relic は サポートしているフレームワーク を自動的に計測します。しかし、一部のトランザクションが自動的に作成されていないフレームワークや、インスツルメンテーションしたいメソッドが追加されている場合もあります。 トランザクション を作成することで、これらのメソッドにカスタムインスツルメンテーション を追加することができます。XML で作成されたトランザクションは、 New Relic UI では非ウェブ として分類されます。

このドキュメントでは、XMLファイルを使用してトランザクションを作成する方法について説明します。また、以下のことができます。

IIS以外のアプリケーションを使用している場合、XMLインスツルメンテーションを行うには、 すべてをインスツルメンテーションする オプションを .NETエージェントのインストール時に有効にする必要があります

XMLによるトランザクションの作成

カスタム・トランザクション(自動的にインスツルメンテーションされないトランザクション)は、カスタム・インスツルメンテーションXMLファイルで定義されます。トランザクションの作成をトリガーするメソッドを定義します。また、トリガー・メソッドによって呼び出される追加のメソッドをインストゥルメントすることもできます。

カスタムトランザクションを作成する前に知っておくべき重要なルールがあります。

  • データベースや外部からの呼び出しは、自動的にインスツルメンテーションされるので、カスタムのインスツルメンテーションは必要ありません。
  • XML ファイルが正しいパスにあることを確認してください。計装セットを定義するために、.NETエージェントは、 Extensions ディレクトリにあるすべてのXMLファイルを読み込みます。
  • 計測しようとしたメソッドがすでに既存のトランザクションの一部である場合、そのトランザクションにセグメントとして追加されます。新しいトランザクションは作成されません。これは、親メソッドがカスタム・インスツルメンテーションを使用してインスツルメンテーションされている場合にも発生します。
  • アプリケーションが終了するまでこのメソッドは終了せず、データがNew Relicに送信されない可能性があるため、Main()のようなインストルメントは避けてください。

カスタムインストゥルメンテーションファイルを作成するには

  1. .NET Agentディレクトリ内の Extensions ディレクトリに新しい .xml ファイルを作成します。このディレクトリの場所は、お使いのOSによって異なります。

  2. このテンプレートを、作成したファイルにコピーします。このテンプレートでは、トランザクションとして2つの独立したクラスとメソッドを定義していますが、さらに追加することができます。

    <?xml version="1.0" encoding="utf-8"?>
    <extension xmlns="urn:newrelic-extension">
      <instrumentation>
        <!-- Define the method which triggers the creation of a transaction. -->
        <tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="Name">
          <match assemblyName="AssemblyName" className="NameSpace.ClassName">
            <exactMethodMatcher methodName="MethodName" />
          </match>
        </tracerFactory>
        <!-- Define the method which triggers the creation of a transaction. -->
        <tracerFactory name="NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" metricName="Name2">
          <match assemblyName="AssemblyName" className="NameSpace.ClassName2">
            <exactMethodMatcher methodName="MethodName2" />
          </match>
        </tracerFactory>
      </instrumentation>
    </extension>
  1. 作成したファイルで、属性値 Name, AssemblyName, NameSpace.ClassName, MethodName をカスタマイズします。これらの値は、トリガー・メソッドと、そのトリガー・メソッドから呼び出されるメソッドの両方に対してカスタマイズします。

    ヒント

    これらの値は、大文字と小文字を区別します。

    • Name: トランザクション名を定義します。metricName属性はオプションである。省略した場合、トランザクション名は NameSpace.ClassName/MethodName となります。トランザクション・カテゴリは"Custom" となります。その結果、完全なメトリック名は"OtherTransaction/Custom/Name となります。トランザクションのカテゴリーを"Custom" から変更したい場合は、 SetTransactionName api コールを使用します。New Relic UI では、 transaction type フィールド で、トランザクションをカテゴリごとにグループ化しています。
    • AssemblyName: トリガーメソッドを含むアセンブリです。
    • NameSpace.ClassName: トリガーメソッドを含む完全に修飾されたクラス名。
    • MethodName: トリガーとなるメソッドの正確な名前です。
  2. メソッドを追加するには、"NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory" 属性を含めて、トランザクションとして定義する必要があります。この属性を持たないタグは、 既存の トランザクションにのみ詳細を追加します。

  3. 任意です。 XML ファイルが正しくフォーマットされているかどうかを確認するには、任意の XSD バリデーターを使用して XSD(C:ProgramData\New Relic.NET Agent\Extensions\extension.xsd にあります)と照合します。

重要

トランザクション名の末尾に角括弧[suffix]を使わないでください。New Relicは名前から自動的に角括弧を除去します。代わりに、必要に応じて丸括弧(suffix)、またはその他の記号を使ってください。

トランザクションをUIで表示

カスタムトランザクションは、 methodName で指定されたメソッドが、 assemblyName で指定されたアセンブリで呼び出されたときに開始されます。トランザクションは、メソッドがリターンするか、例外をスローすると終了します。

これらのメトリクスは、 トランザクション ページトランザクショントレース で見ることができます。トランザクションを見るには one.newrelic.com > APM> (アプリを選択)> Monitor> Transactions> Type> (タイプを選択).タイプの定義は Category/Name .

custom_transactions.png

one.newrelic.com > APM> (select an app)> Monitoring> Transactions> Type> (selected type): Type メニューを使用して、カスタムトランザクションを表示します。

例楽器の3つのメソッド

この例では、トランザクションを作成する簡単な実装を紹介します。

例コンソールアプリのインストゥルメント化

このシンプルなコンソールアプリでは、トランザクションの作成を実演しています。このアプリケーションを数回実行すると、 Transactionsページ (at one.newrelic.com > APM> (select an app)> Transactions> Type)に作成したトランザクションが表示されます。 Dummy セグメントは、Transactions breakdown table とすべてのトランザクションのトレースに表示されます。

Copyright © 2022 New Relic Inc.