Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
1.6 kB
2
Indexable
Never
// Файл Program.cs (точка входа)

using Jaeger;
using Jaeger.Samplers;
using OpenTracing.Util;
using Jaeger.Reporters;
using Jaeger.Senders.Thrift;

// Создаём экземпляр трассировщика Jaeger
var reporter = new RemoteReporter.Builder()
    .WithSender(new UdpSender("host.docker.internal", 6831, 0))
    .Build();

var tracer = new Tracer.Builder("addos")
    .WithReporter(reporter)
    .WithSampler(new ConstSampler(true))
    .Build();

// Устанавливаем трассировщик как глобальный трассировщик в OpenTracing
GlobalTracer.Register(tracer);

// Файл DdosDetector.cs

using OpenTracing.Util;
// В функции public async Task MonitorConnectionsAsync():

using (var scope = GlobalTracer.Instance.BuildSpan("AcceptConnection").StartActive(true))
{
    // Отслеживаем подключение в объекте connectionTracker
    connectionTracker.TrackConnection(client);

    // Увеличиваем счётчики подключений
    totalConnections++;
    connectionsPerMinute++;

    // Увеличиваем метрики подключений
    s_totalConnections.Inc();
    s_connectionsPerMinute.Inc();

    // Добавьте теги или логи в спан, если это необходимо
    scope.Span.SetTag("client-ip", client.Client.RemoteEndPoint.ToString());
    scope.Span.Log(new Dictionary<string, object>
    {
        ["event"] = "connection-accepted",
        ["value"] = totalConnections
    });
}
Leave a Comment