in src/ServiceProfiler.EventPipe.Otel/Azure.Monitor.OpenTelemetry.Profiler.Core/EventListeners/SampleCollector.cs [78:128]
public void OnRichPayloadEventWritten(EventWrittenEventArgs eventData)
{
_logger.LogTrace("[{Source}] {Action} - ActivityId: {activityId}, EventName: {eventName}, Keywords: {keyWords:X}, OpCode: {opCode}",
eventData.EventSource.Name,
nameof(OnRichPayloadEventWritten),
eventData.ActivityId,
eventData.EventName,
eventData.Keywords,
eventData.Opcode);
if (string.IsNullOrEmpty(eventData.EventName))
{
return;
}
object? payload = eventData.Payload;
if (payload is null)
{
_logger.LogWarning("Unexpected empty payload.");
return;
}
if (string.Equals(eventData.EventSource.Name, _targetEventSourceName, StringComparison.Ordinal) && (
eventData.EventId == AzureMonitorOpenTelemetryProfilerDataAdapterEventSource.EventId.RequestStart ||
eventData.EventId == AzureMonitorOpenTelemetryProfilerDataAdapterEventSource.EventId.RequestStop))
{
string requestName = eventData.GetPayload<string>("name") ?? "Unknown";
string spanId = eventData.GetPayload<string>("id") ?? throw new InvalidDataException("id payload is missing.");
string requestId = eventData.GetPayload<string>("requestId") ?? throw new InvalidDataException("requestId is missing.");
string operationId = eventData.GetPayload<string>("operationId") ?? throw new InvalidDataException("operationId is missing.");
Guid activityId = eventData.ActivityId;
string activityIdPath = activityId.GetActivityPath();
_logger.LogDebug("{activityId} => {activityIdPath}, requestName: {requestName}, spanId: {spanId}, requestId: {requestId}, operationId: {operationId}",
activityId, activityIdPath, requestName, spanId, requestId, operationId);
if (eventData.EventId == AzureMonitorOpenTelemetryProfilerDataAdapterEventSource.EventId.RequestStart) // Started
{
HandleRequestStart(eventData, activityIdPath, requestId, operationId);
return;
}
if (eventData.EventId == AzureMonitorOpenTelemetryProfilerDataAdapterEventSource.EventId.RequestStop) // Stopped
{
HandleRequestStop(eventData, requestName, activityIdPath, requestId);
return;
}
_logger.LogWarning("Unhandled event id: {eventId}", eventData.EventId);
}
}