Live:CloudOps Webinars & Hands-on Workshops ·Register ↗
मुख्य कंटेंट तक स्किप करें

विभिन्न प्रोग्रामिंग भाषाओं के लिए Instrumentation सैंपल

यह खंड विभिन्न प्रोग्रामिंग भाषाओं और फ्रेमवर्क में AWS Application Signals के साथ एप्लिकेशन को instrument करने के लिए मार्गदर्शन प्रदान करता है।

डेमो एप्लिकेशन

Auto-Instrumentation

Auto-instrumentation लोकप्रिय फ्रेमवर्क और लाइब्रेरी को स्वचालित रूप से detect और instrument करके बिना कोड बदले Observability प्रदान करता है। Application Signals के साथ जल्दी शुरू करने के लिए यह अनुशंसित दृष्टिकोण है।

Java Spring Boot एप्लिकेशन

Auto-Instrumentation सेटअप:

java -javaagent:/path/to/aws-opentelemetry-agent.jar \
-Dotel.service.name=my-java-app \
-jar your-app.jar

संदर्भ माइक्रोसर्विसेज:

Python एप्लिकेशन

Auto-Instrumentation सेटअप:

pip install pip install aws-opentelemetry-distro
opentelemetry-instrument \
--service_name my-python-app \
python your_app.py

संदर्भ माइक्रोसर्विसेज:

Node.js एप्लिकेशन

Auto-Instrumentation सेटअप:

npm install @aws/opentelemetry-auto-instrumentation
node --require @aws/opentelemetry-auto-instrumentation \
your_app.js

संदर्भ माइक्रोसर्विसेज:

.NET एप्लिकेशन

Auto-Instrumentation सेटअप:

// Program.cs में कॉन्फ़िगर करें
builder.Services.AddOpenTelemetry()
.WithTracing(builder => builder
.AddAspNetCoreInstrumentation()
.AddOtlpExporter());

संदर्भ माइक्रोसर्विसेज:

Manual Instrumentation

Manual instrumentation में बिना किसी auto-instrumentation agent के OpenTelemetry SDK का पूर्ण एंड-टू-एंड एकीकरण शामिल है। यह दृष्टिकोण टेलीमेट्री संग्रह पर अधिकतम नियंत्रण प्रदान करता है और उन भाषाओं के लिए आवश्यक है जो auto-instrumentation का समर्थन नहीं करतीं।

Java — Manual Spans

import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.Span;

Tracer tracer = GlobalOpenTelemetry.getTracer("my-service");

Span span = tracer.spanBuilder("custom-operation")
.setAttribute("user.id", userId)
.startSpan();
try {
// आपका बिज़नेस लॉजिक
processOrder(order);
} finally {
span.end();
}

Python — Manual Spans

from opentelemetry import trace

tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("process-payment") as span:
span.set_attribute("payment.amount", amount)
span.set_attribute("payment.currency", currency)
result = process_payment(amount, currency)
span.set_attribute("payment.success", result.success)

.NET — Manual Spans

using OpenTelemetry.Trace;

var tracer = tracerProvider.GetTracer("my-service");

using var span = tracer.StartActiveSpan("validate-user");
try
{
span.SetAttribute("user.email", user.Email);
var isValid = await ValidateUserAsync(user);
span.SetAttribute("validation.result", isValid);
return isValid;
}
catch (Exception ex)
{
span.SetStatus(Status.Error, ex.Message);
throw;
}

Node.js — Manual Spans

const { trace } = require('@opentelemetry/api');

const tracer = trace.getTracer('my-service');

async function processOrder(order) {
const span = tracer.startSpan('process-order');
span.setAttribute('order.id', order.id);
span.setAttribute('order.amount', order.amount);

try {
await validateOrder(order);
await chargePayment(order);
span.setAttribute('order.status', 'completed');
} catch (error) {
span.setStatus({ code: trace.SpanStatusCode.ERROR, message: error.message });
throw error;
} finally {
span.end();
}
}

Go एप्लिकेशन (केवल Manual)

Go को manual instrumentation की आवश्यकता होती है (auto-instrumentation उपलब्ध नहीं)।

import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
)

tracer := otel.Tracer("my-service")

_, span := tracer.Start(ctx, "process-request")
span.SetAttributes(
attribute.String("user.id", userID),
attribute.Float64("request.duration", duration),
)
defer span.End()

संदर्भ कार्यान्वयन:

Rust एप्लिकेशन (केवल Manual)

संदर्भ कार्यान्वयन:

संयुक्त Instrumentation (Auto + Manual)

संयुक्त instrumentation बेसलाइन टेलीमेट्री के लिए auto-instrumentation agents का उपयोग करता है जबकि manual instrumentation के माध्यम से कस्टम spans, attributes, और बिज़नेस संदर्भ जोड़ता है।

संदर्भ कार्यान्वयन:

प्रमुख Manual Instrumentation सर्वोत्तम कार्यप्रणालियाँ

  • बिज़नेस संदर्भ: हमेशा spans में प्रासंगिक बिज़नेस attributes (customer_id, order_value, product_category) जोड़ें
  • त्रुटि प्रबंधन: exceptions रिकॉर्ड करें और उचित span status codes सेट करें
  • कस्टम मेट्रिक्स: तकनीकी मेट्रिक्स के साथ बिज़नेस-विशिष्ट मेट्रिक्स बनाएं
  • Span पदानुक्रम: जटिल ऑपरेशन को विभाजित करने के लिए child spans का उपयोग करें
  • Attribute नामकरण: जहां संभव हो OpenTelemetry semantic conventions का पालन करें
  • प्रदर्शन प्रभाव: उच्च-थ्रूपुट पथों में instrumentation ओवरहेड के प्रति सचेत रहें