Expanded Built-In Sinks

Use the expanded sink set when LoadStrike run data should flow into observability platforms, databases, message streams, StatsD collectors, JSONL files, or a generic webhook destination.

What this page helps you do

What this page helps you do

Use the expanded sink set when LoadStrike run data should flow into observability platforms, databases, message streams, StatsD collectors, JSONL files, or a generic webhook destination.

Who this is for

Teams exporting final run data and realtime metrics into supported observability backends.

Prerequisites

  • A run result or sink destination you want to wire into the wider observability stack

By the end

A sink-specific setup path that stays tied to the same LoadStrike report model.

Use this page when

Use this page when the local report is not the only destination and you need to wire realtime or final export into a supported sink.

Visual guide

Realtime reporting flow showing LoadStrike events moving through a sink to observability backends.
Realtime reporting sinks receive interval snapshots during execution and final metadata when the run completes.

Sample Report Data Rows

Scope    Scenario     Result Count RPS  LatencyP50Ms LatencyP80Ms LatencyP85Ms LatencyP90Ms LatencyP95Ms LatencyP99Ms
Scenario reports-demo OK     675   15.0 21.4         30.2         33.0         36.8         48.6         72.1

LatencyTable Scenario     Result Count LatencyP50Ms LatencyP95Ms
LatencyTable reports-demo OK     675   21.4         48.6
LatencyTable reports-demo FAIL   12    35.9         79.2

StatusCode Result Percent
200        OK     97.48
500        FAIL   2.52

FailedStatus Scope     Scenario     Step StatusCode Count Percent
FailedStatus Scenario  reports-demo      500       12    1.75

Reporting

Realtime reporting

Choose Portal Reporting when users should review runs in the customer portal, pick the built-in sink page that matches the backend your team already runs, or open Custom Reporting when you need to implement your own destination. Each tab opens a dedicated page with the settings, behavior, and lifecycle details for that reporting path.

Guide

What The Expanded Set Covers

The expanded built-in sink set includes Prometheus remote write, Amazon CloudWatch, Dynatrace, Elasticsearch, OpenSearch, Kafka, StatsD, DogStatsD, New Relic, Netdata-compatible StatsD, JSONL file streaming, and generic webhook destinations. They sit alongside the existing InfluxDB, TimescaleDB, Grafana Loki, Datadog, Splunk HEC, OTEL Collector, portal reporting, and custom sink options.

Shared Export Model

Every built-in sink receives the same LoadStrike reporting model: realtime scenario stats, projected metrics, final run summaries, final metric snapshots, threshold results, report-file metadata, sink error metadata, and detailed report rows when the run produces them. Choose the destination based on where your team already reviews performance evidence.

Destination Families

Use Prometheus remote write, CloudWatch, Dynatrace, New Relic, StatsD, DogStatsD, or Netdata when metric workflows are the priority. Use Elasticsearch, OpenSearch, JSONL, or webhook sinks when searchable event envelopes are more useful. Use Kafka when the organization wants LoadStrike reporting events on an internal stream for downstream processing.

Configuration

Configure sinks directly in code or bind missing values from LoadStrike:ReportingSinks:* infra-config sections. HTTP-style sinks use endpoint URL, timeout, headers, and static tags. Kafka needs a topic and either a host-provided publisher or runtime configuration. JSONL needs a file path. StatsD-style sinks need the destination line sender or compatible host setup.

Failure Behavior

Sink initialization, realtime export, final export, stop, and dispose are isolated from scenario execution. Persistent sink failures are recorded in the run result and can disable that sink for the current run, while the load test itself continues.

Plan Gate

Expanded built-in reporting sinks are available on Enterprise. The same runner key validates the scenario, the selected sinks, portal reporting, and any transport features used by the run.

Expanded sink setup

Use these samples when LoadStrike reporting events should leave the local report pipeline and feed the observability, stream, file, or webhook destination your team already operates.

If you run these examples locally, add a valid runner key before execution starts. Set it with WithRunnerKey("...") or the config key LoadStrike:RunnerKey.

HTML reports also include the top-right Light/Dark theme toggle. Light is the default report theme.

Expanded Built-In Sinks

using LoadStrike;

var scenario = LoadStrikeScenario.Empty("orders-expanded-sinks")
    .WithLoadSimulations(LoadStrikeSimulation.Inject(20, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(120)));

var prometheus = new PrometheusRemoteWriteReportingSink(new PrometheusRemoteWriteReportingSinkOptions
{
    BaseUrl = "https://prometheus.example.com",
    BearerToken = "prometheus-token"
});

var kafka = new KafkaReportingSink(new KafkaReportingSinkOptions
{
    Topic = "loadstrike-reporting",
    PublishAsync = (topic, payload, cancellationToken) => Task.CompletedTask
});

var jsonl = new JsonlFileReportingSink(new JsonlFileReportingSinkOptions
{
    FilePath = "./reports/loadstrike-events.jsonl"
});

var webhook = new GenericWebhookReportingSink(new GenericWebhookReportingSinkOptions
{
    Url = "https://hooks.example.com/loadstrike",
    Secret = "webhook-secret"
});

LoadStrikeRunner.RegisterScenarios(scenario)
    .WithReportingInterval(TimeSpan.FromSeconds(5))
    .WithReportingSinks(prometheus, kafka, jsonl, webhook)
    .WithRunnerKey("rkl_your_enterprise_runner_key")
    .Run();

Expanded sink families

Metrics-first sinks

Prometheus remote write, CloudWatch, Dynatrace, New Relic, StatsD, DogStatsD, and Netdata-compatible StatsD are useful when dashboard and alert metric series are the primary destination.

Searchable event sinks

Elasticsearch, OpenSearch, JSONL file streaming, and generic webhook sinks keep LoadStrike reporting events easy to search, replay, ship, or transform.

Stream sink

Kafka publishes LoadStrike reporting envelopes to a topic so downstream consumers can enrich, route, store, or alert on them.

Shared lifecycle

All built-in sinks participate in the same Init, Start, SaveRealtimeStats, SaveRealtimeMetrics, SaveRunResult, Stop, and Dispose lifecycle.

Failure handling

Persistent sink failures are recorded in the result and can disable only the failing sink while the main run continues.

Plan gate

Expanded built-in sinks are available on Enterprise.

{
  "LoadStrike": {
    "ReportingSinks": {
      "PrometheusRemoteWrite": {
        "BaseUrl": "https://prometheus.example.com",
        "EndpointPath": "/api/v1/write",
        "BearerToken": "prometheus-token"
      },
      "CloudWatch": {
        "Region": "eu-west-2",
        "Namespace": "LoadStrike"
      },
      "Dynatrace": {
        "BaseUrl": "https://dynatrace.example.com",
        "ApiToken": "dynatrace-token"
      },
      "Elasticsearch": {
        "BaseUrl": "https://elastic.example.com",
        "IndexName": "loadstrike-runs"
      },
      "OpenSearch": {
        "BaseUrl": "https://opensearch.example.com",
        "IndexName": "loadstrike-runs"
      },
      "Kafka": {
        "BootstrapServers": "kafka.example.com:9092",
        "Topic": "loadstrike-reporting"
      },
      "StatsD": {
        "Prefix": "loadstrike"
      },
      "DogStatsD": {
        "Prefix": "loadstrike"
      },
      "NewRelic": {
        "BaseUrl": "https://metric-api.newrelic.com",
        "LicenseKey": "new-relic-license-key"
      },
      "Netdata": {
        "Prefix": "loadstrike"
      },
      "Jsonl": {
        "FilePath": "./reports/loadstrike-events.jsonl"
      },
      "Webhook": {
        "Url": "https://hooks.example.com/loadstrike",
        "Secret": "webhook-secret"
      }
    }
  }
}

Use WithReportingSinks(...) for code-first setup, or LoadInfraConfig(...) when deployment-specific endpoint, token, topic, or file path values should live outside the test source.