TimescaleDB
Write reporting events and projected metrics into PostgreSQL-compatible tables for TimescaleDB or standard PostgreSQL workflows.
Reporting
Realtime reporting
Choose the built-in sink page that matches the observability stack your team already uses. Each tab below opens a dedicated page instead of swapping content in place.
When To Use TimescaleDB
Use TimescaleDB when your platform standardizes on PostgreSQL-compatible storage but still wants queryable reporting-event rows and a dedicated projected-metrics table.
What LoadStrike Sends
TimescaleDbReportingSink writes reporting events into the configured table and can split projected metrics into a separate MetricsTableName. When available, the sink can also prepare hypertables for time-series friendly storage.
Configuration Surface
Configure the sink in code or through LoadStrike:ReportingSinks:TimescaleDb. Common options include ConnectionString, Schema, TableName, MetricsTableName, CreateSchemaIfMissing, EnableHypertableIfAvailable, and StaticTags.
Starter Assets
LoadStrike publishes a TimescaleDB datasource YAML, the shared Grafana dashboard-provider YAML, and a TimescaleDB overview dashboard JSON file.
TimescaleDB realtime reporting
Use TimescaleDbReportingSink when you want PostgreSQL-compatible event and metric storage.
Switch between C#, Java, Python, TypeScript, and JavaScript to see the native SDK shape for this sample.
Licensing note: every runnable sample requires a valid runner key via WithRunnerKey("...") or config key LoadStrike:RunnerKey.
HTML reports include an icon-only Light/Dark theme toggle fixed at the top-right. Default report theme is Light.
TimescaleDB Sink
var timescaleSink = new TimescaleDbReportingSink(new TimescaleDbReportingSinkOptions
{
ConnectionString = "Host=db.example.com;Port=5432;Database=loadstrike;Username=postgres;Password=postgres",
Schema = "observability",
TableName = "loadstrike_reporting_events",
MetricsTableName = "loadstrike_reporting_metrics",
CreateSchemaIfMissing = true,
EnableHypertableIfAvailable = true
});
LoadStrikeRunner.RegisterScenarios(scenario)
.WithReportingSinks(timescaleSink)
.WithRunnerKey("rkl_your_local_runner_key")
.Run();
import com.loadstrike.runtime.LoadStrikeRunner;
import com.loadstrike.runtime.LoadStrikeSinks;
var options = new LoadStrikeSinks.TimescaleDbSinkOptions();
options.connectionString = "Host=db.example.com;Port=5432;Database=loadstrike;Username=postgres;Password=postgres";
options.schema = "observability";
options.tableName = "loadstrike_reporting_events";
options.metricsTableName = "loadstrike_reporting_metrics";
options.createSchemaIfMissing = true;
options.enableHypertableIfAvailable = true;
var sink = new LoadStrikeSinks.TimescaleDbReportingSink(options);
LoadStrikeRunner.registerScenarios(scenario)
.withReportingSinks(sink)
.withRunnerKey("rkl_your_local_runner_key")
.run();
from loadstrike_sdk import LoadStrikeRunner, TimescaleDbReportingSink
sink = TimescaleDbReportingSink(
connection_string="Host=db.example.com;Port=5432;Database=loadstrike;Username=postgres;Password=postgres",
schema="observability",
table_name="loadstrike_reporting_events",
metrics_table_name="loadstrike_reporting_metrics",
create_schema_if_missing=True,
enable_hypertable_if_available=True,
)
LoadStrikeRunner.register_scenarios(scenario) \
.with_reporting_sinks(sink) \
.with_runner_key("rkl_your_local_runner_key") \
.run()
import {
LoadStrikeRunner,
TimescaleDbReportingSink,
TimescaleDbReportingSinkOptions
} from "@loadstrike/loadstrike-sdk";
const sink = new TimescaleDbReportingSink(new TimescaleDbReportingSinkOptions({
ConnectionString: "Host=db.example.com;Port=5432;Database=loadstrike;Username=postgres;Password=postgres",
Schema: "observability",
TableName: "loadstrike_reporting_events",
MetricsTableName: "loadstrike_reporting_metrics",
CreateSchemaIfMissing: true,
EnableHypertableIfAvailable: true
}));
await LoadStrikeRunner
.registerScenarios(scenario)
.withReportingSinks(sink)
.withRunnerKey("rkl_your_local_runner_key")
.run();
const {
LoadStrikeRunner,
TimescaleDbReportingSink,
TimescaleDbReportingSinkOptions
} = require("@loadstrike/loadstrike-sdk");
const sink = new TimescaleDbReportingSink(new TimescaleDbReportingSinkOptions({
ConnectionString: "Host=db.example.com;Port=5432;Database=loadstrike;Username=postgres;Password=postgres",
Schema: "observability",
TableName: "loadstrike_reporting_events",
MetricsTableName: "loadstrike_reporting_metrics",
CreateSchemaIfMissing: true,
EnableHypertableIfAvailable: true
}));
await LoadStrikeRunner
.registerScenarios(scenario)
.withReportingSinks(sink)
.withRunnerKey("rkl_your_local_runner_key")
.run();
TimescaleDB setup checklist
LoadStrike:ReportingSinks:TimescaleDb
ConnectionString, Schema, TableName, MetricsTableName, CreateSchemaIfMissing, EnableHypertableIfAvailable, and StaticTags.
Teams standardizing on PostgreSQL-compatible storage while still wanting queryable event rows and separate metrics tables.
Datasource YAML, shared dashboard-provider YAML, and a TimescaleDB overview dashboard are published for download.
{
"LoadStrike": {
"ReportingSinks": {
"TimescaleDb": {
"ConnectionString": "Host=db.example.com;Port=5432;Database=loadstrike;Username=postgres;Password=postgres",
"Schema": "observability",
"TableName": "loadstrike_reporting_events",
"MetricsTableName": "loadstrike_reporting_metrics"
}
}
}
}
Downloads and starter assets
These files cover the documented TimescaleDB-backed workflow that LoadStrike publishes publicly.
Timescale datasource YAML
Grafana datasource definition for a TimescaleDB-backed LoadStrike dashboard setup.
Download fileDashboard provider YAML
Shared Grafana dashboard-provider file used by the published starter dashboards.
Download fileTimescale dashboard JSON
Starter dashboard wired for the TimescaleDB sink shape documented here.
Download file