一、编写配置
nano /root/otelcol-config.yaml
==================================================
receivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318
exporters:debug:verbosity: detailed
service:pipelines:traces:receivers: [otlp]exporters: [debug]metrics:receivers: [otlp]exporters: [debug]logs:receivers: [otlp]exporters: [debug]
==================================================
启动
docker run -d --name opentelemetry-collector -v /root/otelcol-config.yaml:/etc/otelcol-contrib/config.yaml -p 1888:1888 -p 8888:8888 -p 8889:8889 -p 13133:13133 -p 4317:4317 -p 4318:4318 -p 55679:55679 otel/opentelemetry-collector-contrib:0.117.0
4317:4317 # OTLP gRPC receiver
4318:4318 # OTLP http receiver
编写C#客户端向collector 发送数据
安装包:
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.11.0" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.0" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.11.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.10.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.10.0" />
Program.cs
#region OpenTelemetry
...相关代码
#end
using OpenTelemetry.Exporter;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;var builder = WebApplication.CreateBuilder(args);#region OpenTelemetry
var serviceName = "demoA";
var serviceVersion = "1.0.0";builder.Services.AddOpenTelemetry().ConfigureResource(resource => resource.AddService(serviceName: serviceName,serviceVersion: serviceVersion)).WithTracing(tracing => tracing.AddSource(serviceName).AddAspNetCoreInstrumentation().AddHttpClientInstrumentation().AddOtlpExporter(options =>{options.Endpoint = new Uri("http://192.168.31.160:4318/v1/traces");options.Protocol = OtlpExportProtocol.HttpProtobuf;})).WithMetrics(metrics => metrics.AddMeter(serviceName).AddOtlpExporter(options =>{options.Endpoint = new Uri("http://192.168.31.160:4318/v1/metrics");options.Protocol = OtlpExportProtocol.HttpProtobuf;}));builder.Logging.AddOpenTelemetry(options => options.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(serviceName: serviceName,serviceVersion: serviceVersion)).AddOtlpExporter(options =>{options.Endpoint = new Uri("http://192.168.31.160:4318/v1/logs");options.Protocol = OtlpExportProtocol.HttpProtobuf;}));
#endregion// Add services to the container.
builder.Services.AddHttpClient();builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();var app = builder.Build();// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseAuthorization();app.MapControllers();app.Run();
opentelemetry-collector容器输出: