Skip to content

Instantly share code, notes, and snippets.

@lmolkova
Last active March 25, 2023 17:56
Show Gist options
  • Save lmolkova/a68fdfa8cc7a69bd620ad589bfc766ea to your computer and use it in GitHub Desktop.
Save lmolkova/a68fdfa8cc7a69bd620ad589bfc766ea to your computer and use it in GitHub Desktop.
Schema transformation: tooling investigation

Schema transformation tooling

  1. Schemaprocessor in collector-contrib. It's a stub and does not do anything. It's not included into collector-contib image.

  2. Search for https://opentelemetry.io/schemas/ does not show if anyone uses transformation logic.

  3. There is no schema transformation logic in exporters in opentelemetry-collector-contrib repo.

  4. There is a schema parser https://pkg.go.dev/go.opentelemetry.io/otel/schema/v1.1

Conclusion: there is no publically available and ready to use schema transformation implementation

Performance

To get a very rough upper bound estimate of potential transformation solution, let's use manually configured transform processor:

transform:
  trace_statements:
    - context: span
      statements:
        - set(attributes["net.protocol.name"], attributes["messaging.protocol"]) where attributes["messaging.protocol"] != nil
        - set(attributes["net.protocol.version"], attributes["messaging.protocol_version"]) where attributes["messaging.protocol_version"] != nil
        - set(attributes["messaging.destination.name"], attributes["messaging.destination"]) where attributes["messaging.destination"] != nil
        - delete_key(attributes, "messaging.destination")
        - delete_key(attributes, "messaging.protocol")
        - delete_key(attributes, "messaging.protocol_version")
        - delete_key(attributes, "messaging.destination_kind")

Baseline configuration

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [file]

Test configuration

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch, transform]
      exporters: [file]

Collector config

otelcollector:
  image: otel/opentelemetry-collector-contrib:0.74.0
  command: ["--config=/etc/otel-collector-config.yml"]
  mem_limit: 1g
  cpus: 1

Results

Transformation overhead ~1.8% throughput

Baseline:

duration, sec spans throughput, rps
814 20000000 24570.02457
835 20000000 23952.09581
831 20000000 24067.38869
836 20000000 23923.44498

Average: 24128.23851

Transformation:

duration, sec spans throughput, rps
846 20000000 23640.66194
829 20000000 24125.45235
856 20000000 23364.48598
846 20000000 23640.66194

Average: 23692.81555

CPU and memory: no significant difference, but transformations runs have slightly lower CPU and allocation nrate

image

