뉴렐릭의 .NET 에이전트에는 에이전트의 표준 기능을 확장할 수 있는 API 포함되어 있습니다. 예를 들어 .NET 에이전트 API를 사용하여 다음을 수행할 수 있습니다.
- 앱 이름 맞춤설정
- 사용자 정의 트랜잭션 매개변수 생성
- 맞춤 오류 및 측정항목 보고
구성 설정 을 조정하거나 사용자 지정 계측 을 사용하여 .NET 에이전트의 일부 기본 동작을 사용자 지정할 수도 있습니다.
요구 사항
.NET 에이전트 API를 사용하려면 최신 .NET 에이전트 릴리스가 있는지 확인하세요. 그런 다음 아래 두 가지 옵션 중 하나를 사용하여 프로젝트의 에이전트에 대한 참조를 추가하세요.
프로젝트에
NewRelic.Api.Agent.dll
에 대한 참조를 추가합니다.또는
NuGet 패키지 라이브러리 에서 API 패키지를 보고 다운로드합니다.
API 호출 목록
다음 목록에는 구문, 요구 사항, 기능 및 예를 포함하여 API를 사용하여 수행할 수 있는 다양한 호출이 포함되어 있습니다.
통사론
NewRelic.Api.Agent.NewRelic.DisableBrowserMonitoring([boolean $override])
특정 페이지에서 브라우저 모니터링 스니펫의 자동 삽입을 비활성화합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 트랜잭션 내에서 호출되어야 합니다.
설명
특정 페이지에서 펼쳐보기의 자동 내용을 비활성화하려면 이 호출을 추가하세요. 선택적 재정의를 추가하여 수동 및 자동 주입을 모두 비활성화할 수도 있습니다. 두 경우 모두 이 API 호출을 브라우저를 비활성화하려는 보기의 상단에 최대한 가깝게 배치하세요.
팁
페이지에 브라우저 스크립트를 GetBrowserTimingHeader()
****추가하는 비교하세요.
매개변수
매개변수 | 설명 |
---|---|
부울 | 선택 과목. |
예
자동 주입 비활성화
이 예에서는 스니펫의 자동 삽입만 비활성화합니다.
NewRelic.Api.Agent.NewRelic.DisableBrowserMonitoring();
자동 및 수동 주입 비활성화
이 예에서는 스니펫의 자동 및 수동 삽입을 모두 비활성화합니다.
NewRelic.Api.Agent.NewRelic.DisableBrowserMonitoring(true);
통사론
NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader();NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader(string nonce);
최종 사용자 브라우저를 계측하기 위해 브라우저 모니터링 HTML 스니펫을 생성합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 트랜잭션 내에서 호출되어야 합니다.
설명
활성화하는 데 사용되는 HTML 스니펫을 반환합니다. 스니펫은 브라우저에 작은 JavaScript 파일을 가져오고 페이지 타이머를 시작하도록 지시합니다. 그런 다음 반환된 스니펫을 HTML 웹페이지 헤더에 삽입할 수 있습니다. 자세한 내용은 브라우저 모니터링에 앱 추가를 참조하세요.
팁
페이지에서 브라우저 스크립트를 비활성화 하는 DisableBrowserMonitoring()
비교해 보세요.
매개변수
매개변수 | 설명 |
---|---|
끈 | 콘텐츠 보안 정책 정책에서 사용하는 요청별 암호화 임시값입니다. |
팁
이 API 호출에는 보안 허용 목록에 대한 업데이트가 필요합니다. CSP(콘텐츠 보안 정책) 고려 사항에 대한 자세한 내용은 브라우저 모니터링 호환성 및 요구 사항 페이지를 참조하세요.
반환 값
페이지 헤더에 포함할 HTML 문자열입니다.
예
<html><head> <%= NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader()%> ...</head><body>...
<html><head> <%= NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader("YOUR_NONCE_VALUE")%> ...</head><body>...
<!DOCTYPE html><html lang="en"><head> @Html.Raw(NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader()) ...</head><body>...
<!DOCTYPE html><html lang="en"><head> @Html.Raw(NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader("YOUR_NONCE_VALUE")) ...</head><body>...
중요
에이전트가 웹 어셈블리 코드를 계측할 수 없기 때문에 Blazor 웹 어셈블리에는 이 API가 지원되지 않습니다. 다음 예제는 Blazor Server 애플리케이션에만 해당됩니다. Blazor 웹 어셈블리 페이지에 브라우저 에이전트를 추가하려면 복사-붙여넣기 방법을 사용하세요.
중요
이 API는 .razor
페이지의 <HeadContent>
요소에 배치할 수 없습니다. 대신 _Layout.cshtml
또는 이에 상응하는 레이아웃 파일에서 호출해야 합니다.
<!DOCTYPE html><html lang="en"><head> @Html.Raw(NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader()) ...</head><body>...
<!DOCTYPE html><html lang="en"><head> @Html.Raw(NewRelic.Api.Agent.NewRelic.GetBrowserTimingHeader("YOUR_NONCE_VALUE")) ...</head><body>...
통사론
NewRelic.Api.Agent.NewRelic.GetLinkingMetadata();
추적 또는 엔터티를 연결하는 데 사용할 수 있는 키/값 쌍을 반환합니다.
요구 사항
- 에이전트 버전 8.19 이상.
- 모든 앱 유형과 호환됩니다.
설명
반환된 키/값 쌍의 사전에는 APM 제품에서 트레이스와 엔터티를 연결하는 데 사용되는 항목이 포함되어 있습니다. 의미 있는 값을 가진 항목만 포함됩니다. 때문에, 제외 추적이 비활성화된 경우 trace.id
(는) 포함되지 않습니다.
반환 값
Dictionary <string, string>()
반환된 항목에는 APM 제품의 추적 및 엔터티를 연결하는 데 사용되는 항목이 포함됩니다.
예
NewRelic.Api.Agent.IAgent Agent = NewRelic.Api.Agent.NewRelic.GetAgent();var linkingMetadata = Agent.GetLinkingMetadata();foreach (KeyValuePair<string, string> kvp in linkingMetadata){ Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);}
통사론
public interface IAgent
현재 실행 중인 트랜잭션과 같은 에이전트 아티팩트 및 메서드에 대한 액세스를 제공합니다.
요구 사항
- 에이전트 버전 8.9 이상.
- 모든 앱 유형과 호환됩니다.
설명
현재 실행 중인 트랜잭션과 같은 에이전트 아티팩트 및 메서드에 대한 액세스를 제공합니다. IAgent
에 대한 참조를 얻으려면 GetAgent
사용하십시오.
속성
이름 | 설명 |
---|---|
현재 트랜잭션 | ITransaction 인터페이스를 통해 현재 실행 중인 트랜잭션에 대한 액세스를 제공하는 속성입니다. 트랜잭션 내에서 호출되어야 합니다. |
현재 범위 | ISpan 인터페이스를 통해 현재 실행 중인 범위에 대한 액세스를 제공하는 속성입니다. |
예
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction transaction = agent.CurrentTransaction;
통사론
public interface ITransaction
New Relic API의 트랜잭션별 메서드에 대한 액세스를 제공합니다.
설명
뉴렐릭 .NET 에이전트 API 의 프로세서 관련 메서드에 대한 액세스를 제공합니다. ITransaction
에 대한 참조를 얻으려면 IAgent
에서 사용 가능한 현재 트랜잭션 메서드를 사용하세요.
다음 방법은 ITransaction
에서 사용할 수 있습니다.
이름 | 설명 |
---|---|
| 나가는 요청에 분산 추적 데이터를 추가합니다(자세한 내용은 아래 참조). |
| 다른 서비스에서 들어오는 분산 추적 데이터를 수락합니다(자세한 내용은 아래 참조). |
| 속성의 형식으로 귀하의 수염의 상황별 정보를 현재 소니에 추가합니다(자세한 내용은 아래 참조). |
| 현재 실행 중인 span 에 대한 액세스를 제공하며, 이를 통해 뉴렐릭 API 의 span 관련 메서드에 액세스할 수 있습니다(자세한 내용은 아래 참조). |
| 사용자 ID를 현재 소니에 연결합니다(자세한 내용은 아래 참조). |
| 지원되지 않는 데이터스토어를 사이트화할 수 있도록 허용합니다(자세한 내용은 아래 참조). |
통사론
void InsertDistributedTraceHeaders(carrier, setter)
다른 수신된 서비스에 대한 아웃바운드 메시지에 제외된 추적 데이터를 추가합니다.
설명
ITransaction.InsertDistributedTraceHeaders
W3C Trace Context 헤더와 뉴렐릭 통합 트레이스 헤더를 추가하여 전달된 캐리어 객체를 수정합니다. 뉴렐릭 헤더는 config에서 <distributedTracing excludeNewrelicHeader="true" />
사용하여 비활성화할 수 있습니다.
매개변수
이름 | 설명 |
---|---|
<티> | 필수의. 분산 추적 데이터가 삽입되는 키/값 쌍 저장소입니다. 이것은 호출 서비스에서 호출되는 서비스로 전달되는 모든 메시지 객체에 존재해야 하며, 사용되는 전송 수단에 따라 달라야 합니다. 예를 들어 Azure Service Bus 메시지의 경우 |
액션<T, 문자열, 문자열> | 필수의. 추적 데이터를 통신사에 삽입하기 위한 사용자 정의 작업입니다. 아래의 예를 보세요. |
사용 고려 사항
- 분산 추적을 활성화해야 합니다 .
- 이 API 기존 라이센스 컨텍스트 내에서만 사용할 수 있습니다.
예시
이 API의 사용법을 보여주기 위해 빌드하고 실행할 수 있는 전체 예제는 여기에서 찾을 수 있습니다.
// Get a reference to the agent, which lets you get a reference to the current transactionIAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction currentTransaction = agent.CurrentTransaction;
// In this example, we are using Azure Service Bus. The `ServiceBusMessage` type has an `ApplicationProperties` property for custom key/value pairs.
// Create the outbound messageServiceBusMessage message = new ("Hello, world!");
// Define the setter Action. The `ApplicationProperties` dictionary is the trace data carrier.var setter = new Action<ServiceBusMessage, string, string>((carrier, key, value) => { carrier.ApplicationProperties?.Set(key, value); });
// Call the API to add the distributed tracing data to the messagecurrentTransaction.InsertDistributedTraceHeaders(message, setter);
// Send the message
통사론
void AcceptDistributedTraceHeaders(carrier, getter, transportType)
다른 수신된 서비스의 인바운드 메시지에서 추출된 데이터를 수락합니다.
설명
ITransaction.AcceptDistributedTraceHeaders
InsertDistributedTraceHeaders
또는 다른 W3C Trace Context 호환 트레이서에서 생성된 페이로드를 허용하여 트레이서의 스팬을 연결하는 데 사용됩니다. 이 방법은 들어오는 요청에서 키/값 저장소를 허용하고 W3C Trace Context 데이터를 찾은 후, 찾을 수 없으면 뉴렐릭 분산 트레이스 데이터로 대체합니다.
매개변수
이름 | 설명 |
---|---|
<티> | 필수의. 호출 서비스에서 분산 추적 데이터를 삽입한 키/값 쌍 저장소입니다. 이것은 호출 서비스에서 호출되는 서비스로 전달되는 모든 메시지 객체에 존재해야 하며, 사용되는 전송 수단에 따라 달라야 합니다. 예를 들어 Azure Service Bus 메시지의 경우 |
Func<T, 문자열, IEnumerable<문자열>> | 필수의. 운송업체로부터 추적 데이터를 추출하는 사용자 정의 함수입니다. 아래의 예를 보세요. |
TransportType 열거형 | 필수의. 수신 페이로드의 전송을 설명합니다(예: |
사용 고려 사항
- 분산 추적을 활성화해야 합니다 .
- 이 API 기존 라이센스 컨텍스트 내에서만 사용할 수 있습니다.
AcceptDistributedTraceHeaders
이 트랜잭션에 대해InsertDistributedTraceHeaders
또는AcceptDistributedTraceHeaders
이(가) 이미 호출된 경우 무시됩니다.
예시
이 API의 사용을 보여주기 위해 빌드하고 실행할 수 있는 완전한 예제는 여기에서찾을 수 있습니다.
// Get a reference to the agent, which lets you get a reference to the current transactionIAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction currentTransaction = agent.CurrentTransaction;
// In this example, we are using Azure Service Bus. The `ServiceBusMessage` type has an `ApplicationProperties` property for custom key/value pairs.
// Recieve an incoming message. Assume that `receiver` is a previously-configured `ServiceBusReceiver`ServiceBusReceivedMessage message = await receiver.ReceiveMessageAsync();
// Define the getter Func. The `ApplicationProperties` dictionary is the trace data carrier.IEnumerable<string> Getter(IDictionary<string, object> carrier, string key){ var data = new List<string>(); if (carrier == null) { return data; } object value; if (applicationProperties.TryGetValue(key, out value)) { if (value != null) { data.Add(value.ToString()); } } return data;}
// Call the API to accept the distributed tracing data from the messagecurrentTransaction.AcceptDistributedTraceHeaders(message.ApplicationProperties, Getter, TransportType.Queue);
통사론
ITransaction AddCustomAttribute(string key, object value)
속성 형식으로 현재 트랜잭션에 애플리케이션에 대한 컨텍스트 정보를 추가합니다.
이 방법을 사용하려면 .NET 에이전트 버전 및 .NET 에이전트 API 버전 8.24.244.0 이상이 필요합니다. 더 이상 사용되지 않는 AddCustomParameter
을 대체했습니다.
매개변수
매개변수 | 설명 |
---|---|
끈 | 보고되는 정보를 식별합니다. 이름으로도 알려져 있습니다.
|
물체 | 보고되는 값입니다. 참고: |
.NET 유형 | 가치가 표현되는 방식 |
---|---|
| 적분 값으로. |
| 10진수 기반 숫자입니다. |
| 255바이트 이후에 잘린 문자열입니다. 빈 문자열이 지원됩니다. |
| 참 또는 거짓. |
| 표준 시간대 정보를 포함하여 ISO-8601 형식을 따르는 문자열 표현: 예시: |
| 초 수를 나타내는 10진수 기반 숫자입니다. |
다른 모든 것 |
|
보고
현재 트랜잭션에 대한 참조입니다.
사용 고려 사항
지원되는 데이터 유형에 대한 자세한 내용은 사용자 정의 속성을 참조하세요.
예시
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITransaction transaction = agent.CurrentTransaction;transaction.AddCustomAttribute("customerName","Bob Smith") .AddCustomAttribute("currentAge",31) .AddCustomAttribute("birthday", new DateTime(2000, 02, 14)) .AddCustomAttribute("waitTime", TimeSpan.FromMilliseconds(93842));
현재 실행 중인 범위 에 대한 액세스를 제공하여 뉴렐릭 API 내에서 범위별 메서드를 사용할 수 있도록 합니다.
예시
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent(); ITransaction transaction = agent.CurrentTransaction; ISpan currentSpan = transaction.CurrentSpan;
통사론
ITransaction SetUserId(string userId)
사용자 ID를 현재 트랜잭션과 연결합니다.
이 방법에는 .NET 에이전트 및 .NET 에이전트 API 버전 10.9.0 이상이 필요합니다.
매개변수
매개변수 | 설명 |
---|---|
끈 | 이 거래와 관련된 사용자 ID입니다.
|
예시
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent(); ITransaction transaction = agent.CurrentTransaction; transaction.SetUserId("BobSmith123");
통사론
SegmentWrapper? RecordDatastoreSegment(string vendor, string model, string operation, string? commandText = null, string? host = null, string? portPathOrID = null, string? databaseName = null)
.NET 에이전트가 지원되는 데이터 저장소와 동일한 방식으로 지원되지 않는 데이터 스토어를 자동으로 업로드할 수 있습니다.
이 방법을 사용하려면 .NET 에이전트와 .NET 에이전트 API 버전 10.22.0 이상이 필요합니다.
매개변수
매개변수 | 설명 |
---|---|
끈 | MySQL, MSSQL, MongoDB와 같은 데이터스토어 공급업체 이름입니다. |
끈 | 비관계형에서 테이블 이름 또는 이와 유사한 데이터스토어. |
끈 | SQL 데이터베이스의 "SELECT" 또는 "UPDATE"와 같은 수행되는 작업입니다. |
끈? | 선택 과목. 쿼리 또는 비관계형 데이터스토어의 유사한 설명자입니다. |
끈? | 선택 과목. 데이터스토어를 호스팅하는 서버입니다. |
끈? | 선택 과목. 데이터스토어를 식별하는 데 도움이 되도록 호스트와 쌍을 이루는 포트, 경로 또는 기타 제외. |
끈? | 선택 과목. 데이터스토어 이름 또는 이와 유사한 제외. |
보고
세그먼트를 자동으로 생성하고 종료하는 IDisposable 세그먼트 래퍼입니다.
예시
var transaction = NewRelic.Api.Agent.NewRelic.GetAgent().CurrentTransaction;using (transaction.RecordDatastoreSegment(vendor, model, operation, commandText, host, portPathOrID, databaseName)){ DatastoreWorker();}
통사론
Public interface ISpan
New Relic API의 범위별 메서드에 대한 액세스를 제공합니다.
설명
New Relic .NET 에이전트 API의 범위별 메서드에 대한 액세스를 제공합니다. ISpan
에 대한 참조를 얻으려면 다음을 사용하십시오.
IAgent
의CurrentSpan
속성(권장)ITransaction
의CurrentSpan
속성입니다.
이 섹션에는 ISpan
메서드에 대한 설명과 매개변수가 포함되어 있습니다.
이름 | 설명 |
---|---|
| 속성 형태로 애플리케이션의 컨텍스트 정보를 현재 span에 추가합니다(자세한 내용은 아래 참조). |
| 뉴렐릭으로 보고될 현재 스팬/세그먼트/메트릭의 이름을 변경합니다(자세한 내용은 아래 참조). |
속성 형식으로 현재 범위에 애플리케이션에 대한 컨텍스트 정보를 추가합니다.
이 방법을 사용하려면 .NET 에이전트 버전 및 .NET 에이전트 API 버전 8.25 이상이 필요합니다.
통사론
ISpan AddCustomAttribute(string key, object value)
매개변수
매개변수 | 설명 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
끈 | 보고되는 정보를 식별합니다. 이름으로도 알려져 있습니다.
| ||||||||||||||||
물체 | 보고되는 값입니다. 참고:
|
보고
현재 범위에 대한 참조입니다.
사용 고려 사항
지원되는 데이터 유형에 대한 자세한 내용은 사용자 정의 속성 가이드 를 참조하십시오.
예
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent(); ISpan currentSpan = agent.CurrentSpan;
currentSpan .AddCustomAttribute("customerName","Bob Smith") .AddCustomAttribute("currentAge",31) .AddCustomAttribute("birthday", new DateTime(2000, 02, 14)) .AddCustomAttribute("waitTime", TimeSpan.FromMilliseconds(93842));
New Relic에 보고될 현재 세그먼트/스팬의 이름을 변경합니다. 사용자 지정 계측으로 인한 세그먼트/스팬의 경우 New Relic에 보고된 메트릭 이름도 변경됩니다.
이 방법을 사용하려면 .NET 에이전트 버전 및 .NET 에이전트 API 버전 10.1.0이 필요합니다. 또는 더 높게.
통사론
ISpan SetName(string name)
매개변수
매개변수 | 설명 |
---|---|
끈 | 범위/세그먼트의 새 이름입니다. |
보고
현재 범위에 대한 참조입니다.
예
[Trace]public void MyTracedMethod(){ IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent(); ISpan currentSpan = agent.CurrentSpan;
currentSpan.SetName("MyCustomName");}
통사론
NewRelic.Api.Agent.NewRelic.IgnoreApdex()
Apdex를 계산할 때 현재 트랜잭션을 무시합니다.
요구 사항
모든 에이전트 버전과 호환됩니다.
설명
Apdex 점수 를 계산할 때 현재 트랜잭션을 무시합니다. 이는 Apdex 점수를 왜곡할 수 있는 매우 짧거나 매우 긴 트랜잭션(예: 파일 다운로드)이 있는 경우에 유용합니다.
예
NewRelic.Api.Agent.NewRelic.IgnoreApdex();
통사론
NewRelic.Api.Agent.NewRelic.IgnoreTransaction()
현재 트랜잭션을 계측하지 마십시오.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 트랜잭션 내에서 호출되어야 합니다.
설명
현재 트랜잭션을 무시합니다.
팁
사용자 정의 계측 XML 파일을 통해 트랜잭션을 무시할 수도 있습니다.
예
NewRelic.Api.Agent.NewRelic.IgnoreTransaction();
통사론
NewRelic.Api.Agent.NewRelic.IncrementCounter(string $metric_name)
맞춤 측정항목에 대한 카운터를 1씩 증가시킵니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 모든 앱 유형과 호환됩니다.
설명
사용자 정의 지표 의 카운터를 1씩 증가시킵니다. 이러한 사용자 정의 지표를 보려면 쿼리 빌더를 사용하여 지표를 검색하고 사용자 정의 가능한 차트를 만드세요. RecordMetric()
및 RecordResponseTimeMetric()
도 참조하세요.
중요
맞춤 측정항목을 만들 때 Custom/
로 이름을 시작합니다(예: Custom/MyMetric
). 이름 지정에 대한 자세한 내용은 사용자 정의 메트릭 수집 을 참조하십시오.
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수의. 증가시킬 메트릭의 이름입니다. |
예
NewRelic.Api.Agent.NewRelic.IncrementCounter("Custom/ExampleMetric");
과부하
오류를 확인하고 선택적 사용자 정의 속성과 함께 New Relic에 보고합니다.
NewRelic.Api.Agent.NewRelic.NoticeError(Exception $exception);NewRelic.Api.Agent.NewRelic.NoticeError(Exception $exception, IDictionary<TKey, TValue> $attributes);NewRelic.Api.Agent.NewRelic.NoticeError(string $error_message, IDictionary<TKey, TValue> $attributes);NewRelic.Api.Agent.NewRelic.NoticeError(string $error_message, IDictionary<TKey, TValue> $attributes, bool $is_expected);
요구 사항
이 API 호출은 다음과 호환됩니다.
- 모든 에이전트 버전
- 모든 앱 유형
설명
오류를 확인하고 선택적 사용자 지정 속성과 함께 New Relic에 보고합니다. 각 트랜잭션에 대해 에이전트는 NoticeError()
에 대한 첫 번째 호출의 예외 및 속성만 유지합니다. 실제 예외를 전달하거나 문자열을 전달하여 임의의 오류 메시지를 캡처할 수 있습니다.
이 메소드가 트랜잭션 내에서 호출되면 에이전트는 상위 트랜잭션 내에서 예외를 보고합니다. 프로세서 외부에서 호출되는 경우 에이전트는 오류 트레이스를 생성하고 뉴렐릭 UI 에서 오류를 NewRelic.Api.Agent.NoticeError
API 호출로 분류합니다. 트랜잭션 외부에서 호출되는 경우 NoticeError()
호출은 애플리케이션의 오류율에 영향을 미치지 않습니다.
에이전트는 트레이스 오류에만 속성을 추가합니다. 뉴렐릭으로는 보내지 않습니다. 자세한 내용은 AddCustomAttribute()
참조하세요.
이 API로 보고된 오류는 에이전트 구성에서 무시하도록 구성된 HTTP 상태 코드(예: 404
)를 초래하는 트랜잭션 내에서 보고될 때 여전히 New Relic으로 전송됩니다. 자세한 내용 은 APM의 오류 관리 에 대한 설명서를 참조하십시오.
이 호출을 사용하는 방법의 예를 보려면 아래 섹션을 검토하세요.
NewRelic.Api.Agent.NewRelic.NoticeError(Exception $exception)
매개변수 | 설명 |
---|---|
예외 | 필수의. 계측하려는 |
NewRelic.Api.Agent.NewRelic.NoticeError(Exception $exception, IDictionary<TKey, TValue> $attributes)
매개변수 | 설명 |
---|---|
예외 | 필수의. 계측하려는 |
IDictionary<TKey, TValue> | 오류 메시지에 주석을 달기 위해 속성의 키/값 쌍을 지정하십시오. |
NewRelic.Api.Agent.NewRelic.NoticeError(string $error_message, IDictionary<TKey, TValue> $attributes)
매개변수 | 설명 |
---|---|
끈 | 필수의. 예외인 것처럼 뉴렐릭에 보고할 문자열을 지정하세요. 이 메서드는 error 이벤트와 error Traces 를 모두 생성합니다. 오류 이벤트에는 처음 1023자만 유지되는 반면 errorTrace는 전체 메시지를 유지합니다. |
IDictionary<TKey, TValue> | 필수(null일 수 있음). 오류 메시지에 주석을 달기 위해 속성의 키/값 쌍을 지정하십시오. |
NewRelic.Api.Agent.NewRelic.NoticeError(string $error_message, IDictionary<TKey, TValue> $attributes, bool $is_expected)
매개변수 | 설명 |
---|---|
끈 | 필수의. 예외인 것처럼 뉴렐릭에 보고할 문자열을 지정하세요. 이 메서드는 error 이벤트와 error Traces 를 모두 생성합니다. 오류 이벤트에는 처음 1023자만 유지되는 반면 errorTrace는 전체 메시지를 유지합니다. |
IDictionary<TKey, TValue> | 필수(null일 수 있음). 오류 메시지에 주석을 달기 위해 속성의 키/값 쌍을 지정하십시오. |
부울 | Apdex 점수 및 오류율에 영향을 미치지 않도록 오류를 예상대로 표시합니다. |
예
사용자 정의 속성 없이 예외 전달
try{ string ImNotABool = "43"; bool.Parse(ImNotABool);}catch (Exception ex){ NewRelic.Api.Agent.NewRelic.NoticeError(ex);}
사용자 정의 속성으로 예외 전달
try{ string ImNotABool = "43"; bool.Parse(ImNotABool);}catch (Exception ex){ var errorAttributes = new Dictionary<string, string>() {{"foo", "bar"},{"baz", "luhr"}}; NewRelic.Api.Agent.NewRelic.NoticeError(ex, errorAttributes);}
사용자 정의 속성이 있는 오류 메시지 문자열 전달
try{ string ImNotABool = "43"; bool.Parse(ImNotABool);}catch (Exception ex){ var errorAttributes = new Dictionary<string, string>{{"foo", "bar"},{"baz", "luhr"}}; NewRelic.Api.Agent.NewRelic.NoticeError("String error message", errorAttributes);}
사용자 정의 속성 없이 오류 메시지 문자열 전달
try{ string ImNotABool = "43"; bool.Parse(ImNotABool);}catch (Exception ex){ NewRelic.Api.Agent.NewRelic.NoticeError("String error message", null);}
오류 메시지 문자열을 전달하고 예상대로 표시하십시오.
try{ string ImNotABool = "43"; bool.Parse(ImNotABool);}catch (Exception ex){ NewRelic.Api.Agent.NewRelic.NoticeError("String error message", null, true);}
통사론
NewRelic.Api.Agent.NewRelic.RecordCustomEvent(string eventType, IEnumerable<string, object> attributeValues)
주어진 이름과 속성으로 사용자 정의 이벤트를 기록합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 모든 앱 유형과 호환됩니다.
설명
쿼리 빌더 에서 쿼리할 수 있는 지정된 이름과 속성으로 사용자 지정 이벤트 를 기록합니다. 이벤트가 올바르게 기록되고 있는지 확인하려면대시보드 에서 데이터를 찾습니다.
중요
- 많은 이벤트를 보내면 에이전트의 메모리 오버헤드가 증가할 수 있습니다.
- 또한, 1MB(10^6바이트) 이상의 게시물은 최대 이벤트 수에 관계없이 기록되지 않습니다.
- 사용자 정의 대시보드는 64개의 속성으로 제한됩니다.
- 사용자 정의 속성 값이 처리되는 방법에 대한 자세한 내용은 사용자 정의 속성 가이드를 참조하십시오.
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수의. 기록할 이벤트 유형의 이름입니다. 255자를 초과하는 문자열을 사용하면 API 호출이 뉴렐릭으로 전송되지 않습니다. 이름에는 영숫자 문자, 밑줄 |
IEnumerable<string, object> | 필수의. 이벤트에 주석을 추가할 속성의 키/값 쌍을 지정하십시오. |
예
값을 기록 [#record-strings]
var eventAttributes = new Dictionary<string, object>() { {"foo", "bar"}, {"alice", "bob"}, {"age", 32}, {"height", 21.3f}};
NewRelic.Api.Agent.NewRelic.RecordCustomEvent("MyCustomEvent", eventAttributes);
통사론
NewRelic.Api.Agent.NewRelic.RecordMetric(string $metric_name, single $metric_value)
지정된 이름으로 사용자 지정 메트릭을 기록합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 모든 앱 유형과 호환됩니다.
설명
주어진 이름으로 사용자 정의 지표를 기록합니다. 이러한 사용자 정의 지표를 보려면 쿼리 빌더를 사용하여 지표를 검색하고 사용자 정의 가능한 차트를 만드세요. IncrementCounter()
및 RecordResponseTimeMetric()
도 참조하세요.
중요
맞춤 측정항목을 생성할 때 이름은 Custom/
으로 시작합니다(예: Custom/MyMetric
).
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수의. 기록할 측정항목의 이름입니다. 처음 255자만 유지됩니다. |
하나의 | 필수의. 메트릭에 대해 기록할 수량입니다. |
예
슬리핑 프로세스의 응답 시간 기록 [#record-stopwatch]
Stopwatch stopWatch = Stopwatch.StartNew();System.Threading.Thread.Sleep(5000);stopWatch.Stop();NewRelic.Api.Agent.NewRelic.RecordMetric("Custom/DEMO_Record_Metric", stopWatch.ElapsedMilliseconds);
통사론
NewRelic.Api.Agent.NewRelic.RecordResponseTimeMetric(string $metric_name, Int64 $metric_value)
지정된 이름과 응답 시간(밀리초)을 사용하여 사용자 지정 메트릭을 기록합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 모든 앱 유형과 호환됩니다.
설명
사용자 정의 지표 에 대한 응답 시간을 밀리초 단위로 기록합니다. 이러한 사용자 정의 지표를 보려면 쿼리 빌더를 사용하여 지표를 검색하고 사용자 정의 가능한 차트를 만드세요. IncrementCounter()
및 RecordMetric()
도 참조하세요.
중요
맞춤 측정항목을 생성할 때 이름은 Custom/
으로 시작합니다(예: Custom/MyMetric
).
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수의. 기록할 응답 시간 메트릭의 이름입니다. 처음 255자만 유지됩니다. |
Int64 | 필수의. 기록할 응답 시간(밀리초)입니다. |
예
슬리핑 프로세스의 응답 시간 기록 [#record-stopwatch]
Stopwatch stopWatch = Stopwatch.StartNew();System.Threading.Thread.Sleep(5000);stopWatch.Stop();NewRelic.Api.Agent.NewRelic.RecordResponseTimeMetric("Custom/DEMO_Record_Response_Time_Metric", stopWatch.ElapsedMilliseconds);
통사론
NewRelic.Api.Agent.NewRelic.SetApplicationName(string $name[, string $name_2, string $name_3])
데이터 롤업을 위한 앱 이름을 설정합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 모든 앱 유형과 호환됩니다.
설명
New Relic에 보고된 애플리케이션 이름을 설정합니다. 애플리케이션 이름 지정에 대한 자세한 내용은 .NET 애플리케이션 이름 지정을 참조하세요 . 이 메서드는 응용 프로그램을 시작하는 동안 한 번만 호출됩니다.
중요
앱 이름을 업데이트하면 에이전트가 강제로 다시 시작됩니다. 에이전트는 이전 앱 이름과 연결된 보고되지 않은 데이터를 삭제합니다. 관련 데이터 손실로 인해 애플리케이션의 수명 주기 동안 앱 이름을 여러 번 변경하는 것은 권장되지 않습니다.
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수의. 기본 애플리케이션 이름입니다. |
끈 | 선택 과목. 앱 롤업의 두 번째 및 세 번째 이름입니다. 자세한 내용 은 앱에 여러 이름 사용 을 참조하십시오. |
예
NewRelic.Api.Agent.NewRelic.SetApplicationName("AppName1", "AppName2");
통사론
NewRelic.Api.Agent.NewRelic.SetErrorGroupCallback(Func<IReadOnlyDictionary<string,object>, string> errorGroupCallback);
속성 데이터의 IReadOnlyDictionary<string,object>
를 사용하고 오류 그룹 이름을 반환하는 콜백 메서드를 제공합니다.
요구 사항
이 API 호출은 다음과 호환됩니다.
- 에이전트 버전 10.9.0 이상.
- 모든 앱 유형
설명
에이전트가 오류 이벤트 및 추적에 대한 오류 그룹 이름을 결정하는 데 사용할 콜백 메서드를 설정합니다. 이 이름은 오류 수신함에서 오류를 논리 그룹으로 그룹화하는 데 사용됩니다.
콜백 메서드는 IReadOnlyDictionary<string,object>
유형의 단일 인수를 수락하고 문자열(오류 그룹 이름)을 반환해야 합니다. IReadOnlyDictionary
은 사용자 정의 속성을 포함하여 각 오류 이벤트와 연관된 속성 데이터 의 모음입니다.
각 오류에 사용할 수 있는 속성의 정확한 목록은 다음에 따라 다릅니다.
- 오류를 생성한 애플리케이션 코드
- 에이전트 구성 설정
- 맞춤 속성이 추가되었는지 여부
그러나 다음 속성은 항상 존재해야 합니다.
error.class
error.message
stack_trace
transactionName
request.uri
error.expected
오류를 논리적 오류 그룹에 할당할 수 없는 경우 오류 그룹 이름에 대해 빈 문자열이 반환될 수 있습니다.
매개변수
매개변수 | 설명 |
---|---|
'Func<IReadOnlyDictionary<string,object>,string>' | 속성 데이터를 기반으로 오류 그룹 이름을 결정하는 콜백입니다. |
예
오류 클래스 이름별로 오류 그룹화:
Func<IReadOnlyDictionary<string, object>, string> errorGroupCallback = (attributes) => { string errorGroupName = string.Empty; if (attributes.TryGetValue("error.class", out var errorClass)) { if (errorClass.ToString() == "System.ArgumentOutOfRangeException" || errorClass.ToString() == "System.ArgumentNullException") { errorGroupName = "ArgumentErrors"; } else { errorGroupName = "OtherErrors"; } } return errorGroupName;};
NewRelic.Api.Agent.NewRelic.SetErrorGroupCallback(errorGroupCallback);
트랜잭션 이름별로 오류 그룹화:
Func<IReadOnlyDictionary<string, object>, string> errorGroupCallback = (attributes) => { string errorGroupName = string.Empty; if (attributes.TryGetValue("transactionName", out var transactionName)) { if (transactionName.ToString().IndexOf("WebTransaction/MVC/Home") != -1) { errorGroupName = "HomeControllerErrors"; } else { errorGroupName = "OtherControllerErrors"; } } return errorGroupName;};
NewRelic.Api.Agent.NewRelic.SetErrorGroupCallback(errorGroupCallback);
통사론
NewRelic.Api.Agent.NewRelic.SetTransactionName(string $category, string $name)
현재 트랜잭션의 이름을 설정합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 트랜잭션 내에서 호출되어야 합니다.
설명
현재 트랜잭션의 유형에 따라 초기 접두사(WebTransaction
또는 OtherTransaction
) 뒤에 추가될 사용자 지정 트랜잭션 이름을 설정합니다. 이 통화를 사용하기 전에 메트릭 그룹화 문제 의 의미를 이해했는지 확인하세요.
동일한 트랜잭션 내에서 이 호출을 여러 번 사용하면 각 호출이 이전 호출을 덮어쓰고 마지막 호출이 이름을 설정합니다.
중요
거래 이름 끝에 대괄호 [suffix]
를 사용하지 마십시오. New Relic은 자동으로 이름에서 괄호를 제거합니다. 대신 필요한 경우 괄호 (suffix)
또는 기타 기호를 사용하십시오.
고유값(예: URL, 페이지 제목, 16진수 값, 세션 ID 및 고유하게 식별 가능한 값)을 프로세서 이름 지정에 사용해서는 안 됩니다. 대신, AddCustomAttribute()
호출을 사용하여 해당 데이터를 사용자 지정 프로세서로 소니에 추가하세요.
중요
고유한 트랜잭션 이름을 1000개 이상 만들지 마십시오(예: 가능하면 URL로 이름을 지정하지 마십시오). 이렇게 하면 차트의 유용성이 떨어지고 계정당 고유한 거래 이름의 수에 대해 New Relic이 설정하는 제한에 부딪힐 수 있습니다. 또한 애플리케이션의 성능을 저하시킬 수 있습니다.
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수의. 다양한 유형의 프로세서를 구별하는 데 사용할 수 있는 이 프로세서의 범주입니다. 기본값은 |
끈 | 필수의. 트랜잭션의 이름입니다. 처음 255자만 유지됩니다. |
예
이 예제에서는 ASP..NET Core MVC 컨트롤러에서 이 API 를 사용하는 방법을 보여줍니다. A 프로세서는 ASP..NET Core용 에이전트에 의해 자동으로 생성됩니다. License 이름의 첫 번째 부분은 계속해서 WebTransaction
으로 유지됩니다.
public class HomeController : Controller{
public IActionResult Order(string product) {
// The commented-out API call below is probably a bad idea and will lead to a metric grouping issue (MGI) // because too many transaction names will be created. Don't do this. //NewRelic.Api.Agent.NewRelic.SetTransactionName("Other", $"ProductOrder-{product}");
// Do this instead if you want to record request-specific data about this MVC endpoint var tx = NewRelic.Api.Agent.NewRelic.GetAgent().CurrentTransaction; tx.AddCustomAttribute("productName", product);
// The default transaction name at this point will be: WebTransaction/MVC/Home/Order
// Set custom transaction name NewRelic.Api.Agent.NewRelic.SetTransactionName("Other", "OrderProduct");
// Transaction name is now: WebTransaction/Other/OrderProduct
return View(); }}
이 예제는 콘솔 애플리케이션에서 이 API를 사용하는 방법을 보여줍니다. 예제 메서드에 대한 소니를 생성하는 데 필요한 [Transaction]
사용자 권한 속성을 참고하세요. License 이름의 첫 번째 부분은 계속해서 OtherTransaction
로 유지됩니다.
using NewRelic.Api.Agent;
namespace SetApplicationNameConsoleExample{ internal class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!");
var start = DateTime.Now; while (DateTime.Now - start < TimeSpan.FromMinutes(2)) { DoSomething(); Thread.Sleep(TimeSpan.FromSeconds(5)); } }
[Transaction] // Attribute-based custom instrumentation to create a transaction for this method static void DoSomething() { Console.WriteLine("Doing something: " + Guid.NewGuid().ToString());
// Transaction name from default naming at this point is: OtherTransaction/Custom/SetApplicationNameConsoleExample.Program/DoSomething
NewRelic.Api.Agent.NewRelic.SetTransactionName("Console", "MyCustomTransactionName");
// Transaction name at this point is: OtherTransaction/Console/MyCustomTransactionName
// Note, however, that this transaction will still have a child segment (span) named "SetApplicationNameConsoleExample.Program.DoSomething" } }}
통사론
NewRelic.Api.Agent.NewRelic.SetTransactionUri(Uri $uri)
현재 트랜잭션의 URI를 설정합니다.
요구 사항
- 트랜잭션 내에서 호출되어야 합니다.
- 에이전트 버전 6.16 이상.
중요
이 방법은 Web
속성이 true
로 설정된 Transaction
속성을 사용하여 생성된 트랜잭션 내에서 사용될 때만 작동합니다. ( 속성을 통한 사용자 정의를 참조하세요.) 에이전트가 자동으로 지원하지 않는 사용자 정의 웹 기반 프레임워크에 대한 지원을 제공합니다.
설명
현재 프로세서의 URI를 설정합니다. URI는 프로세서 트레이스 및 프로세서 이벤트 의 request.uri
속성에 나타나며, 프로세서 이름 지정에도 영향을 미칠 수 있습니다.
동일한 트랜잭션 내에서 이 호출을 여러 번 사용하면 각 호출이 이전 호출을 덮어씁니다. 마지막 호출은 URI를 설정합니다.
참고 : 에이전트 버전 8.18부터 request.uri
속성의 값은 API에 전달된 System.Uri
객체의 Uri.AbsolutePath
속성 값으로 설정됩니다.
매개변수
매개변수 | 설명 |
---|---|
우리 | 이 트랜잭션의 URI입니다. |
예
var uri = new System.Uri("https://www.mydomain.com/path");NewRelic.Api.Agent.NewRelic.SetTransactionUri(uri);
통사론
NewRelic.Api.Agent.NewRelic.SetUserParameters(string $user_value, string $account_value, string $product_value)
사용자 관련 사용자 정의 속성을 만듭니다. AddCustomAttribute
더 유연합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 트랜잭션 내에서 호출되어야 합니다.
설명
팁
이 호출을 사용하면 기존 키에만 값을 할당할 수 있습니다. 키/값 쌍을 생성하는 보다 유연한 방법을 사용하려면 AddCustomAttribute()
사용하세요.
브라우저 페이지 보기(사용자 이름, 계정 이름, 제품 이름)와 연결할 사용자 관련 사용자 정의 속성을정의합니다. 값은 자동으로 기존 키(user
, account
및 product
)와 연결된 다음 상위 APM 트랜잭션에 연결됩니다. 또한 이러한 속성을 브라우저 PageView 이벤트에 첨부(또는 "전달") 할 수도 있습니다.
매개변수
매개변수 | 설명 |
---|---|
끈 | 필수(null일 수 있음). 이 페이지 보기와 연결할 이름 또는 사용자 이름을 지정하십시오. 이 값은 |
끈 | 필수(null일 수 있음). 이 페이지 보기와 연결할 사용자 계정의 이름을 지정하십시오. 이 값은 |
끈 | 필수(null일 수 있음). 이 페이지 보기와 연결할 제품의 이름을 지정하십시오. 이 값은 |
예
세 가지 사용자 속성 기록
NewRelic.Api.Agent.NewRelic.SetUserParameters("MyUserName", "MyAccountName", "MyProductName");
두 개의 사용자 속성과 하나의 빈 속성 기록
NewRelic.Api.Agent.NewRelic.SetUserParameters("MyUserName", "", "MyProductName");
통사론
NewRelic.Api.Agent.NewRelic.StartAgent()
에이전트가 아직 시작되지 않은 경우 시작합니다. 일반적으로 불필요합니다.
요구 사항
- 모든 에이전트 버전과 호환됩니다.
- 모든 앱 유형과 호환됩니다.
설명
아직 시작되지 않은 경우 에이전트를 시작합니다. autoStart
비활성화하지 않는 한 계측된 메서드에 도달하면 에이전트가 자동으로 시작되므로 일반적으로 이 호출은 필요하지 않습니다. SetApplicationName()
사용하는 경우 에이전트를 시작하기 전에 앱 이름을 설정했는지 확인하세요.
팁
이 메서드는 syncStartup
또는 sendDataOnExit
활성화하지 않는 한 에이전트를 비동기식으로 시작합니다(즉, 앱 시작을 차단하지 않음).
예
NewRelic.Api.Agent.NewRelic.StartAgent();
통사론
NewRelic.Api.Agent.TraceMetadata;
추적을 지원하는 데 사용되는 현재 실행 환경의 속성을 반환합니다.
요구 사항
- 에이전트 버전 8.19 이상.
- 모든 앱 유형과 호환됩니다.
- 의미 있는 값을 얻으려면 분산 추적을 활성화해야 합니다 .
설명
다음 속성에 대한 액세스를 제공합니다.
속성
이름 | 설명 |
---|---|
| 현재 실행 중인 추적을 나타내는 문자열을 반환합니다. 추적 ID를 사용할 수 없거나 분산 추적이 비활성화된 경우 값은 |
| 현재 실행 중인 범위를 나타내는 문자열을 반환합니다. 스팬 ID를 사용할 수 없거나 분산 추적이 비활성화된 경우 값은 |
| 현재 추적이 포함을 위해 샘플링된 경우 |
예
IAgent agent = NewRelic.Api.Agent.NewRelic.GetAgent();ITraceMetadata traceMetadata = agent.TraceMetadata;string traceId = traceMetadata.TraceId;string spanId = traceMetadata.SpanId;bool isSampled = traceMetadata.IsSampled;