当前位置: 首页 > article >正文

opentelemetry-collector 配置prometheus

一、修改otelcol-config.yaml

nano /root/otelcol-config.yaml
============================================================
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318
exporters:
  debug:
    verbosity: detailed
  otlp/jaeger: # Jaeger supports OTLP directly
    endpoint: 192.168.31.161:4317
    tls:
      insecure: true
  otlphttp/prometheus: # the PRW exporter, to ingest metrics to backend
    endpoint: http://192.168.31.160:9090/api/v1/otlp
    tls:
      insecure: true
service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [otlp/jaeger]
    metrics:
      receivers: [otlp]
      exporters: [otlphttp/prometheus]
    logs:
      receivers: [otlp]
      exporters: [debug]
============================================================

特别注意红色的字,地址不要写错了:

http://192.168.31.160:9090/api/v1/otlp  otlphttp/prometheus: # the PRW exporter, to ingest metrics to backend
    endpoint: http://192.168.31.160:9090/api/v1/otlp

二、项目引用依赖

<ItemGroup>
	<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.11.0" />
	<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.0" />
	<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.11.0-beta.1" />
	<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" />
	<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.10.0" />
	<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.18" />
	<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>

Program.cs

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)
        .AddRuntimeInstrumentation()
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddPrometheusExporter()
        .AddOtlpExporter(options =>
        {
            options.Endpoint = new Uri("http://192.168.31.160:4318/v1/metrics");
            //http://192.168.31.160:4318/v1/metrics
            //直接写入prometheus:http://192.168.31.160:9090/api/v1/otlp/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();
app.UseOpenTelemetryPrometheusScrapingEndpoint();


// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();


app.Run();

三、运行效果


http://www.kler.cn/a/534873.html

相关文章:

  • creator 接入zendesk Unified SDK 组件样式报错解决方法
  • 在线教程丨YOLO系列10年更新11个版本,最新模型在目标检测多项任务中达SOTA
  • java练习(8)
  • C++17新特性:结构化绑定
  • Sentinel的安装和做限流的使用
  • 嵌入式工程师必学(143):模拟信号链基础
  • ssh中公钥和私钥怎么生成
  • Markdown介绍与语法
  • (2024|NEJM,多模态医学应用,Med-PaLM M,MultiMedBench,医学问答)迈向通用生物医学 AI
  • 二手房屋数据分析可视化系统-python
  • Redis学习(hmdp-缓存优化模块)
  • 自定义多功能输入对话框:基于 Qt 打造灵活交互界面
  • 蓝桥杯之c++入门(六)【string】
  • PAT甲级1052、Linked LIst Sorting
  • TongSearch3.0.4.0安装和使用指引(by lqw)
  • python处理json文件
  • 人工智能丨PyTorch 计算机视觉
  • [创业之路-286]:《产品开发管理-方法.流程.工具 》-1- IPD两个跨职能团队的组织
  • (安全防御)防火墙安全策略部署
  • 玩转Amazon Bedrock基础模型:解锁图像风格混搭的无限可能
  • 【论文复现】基于适应度-距离平衡的自适应引导差分进化算法用于考虑可再生能源的安全约束最优潮流问题
  • 【Go语言快速上手】第一部分:Go 语言基础
  • Angular-hello world
  • 青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用
  • C++【深入 STL--list 之 迭代器与反向迭代器】
  • 【鸿蒙HarmonyOS Next实战开发】视频压缩库VideoCompressor