receivers:
otlp:
protocols:
http:
grpc:
exporters:
file:
path: /tmp/otelcol/logs/logs
prometheus:
endpoint: "0.0.0.0:8889"
processors:
batch:
transform:
trace_statements:
- context: span
statements:
- set(attributes["net.protocol.name"], attributes["messaging.protocol"]) where attributes["messaging.protocol"] != nil
- set(attributes["net.protocol.version"], attributes["messaging.protocol_version"]) where attributes["messaging.protocol_version"] != nil
- set(attributes["messaging.destination.name"], attributes["messaging.destination"]) where attributes["messaging.destination"] != nil
- delete_key(attributes, "messaging.destination")
- delete_key(attributes, "messaging.protocol")
- delete_key(attributes, "messaging.protocol_version")
- delete_key(attributes, "messaging.destination_kind")
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [file]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus]
version: "3.9"
services:
otelcollector:
image: otel/opentelemetry-collector-contrib:0.74.0
command: ["--config=/etc/otel-collector-config.yml"]
mem_limit: 1g
cpus: 1
ports:
- "8889:8889"
- "13133:13133"
- "4317:4317"
- "4318:4318"
- "55679:55679"
volumes:
- ./configs/otel-collector-config.yml:/etc/otel-collector-config.yml
- ./tmp/logs:/tmp/otelcol/logs
depends_on:
- jaeger
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "14250:14250"
- "14268:14268"
- "6831:6831/udp"
- "16686:16686"
- "16685:16685"
prometheus:
image: prom/prometheus:latest
volumes:
- ./configs/prometheus-otel.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
depends_on:
- otelcollector
package org.example;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
import java.io.IOException;
import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.stream.LongStream;
public class Main {
public static void main(String[] args) throws InterruptedException, IOException, ExecutionException {
SdkMeterProvider mprov = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.getDefault())
.setInterval(Duration.ofSeconds(5))
.build())
.build();
OpenTelemetrySdk.builder().setMeterProvider(mprov).buildAndRegisterGlobal();
var b = BatchSpanProcessor.builder(OtlpGrpcSpanExporter.getDefault())
.setMaxExportBatchSize(8192)
.setMaxQueueSize(60000)
.setMeterProvider(mprov)
.build();
var prov = SdkTracerProvider.builder().addSpanProcessor(b).build();
var tracer = prov.tracerBuilder("test").setSchemaUrl("http://opentelemetry.io/schemas/1.16.0").build();
var protocol = AttributeKey.stringKey("messaging.protocol");
var protocolVersion = AttributeKey.stringKey("messaging.protocol_version");
var destination = AttributeKey.stringKey("messaging.destination");
var destinationKind = AttributeKey.stringKey("messaging.destination_kind");
var messageId = AttributeKey.stringKey("messaging.message_id");
var netPeeName = AttributeKey.stringKey("net.peer.name");
var pool = Executors.newFixedThreadPool(12);
pool.submit(() ->
LongStream.range(0, 20_000_000).boxed()
.parallel()
.forEach(i -> {
var span = tracer.spanBuilder("myqueue publish").startSpan();
span.setAttribute(protocol, "amqp");
span.setAttribute(protocolVersion, "1.0");
span.setAttribute(destination, "destination");
span.setAttribute(destinationKind, "queue");
span.setAttribute(messageId, String.valueOf(i));
span.setAttribute(netPeeName, "foobar");
span.end();
if (i % 2 == 0) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
})).get();
prov.forceFlush();
System.out.println("done");
prov.shutdown();
pool.shutdown();
System.in.read();
}
}
/*
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk</artifactId>
<version>1.24.0</version>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-otlp</artifactId>
<version>1.24.0</version>
</dependency>
*/
{
"__inputs": [
{
"name": "DS_PROMETHEUS",
"label": "Prometheus",
"description": "",
"type": "datasource",
"pluginId": "prometheus",
"pluginName": "Prometheus"
}
],
"__elements": {},
"__requires": [
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "9.1.1"
},
{
"type": "datasource",
"id": "prometheus",
"name": "Prometheus",
"version": "1.0.0"
},
{
"type": "panel",
"id": "timeseries",
"name": "Time series",
"version": ""
}
],
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": null,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 0,
"y": 0
},
"id": 4,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(otelcol_receiver_accepted_spans[$__rate_interval])) by (transport)",
"legendFormat": "accepted {{transport}}",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(otelcol_exporter_sent_spans[$__rate_interval])) by (exporter)",
"hide": false,
"legendFormat": "exporter {{exporter}}",
"range": true,
"refId": "B"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(processedSpans[$__rate_interval]))",
"hide": false,
"legendFormat": "java batch exporter",
"range": true,
"refId": "C"
}
],
"title": "Created, received, and exported spans, rps",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 6,
"y": 0
},
"id": 16,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(otelcol_exporter_enqueue_failed_spans[$__rate_interval])) by (exporter)",
"legendFormat": "export failed - {{exporter}}",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(otelcol_receiver_refused_spans[$__rate_interval])) by (transport)",
"hide": false,
"legendFormat": "receiver refused - {{transport}}",
"range": true,
"refId": "B"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(processedSpans{dropped=\"true\"}[$__rate_interval]))",
"hide": false,
"legendFormat": "dropped by java batch processor",
"range": true,
"refId": "C"
}
],
"title": "Dropped spans",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 12,
"y": 0
},
"id": 18,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "max(queueSize) by (exported_job)",
"legendFormat": "queue size {{exported_job}}",
"range": true,
"refId": "A"
}
],
"title": "Java Batch processor queue size",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 0,
"y": 8
},
"id": 2,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "max(rate(otelcol_process_cpu_seconds[$__rate_interval]) * 100) by (transport)",
"legendFormat": "max CPU {{transport}}",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "min(rate(otelcol_process_cpu_seconds[$__rate_interval]) * 100) by (transport)",
"hide": false,
"legendFormat": "min CPU {{transport}}",
"range": true,
"refId": "B"
}
],
"title": "CPU %",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 6,
"y": 8
},
"id": 8,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "max(otelcol_process_runtime_heap_alloc_bytes) / 1024 / 1024",
"legendFormat": "heapalloc",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "otelcol_process_memory_rss / 1024 / 1024",
"hide": false,
"legendFormat": "rss",
"range": true,
"refId": "C"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "rate(otelcol_process_runtime_total_alloc_bytes[$__rate_interval]) / 1024 / 1024",
"hide": false,
"legendFormat": "totalalloc",
"range": true,
"refId": "B"
}
],
"title": "Memory, MB",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 12,
"y": 8
},
"id": 10,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "otelcol_process_uptime",
"legendFormat": "{{service_instance_id}}",
"range": true,
"refId": "A"
}
],
"title": "Uptime",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 0,
"y": 16
},
"id": 12,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(otelcol_processor_batch_timeout_trigger_send[$__rate_interval])) by (processor)",
"legendFormat": "timeout trigger",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "sum(rate(otelcol_processor_batch_batch_size_trigger_send[$__rate_interval])) by (processor)",
"hide": false,
"legendFormat": "size trigger",
"range": true,
"refId": "B"
}
],
"title": "Batch processor, send rates",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 6,
"y": 16
},
"id": 14,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "histogram_quantile(0.95, sum(rate(otelcol_processor_batch_batch_send_size_bucket[$__rate_interval])) by (le))",
"legendFormat": "P95",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "histogram_quantile(0.5, sum(rate(otelcol_processor_batch_batch_send_size_bucket[$__rate_interval])) by (le))",
"hide": false,
"legendFormat": "P50",
"range": true,
"refId": "B"
}
],
"title": "Batch size distribution ",
"type": "timeseries"
}
],
"refresh": "5s",
"schemaVersion": 37,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "2023-03-25T00:30:07.000Z",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "OtelCol",
"uid": "LZPpoKfVk",
"version": 8,
"weekStart": ""
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment