• /
  • EnglishEspaรฑolFranรงaisๆ—ฅๆœฌ่ชžํ•œ๊ตญ์–ดPortuguรชs
  • ๋กœ๊ทธ์ธ์ง€๊ธˆ ์‹œ์ž‘ํ•˜๊ธฐ

์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ธฐ๊ณ„ ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค.

์˜๋ฌธ๋ณธ๊ณผ ๋ฒˆ์—ญ๋ณธ์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜๋ฌธ๋ณธ์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฌธ์ œ ์‹ ๊ณ 

.NET ์—์ด์ „ํŠธ API

๋‰ด๋ ๋ฆญ์˜ .NET ์—์ด์ „ํŠธ์—๋Š” ์—์ด์ „ํŠธ์˜ ํ‘œ์ค€ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” API ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด .NET ์—์ด์ „ํŠธ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•ฑ ์ด๋ฆ„ ๋งž์ถค์„ค์ •
  • ์‚ฌ์šฉ์ž ์ •์˜ ํŠธ๋žœ์žญ์…˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ
  • ๋งž์ถค ์˜ค๋ฅ˜ ๋ฐ ์ธก์ •ํ•ญ๋ชฉ ๋ณด๊ณ 

๊ตฌ์„ฑ ์„ค์ • ์„ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ง€์ • ๊ณ„์ธก ์„ ์‚ฌ์šฉํ•˜์—ฌ .NET ์—์ด์ „ํŠธ์˜ ์ผ๋ถ€ ๊ธฐ๋ณธ ๋™์ž‘์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”๊ตฌ ์‚ฌํ•ญ

.NET ์—์ด์ „ํŠธ API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ตœ์‹  .NET ์—์ด์ „ํŠธ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์˜์กด์„ฑ ์ฃผ์ž…์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ

Microsoft.Extensions.DependencyInjection (๋˜๋Š” ์œ ์‚ฌํ•œ ์ปจํ…Œ์ด๋„ˆ)๋ฅผ ํ†ตํ•ด ์—์ด์ „ํŠธ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์•„๋ฌด๋Ÿฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ปค์Šคํ…€ ์ธก์ •์„ ์กฐ์šฉํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ํ•จ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ IAgent ์€(๋Š”) ์ˆ˜๋ช…์ด ๊ธด ํ•ธ๋“ค์ด์ง€๋งŒ, CurrentTransaction ๋ฐ CurrentSpan ์€(๋Š”) ๋ชจ๋“  ํ˜ธ์ถœ์—์„œ ๋‹ค์‹œ ์ฝ์–ด์•ผ ํ•˜๋Š” ์š”์ฒญ ๋ฒ”์œ„์˜ ๋ทฐ๋ผ๋Š” ์‚ฌ์‹ค์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.

IAgent ์„(๋ฅผ) ์ฆ‰์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€์—ฐ ๋“ฑ๋กํ•˜์‹ญ์‹œ์˜ค

GetAgent() ์„(๋ฅผ) ํ”„๋กœํŒŒ์ผ๋Ÿฌ ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋œ ํ›„์— ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DI ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋นŒ๋“œ๋˜๋Š” ๋™์•ˆ ์ด๋ฅผ ์กฐ๊ธฐ์— ๋ฆฌ์กธ๋ธŒํ•˜๋ฉด, ์—์ด์ „ํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ธฐ ์ „์— API๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” no-op ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ์บ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์กฐ์šฉํžˆ ๋น„ํ™œ์„ฑํ™”๋œ API๊ฐ€ ๋‚จ๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์ด ์ตœ์ดˆ ํ•ด์„ ์‹œ๊นŒ์ง€ ์ง€์—ฐ๋˜๋„๋ก ํŒฉํ† ๋ฆฌ ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค:

// โŒ Eager โ€” may capture the no-op placeholder
builder.Services.AddSingleton<IAgent>(NewRelic.Api.Agent.NewRelic.GetAgent());
// โœ… Lazy โ€” GetAgent() runs on first resolution, after the profiler is ready
builder.Services.AddSingleton<IAgent>(_ => NewRelic.Api.Agent.NewRelic.GetAgent());

ํ•„๋“œ์— ITransaction ๋˜๋Š” ISpan ์„(๋ฅผ) ์บ์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

IAgent ์ž์ฒด๋Š” ์ €์žฅํ•ด๋„ ์•ˆ์ „ํ•˜์ง€๋งŒ, CurrentTransaction ๋ฐ CurrentSpan ์€(๋Š”) ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋‚˜ ํ•„๋“œ์—์„œ ์ด๋ฅผ ์บก์ฒ˜ํ•˜๋ฉด ํ•„๋“œ๊ฐ€ ์ฒ˜์Œ ํ• ๋‹น๋˜์—ˆ์„ ๋•Œ ์ง„ํ–‰ ์ค‘์ด๋˜ ์š”์ฒญ์— ์„œ๋น„์Šค๊ฐ€ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ํ›„์† ํ˜ธ์ถœ์€ ์ด๋ฏธ ์ข…๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์— ์†์„ฑ, ์˜ค๋ฅ˜ ๋ฐ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๋ฉฐ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ๋ณด๊ณ  ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์— ์ „ํ˜€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

// โŒ Captures one request's transaction forever
public class BuggyService
{
private readonly ITransaction _transaction;
public BuggyService(IAgent agent) => _transaction = agent.CurrentTransaction;
}
// โœ… Fetch per-call
public class WorkService
{
private readonly IAgent _agent;
public WorkService(IAgent agent) => _agent = agent;
public void DoWork()
{
var transaction = _agent.CurrentTransaction;
transaction.AddCustomAttribute("key", "value");
}
}

์ปดํŒŒ์ผ์ด ํ™•์ธ๋œ ์•ˆํ‹ฐํŒจํ„ด ์˜ˆ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์™„์ „ํ•˜๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„๋ณ„ ์•ˆ๋‚ด๋ฅผ ๋ณด๋ ค๋ฉด newrelic-dotnet-examples ์ €์žฅ์†Œ์˜ API ์˜์กด์„ฑ ์ฃผ์ž… ์˜ˆ์ œ ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

API ํ˜ธ์ถœ ๋ชฉ๋ก

๋‹ค์Œ ๋ชฉ๋ก์—๋Š” ๊ตฌ๋ฌธ, ์š”๊ตฌ ์‚ฌํ•ญ, ๊ธฐ๋Šฅ ๋ฐ ์˜ˆ๋ฅผ ํฌํ•จํ•˜์—ฌ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ˜ธ์ถœ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Copyright ยฉ 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.