Відправлення телеметрії з програми Asp.Net Core до Scaleway Cockpit
Scaleway — один із європейських хмарних провайдерів, який пропонує недорогу альтернативу американським провайдерам, який має датацентри у Парижі, Амстердамі та Варшаві. Cockpit — це сервіс Scaleway для моніторингу інфраструктури та програм. Він дозволяє моніторити послуги Scaleway (Scaleway data) та ваші власні додатки (Custom data). Cockpit використовує Grafana для візуалізації та використовує:
Щоб надсилати телеметричні сигнали з вашого власного додатка, вам потрібно створити власні джерела даних (endpoints) для кожного типу сигналу (метрики, журнали, трасування). Scaleway надає документацію для налаштування та конфігурації власних джерел даних та створення токена.
Після налаштування ви повинні отримати такі значення:
- API Token
- URL для кожного типу телеметричного сигналу, який ви хочете надіслати, шо виглядають таким чином:
https://<traces-datasource-id>.traces.cockpit.<scaleway-region>.scw.cloud/https://<metrics-datasource-id>.metrics.cockpit.<scaleway-region>.scw.cloud/https://logs-datasource-id.logs.cockpit.<scaleway-region>.scw.cloud/
Всі джерела даних підтримують протокол OpenTelemetry (OTLP) для збору даних за адресою /otlp/v1/[traces,metrics,logs].
- Дотримуйтесь інструкцій, щоб створити приклад програми Asp.Net Core, налаштованої для OpenTelemetry
- Мінімальна конфігурація для Scaleway у
Program.csповинна виглядати так:
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
// ...
var otlpHeader = "X-Token=<API Token>";
builder.Logging.AddOpenTelemetry(otelLoggerOptions =>
{
otelLoggerOptions.AddOtlpExporter(otlpExporterOptions =>
{
otlpExporterOptions.Endpoint = new Uri("https://<logs_datasource_id>.logs.cockpit.<scaleway_region>.scw.cloud/otlp/v1/logs");
otlpExporterOptions.Headers = otlpHeader;
otlpExporterOptions.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.HttpProtobuf;
});
});
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddOtlpExporter(otlpExporterOptions =>
{
otlpExporterOptions.Endpoint = new Uri("https://<traces_datasource_id>.traces.cockpit.<scaleway_region>.scw.cloud/otlp/v1/traces");
otlpExporterOptions.Headers = otlpHeader;
otlpExporterOptions.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.HttpProtobuf;
}))
.WithMetrics(metrics => metrics
.AddAspNetCoreInstrumentation()
.AddOtlpExporter(otlpExporterOptions =>
{
otlpExporterOptions.Endpoint = new Uri("https://<metrics_datasource_id>.metrics.cockpit.<scaleway_region>.scw.cloud/otlp/v1/metrics");
otlpExporterOptions.Headers = otlpHeader;
otlpExporterOptions.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.HttpProtobuf;
}));
// ...
var app = builder.Build();
// ...
З такою конфігурацією програму можно запускати і переглядати телеметрію в Cockpit.
Для простоти в цьому прикладі використовуються жорстко задані значення, а в реальному додатку слід використовувати звичайні методи конфігурації .Net.
4 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів