Root cause:
In stackdriver_exporter.go the SplitExtraFilter function uses : as a separator to split the metric prefix from the filter value:
`utils.SplitExtraFilter(ef, ":")
This breaks when the `database_id` value contains `:`, for example:
project:instance`
Fix:
`sed -i 's/utils.SplitExtraFilter(ef, ":")/utils.SplitExtraFilter(ef, "|")/' stackdriver_exporter.go
This changes the separator to `|`, so flags are written as:
--monitoring.filters=cloudsql.googleapis.com/database/up|resource.labels.database_id="project:instance"`
Steps to reproduce:
- Set --monitoring.filters=cloudsql.googleapis.com/database/up:resource.labels.database_id="project:instance"
- Exporter does not apply the filter and returns metrics for all instances
Expected: Filter is applied, only the selected instance is returned
Actual: Filter is silently ignored, all instances are returned
Environment:
- stackdriver_exporter master branch (go 1.24.0)
- Google CloudSQL database metrics
- database_id format: project-id:instance-name (contains :)
Root cause:
In stackdriver_exporter.go the SplitExtraFilter function uses : as a separator to split the metric prefix from the filter value:
`utils.SplitExtraFilter(ef, ":")
project:instance`
Fix:
`sed -i 's/utils.SplitExtraFilter(ef, ":")/utils.SplitExtraFilter(ef, "|")/' stackdriver_exporter.go
--monitoring.filters=cloudsql.googleapis.com/database/up|resource.labels.database_id="project:instance"`
Steps to reproduce:
Expected: Filter is applied, only the selected instance is returned
Actual: Filter is silently ignored, all instances are returned
Environment: