prometheus-community / prometheus-community/stackdriver_exporter

Error if using in filters metadata.user_labels.

Open
#280 1 comment 9 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
295
Forks
117
Avg merge
9d 14h
Merged PRs (30d)
7

Description

Hello,
I want to collect GKE metrics from GCP Monitoring.

if i run:

stackdriver_exporter 
    --google.project-id=qa 
    --monitoring.metrics-type-prefixes "kubernetes.io/node/memory/used_bytes"  
    --monitoring.filters 'kubernetes.io/node/memory/used_bytes:resource.label."cluster_name"="cluster00"' 
    --log.level=debug

metrics collecting and all right

ts=2023-11-28T14:38:27.542Z caller=monitoring_collector.go:372 level=debug msg="listing Google Stackdriver Monitoring metric descriptors starting with" prefix=kubernetes.io/node/memory/used_bytes ts=2023-11-28T14:38:28.314Z caller=monitoring_collector.go:274 level=debug msg="retrieving Google Stackdriver Monitoring metrics for descriptor" descriptor=kubernetes.io/node/memory/used_bytes ts=2023-11-28T14:38:28.315Z caller=monitoring_collector.go:304 level=debug msg="retrieving Google Stackdriver Monitoring metrics with filter" filter="metric.type=\"kubernetes.io/node/memory/used_bytes\" AND (resource.label.\"cluster_name\"=\"cluster_name\")" ts=2023-11-28T14:38:28.465Z caller=monitoring_collector.go:387 level=debug msg="Done reporting monitoring metrics"

but if add the additional filter from metadata.user_labels collection and run it:

stackdriver_exporter 
    --google.project-id=qa 
    --monitoring.metrics-type-prefixes "kubernetes.io/node/memory/used_bytes" 
    --monitoring.filters 'kubernetes.io/node/memory/used_bytes:resource.label."cluster_name"="cluster00" AND metadata.user_labels."beta.kubernetes.io/os"="windows"' 
    --log.level=debug

i receive the error:
ts=2023-11-28T14:44:19.693Z caller=monitoring_collector.go:274 level=debug msg="retrieving Google Stackdriver Monitoring metrics for descriptor" descriptor=kubernetes.io/node/memory/used_bytes ts=2023-11-28T14:44:19.694Z caller=monitoring_collector.go:304 level=debug msg="retrieving Google Stackdriver Monitoring metrics with filter" filter="metric.type=\"kubernetes.io/node/memory/used_bytes\" AND (resource.label.\"cluster_name\"=\"cluster_name\" AND metadata.user_labels.\"beta.kubernetes.io/os\"=\"windows\")" ts=2023-11-28T14:44:19.857Z caller=monitoring_collector.go:315 level=error msg="error retrieving Time Series metrics for descriptor" descriptor=kubernetes.io/node/memory/used_bytes err="googleapi: Error 400: Field filter had an invalid value of \"metric.type=\"kubernetes.io/node/memory/used_bytes\" AND (resource.label.\"cluster_name\"=\"cluster_name\" AND metadata.user_labels.\"beta.kubernetes.io/os\"=\"windows\")\": Resource metadata filters are only allowed on aligned metrics., badRequest" ts=2023-11-28T14:44:19.857Z caller=monitoring_collector.go:387 level=debug msg="Done reporting monitoring metrics"

i try to use the command:

stackdriver_exporter 
      --google.project-id=qa 
      --monitoring.metrics-type-prefixes "kubernetes.io/node/memory/used_bytes" 
      --monitoring.filters 'kubernetes.io/node/memory/used_bytes:resource.label."cluster_name"="cluster00"' 
      --monitoring.filters 'kubernetes.io/node/memory/used_bytes:metadata.user_labels."beta.kubernetes.io/os"="windows"'
      --log.level=debug

error:
ts=2023-11-28T14:47:13.104Z caller=monitoring_collector.go:315 level=error msg="error retrieving Time Series metrics for descriptor" descriptor=kubernetes.io/node/memory/used_bytes err="googleapi: Error 400: Field filter had an invalid value of \"metric.type=\"kubernetes.io/node/memory/used_bytes\" AND (resource.label.\"cluster_name\"=\"cluster_name\") AND (metadata.user_labels.\"beta.kubernetes.io/os\"=\"windows\")\": Resource metadata filters are only allowed on aligned metrics., badRequest" ts=2023-11-28T14:47:13.104Z caller=monitoring_collector.go:228 level=error msg="Error while getting Google Stackdriver Monitoring metrics" err="googleapi: Error 400: Field filter had an invalid value of \"metric.type=\"kubernetes.io/node/memory/used_bytes\" AND (resource.label.\"cluster_name\"=\"cluster_name\") AND (metadata.user_labels.\"beta.kubernetes.io/os\"=\"windows\")\": Resource metadata filters are only allowed on aligned metrics., badRequest"

how i can select metrics with using metadata.user_labels. ?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in monitoring_collector.go, where the filter is constructed and the Google Monitoring request error is logged. Reproduce the two filter forms, then check the Google Cloud Monitoring filter requirements for metadata.user_labels on this metric. Done means the supported behavior is established and the exporter either handles it correctly or reports the limitation clearly.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, google-cloud
Domain
observability
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.