
本文共 9298 字,大约阅读时间需要 30 分钟。
OpenTelemetry ������
OpenTelemetry���������������������������������������������SDK������������������������������������������������������������������������������������,���������������������������Cloud Native Computing Foundation���CNCF������������������������������������������������������������������������������������������������CNCF������������ ������������������������������������SDK������������������������������������������C#���ASP.NET Core���
���������������������������������OpenTelemetry������������������������������������������������������.NET������������������������������������������������������������������������������������������������������
Logging ������
������������������������������������������������������.NET���������������������������������NuGet���ILogger������������������������������������������������OpenTelemetry������ Microsoft.Extensions.Logging, ���������������ASP.NET Core������������������������������������������������
Metrics ������
���������������������������������������������������������������������������������OpenTelemetry������������������������������������ ���������������������������������������������������
- CPU ���������������
- ���������������������
- Http���������������
Tracing ������
���������������������������������������������������������������������������������������������������������������������ASP.NET Core���������HTTP������������������������������������������������������������������������������������������ Http���������������������������������������������������������������������������������������������������������������������������������������������������������������������������
Jaeger
������������������������������������������������������������������������������������������APM���������������������������������������������OpenTelemetry������������������������APM���������������������
Jaeger���Zipkin���������������������������������Open Telemetry������APM��� Zipkin������������������������������������������UI������������������������Jaeger������������������������
������������������������������������,������������������������������HTTP���������MySQL���Redis���������API������������, ���������������������������������������������,������������������������������������������������������������������������,���������������������������������������������������������������������������������������
Spans ������
������Jaeger��������������������������� Span,���.NET���������������������System.Activities.Activity���������������������������������������������������������������������������������������������������������������������������������������������������Span������������������������������
���������������.NET���������������������������������������OpenTelemetry������������������������������������������������������������������
���������������.NET������������������Activity������������������.NET��������������������������������������������������� Span������������������������������������������open-telemetry���������������������.NET������������������������ Span ��� Activity���������������
������������.NET 5���������ActivitySource,������������������ Activity���
������Span������������������������������������������������������������ActivitySource������������Span���������������������
private static ActivitySource activitySource = new ActivitySource( "companyname.product.library", "semver1.0.0");
���������������������������StartActivity���������������������������Dispose������������Span���
using (var activity = activitySource.StartActivity("ActivityName"){ // Pretend to do some work. await LongRunningAsync().ConfigureAwait(false);} // Activity gets stopped automatically at end of this block during dispose.
Events ������
���Span���������������������������������������������������������������������������������������������������
using (var activity = activitySource.StartActivity("ActivityName"){ await LongRunningOperation().ConfigureAwait(false);}public async Task LongRunningOperationAsync(){ await Task.Delay(1000).ConfigureAwait(false); // Log timestamped events that can take place during an activity. Activity.Current?.AddEvent(new ActivityEvent("Something happened."));}
���LongRunningOperationAsync������������������������������������������activity���������������������������������������������������������������������������������������������������������������������������������������������Activity.Current���
������������������������������������������������Activity.Current���������null������������������������null���������
Attributes ������
������������������������������������������������������������Span���������������������Http���������������������������������������
������������Open Telemetry������������ Attributes������ ������.NET ������Tag
using (var activity = activitySource.StartActivity("ActivityName"){ await LongRunningOperation().ConfigureAwait(false);}public async Task LongRunningOperationAsync(){ await Task.Delay(1000).ConfigureAwait(false); // Log an attribute containing arbitrary data. Activity.Current?.SetTag("http.method", "GET");}
IsRecording ������
IsRecording���Span���������������������������������false������������Span������������������������������������������������������������������������������������������10%������������������������������������span���������false���������������������
������������open-telemetryg������������IsRecording������.NET Core 3.1������ Recorded������.NET 5 ������ IsAllDataRequested���
using (var activity = activitySource.StartActivity("ActivityName"){ await LongRunningOperation().ConfigureAwait(false);}public async Task LongRunningOperationAsync(){ await Task.Delay(1000).ConfigureAwait(false); // It's possible to optionally request more data from a particular span. var activity = Activity.Current; if (activity != null && activity.IsAllDataRequested) { activity.SetTag("http.url", "http://www.mywebsite.com"); }}
Trace���������������
������������������http.method���http.url������������������������������������������������������open-telemetry���������������������������������������������������������������������������������������������Jaeger���APM������������������������������������������������������������������������������������������������������������
- General: ���������������������������������������������������������
- HTTP: ������������������������Http������
- Database: SQL ��� NoSql���������
- RPC/RMI: ���������������������gRPC���
- Messaging: ���������������������������������������������/������������
- Exceptions: ���������������Span������������������������
Exporting ������
���������������������������OpenTelemetry���������������������������������������������������������������������������������ASP.NET Core���������Open Telemetry���������, ���������������������������������������������������������������������������OpenTelemetry������������������������
using var subscriber = DiagnosticListener.AllListeners.Subscribe( listener => { Console.WriteLine($"Listener name {listener.Name}"); listener.Subscribe(kvp => Console.WriteLine($"Received event {kvp.Key}:{kvp.Value}")); });
������������������
������������������������������������������������������������������������������������������������
���������W3C���������������
������������������������������HTTP Header���������Header������������������������������������������������������������������������������������������������������Http���Header������������������������������������������HTTP Header���
traceparent-������version���trace-id���parent-id���trace-flags
- version - ���open-telemetry������������������������00
- trace-id - ���������������������������
- parent-id -������������ patent span ���������������������
- trace-flags -���������������������������������������������������������������������������������������������
tracestate -���������������/���������������������������������������������
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01tracestate: asp=00f067aa0ba902b7,redis=t61rcWkgMzE
Baggage
���Attributes���������Baggage������������������������������������������������������������������������������������������������Baggage������W3C���������baggage���������HTTP Header������������������������������Attributes������������������������Span���������
baggage: userId=alice,serverNode=DF:28,isProduction=false
���������������������������������������
using (var activity = activitySource.StartActivity("ActivityName"){ await LongRunningOperation().ConfigureAwait(false);}public async Task LongRunningOperationAsync(){ await Task.Delay(1000).ConfigureAwait(false); // Log an attribute containing arbitrary data. Activity.Current?.AddBaggage("http.method", "GET");}
���������������������������������������������������������ID��������������������� Baggage ���������������������������������������������������������
������
.NET���������OpenTelemetry������������������������������Activity���������.NET 5 ��������������������������� HttpClient ������������������������������W3C���������������HTTP Header��� ������ILogger���������������������������������������������OpenTelemetry������������������
������������: Rehan Saeed
���������������
������
������������������������������������ ���������������������������������������������������������������������������������������������������QQ��� 897216102
发表评论
最新留言
关于作者
