-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
Component(s)
cmd/mdatagen
What happened?
Describe the bug
When using the optional key semantic_convention: in the metadata.yaml schema and running make generate, for example in otel-collector-contrib (this uses mdatagen), an error is thrown if there is an underscore in the anchor tag in the ref url.
Steps to reproduce
- Using
make generatein otel-collector-contrib` - Using this valid semantic conventions url:
https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_timeCauses this error:
Error: failed loading /home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper/metadata.yaml: metric "system.disk.io_time": invalid semantic-conventions URL: want https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/*#metric-systemdiskiotime, got "https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_time"
Error: failed loading /home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper/metadata.yaml: metric "system.disk.io_time": invalid semantic-conventions URL: want https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/*#metric-systemdiskiotime, got "https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_time"
make[1]: *** [../../../../../Makefile.Common:264: mdatagen] Error 1
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper'
internal/scraper/diskscraper/doc.go:4: running "make": exit status 2What did you expect to see?
We expect the generation to complete without any errors
What did you see instead?
An error occured:
Error: failed loading /home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper/metadata.yaml: metric "system.disk.io_time": invalid semantic-conventions URL: want https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/*#metric-systemdiskiotime, got "https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_time"
Error: failed loading /home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper/metadata.yaml: metric "system.disk.io_time": invalid semantic-conventions URL: want https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/*#metric-systemdiskiotime, got "https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_time"
make[1]: *** [../../../../../Makefile.Common:264: mdatagen] Error 1
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper'
internal/scraper/diskscraper/doc.go:4: running "make": exit status 2Fix
This should be a simple fix, in cmd/mdatagen/internal/metrics.go we have:
var reNonAlnum = regexp.MustCompile(`[^a-z0-9]+`)To fix the issue we just have to add an underscore to the regexp:
var reNonAlnum = regexp.MustCompile(`[^a-z0-9_]+`)Collector version
a810b2d6fd4bc738e4570243409dce3fb148a5b7
Environment information
Environment
OS: (Operating System: Arch Linux, Kernel: Linux 6.17.9-arch1-1)
Compiler(go version go1.25.5 X:nodwarf5 linux/amd64)
OpenTelemetry Collector configuration
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
hostmetrics:
collection_interval: 5s
scrapers:
cpu:
memory:
metrics:
system.memory.limit:
enabled: true
disk:
processors:
batch:
exporters:
debug:
verbosity: detailed
otlp/jaeger:
endpoint: localhost:14317
tls:
insecure: true
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
receivers: [otlp, hostmetrics]
processors: [batch]
exporters: [debug]Log output
…/receiver/hostmetricsreceiver main ❯ make generate
cd /home/dos/Documents/opentelemetry-collector-contrib/internal/tools && GOOS="" GOARCH="" go build -o /home/dos/Documents/opentelemetry-collector-contrib/.tools/genqlient -trimpath github.com/Khan/genqlient
PATH="/home/dos/Documents/opentelemetry-collector-contrib/.tools:$PATH" go generate ./...
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/cpuscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/cpuscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper'
Error: failed loading /home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper/metadata.yaml: metric "system.disk.io_time": invalid semantic-conventions URL: want https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/*#metric-systemdiskiotime, got "https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_time"
Error: failed loading /home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper/metadata.yaml: metric "system.disk.io_time": invalid semantic-conventions URL: want https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/*#metric-systemdiskiotime, got "https://github.com/open-telemetry/semantic-conventions/blob/v1.38.0/docs/system/system-metrics.md#metric-systemdiskio_time"
make[1]: *** [../../../../../Makefile.Common:264: mdatagen] Error 1
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/diskscraper'
internal/scraper/diskscraper/doc.go:4: running "make": exit status 2
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/filesystemscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/loadscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/loadscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/memoryscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/memoryscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/networkscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/networkscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/nfsscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/nfsscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/pagingscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/pagingscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/processesscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/processesscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/processscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/processscraper'
make[1]: Entering directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/systemscraper'
make[1]: Leaving directory '/home/dos/Documents/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/systemscraper'
make: *** [../../Makefile.Common:282: generate] Error 1Additional context
No response
Tip
React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.