-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
Component(s)
receiver/googlecloudspanner
What happened?
Description
The googlecloudspanner receiver in the OpenTelemetry Collector is failing to scrape metrics from Google Cloud Spanner. Spanner returns an error indicating "Invalid parameter name" for parameters like topmetricsquerymaxrows and pulltimestamp. This suggests the receiver is constructing SQL queries with parameter names that Spanner does not accept in that format.
Steps to Reproduce
- Configure the OpenTelemetry Collector with the
googlecloudspannerreceiver. - Use an OpenTelemetry Collector image: otel/opentelemetry-collector-contrib: 0.127.0
- Observe the collector logs for errors originating from the
googlecloudspannerreceiver.
Expected Result
The googlecloudspanner receiver should successfully scrape metrics from the configured Spanner instances and databases without errors.
Actual Result
The collector logs show errors similar to the following:
Error scraping metrics {"otelcol.component.id": "googlecloudspanner", "otelcol.component.kind": "Receiver", "otelcol.signal": "metrics", "error": "cannot read data for data points databaseReader "active queries summary ::<instance_id>::
" because of an error: query "SELECT * FROM SPANNER_SYS.ACTIVE_QUERIES_SUMMARY LIMIT @topMetricsQueryMaxRows" failed with error: spanner: code = "InvalidArgument", desc = "Invalid parameter name: topmetricsquerymaxrows. Expected one of 'p1', 'p2', ..., 'p65535'",
Collector version
0.127.0
Environment information
Environment
Platform: GKE (v1.31.8-gke.1045000)
OpenTelemetry Helm Chart: open-telemetry/opentelemetry-collector, version: 0.127.1
Container Image: otel/opentelemetry-collector-contrib: 0.127.0
OpenTelemetry Collector configuration
image:
repository: "otel/opentelemetry-collector-contrib"
tag: "0.127.0"
config:
receivers:
googlecloudspanner:
collection_interval: 60s
# top_metrics_query_max_rows: 100
# backfill_enabled: true
projects:
- project_id: "<project>"
instances:
- instance_id: "<instance-id>
databases:
- "<database>"
processors:
resource:
batch:
send_batch_size: 2048
timeout: 200ms
send_batch_max_size: 8192
exporters:
prometheusremotewrite:
endpoint: "<prometheus-endpoint>"
service:
pipelines:
metrics:
receivers: [googlecloudspanner]
processors: [batch]
exporters: [prometheusremotewrite]Log output
Error scraping metrics {"otelcol.component.id": "googlecloudspanner", "otelcol.component.kind": "Receiver", "otelcol.signal": "metrics", "error": "cannot read data for data points databaseReader \"active queries summary <project>::<instance_id>::
<db>\" because of an error: query \"SELECT * FROM SPANNER_SYS.ACTIVE_QUERIES_SUMMARY LIMIT @topMetricsQueryMaxRows\" failed with error: spanner: code = \"InvalidArgument\", desc = \"Invalid parameter name: topmetricsquerymaxrows. Expected one of 'p1', 'p2', ..., 'p65535'\", ...
cannot read data for data points databaseReader \"top minute lock stats <project>::<instance>::<db>\" because of an error: query \"SELECT * FROM SPANNER_SYS.LOCK_STATS_TOP_MINUTE WHERE INTERVAL_END = @pullTimestamp ORDER BY INTERVAL_END DESC, LOCK_WAIT_SECONDS DESC LIMIT @topMetricsQueryMaxRows\" failed with error: spanner: code = \"InvalidArgument\", desc = \"Invalid parameter name: pulltimestamp. Expected one of 'p1', 'p2', ..., 'p65535'Additional context
No response