nshttpd / mikrotik-exporter

prometheus mikrotik device(s) exporter
BSD 3-Clause "New" or "Revised" License
550 stars 153 forks source link

exporter dies with panic: label value [...] is not valid UTF-8 when having interface comments with Umlauts #142

Open mattiwei opened 2 years ago

mattiwei commented 2 years ago

When scraping a Mikrotik v7.2.3, the exporter dies when an Interface comment contains an Umlaut (German ü) with the following error message:

panic: label value "078xxxxxxx 50GB/Month 12.50Fr. , Monat beginnt jeweils am 9. Abo bis 16.08.2023, 60 Tage im Voraus k\xfcnden." is not valid UTF-8

goroutine 35 [running]: github.com/prometheus/client_golang/prometheus.MustNewConstMetric(...) /root/go/pkg/mod/github.com/prometheus/client_golang@v1.4.1/prometheus/value.go:105 mikrotik-exporter/collector.(interfaceCollector).collectMetricForProperty(0x7fae8e5d3008?, {0x889f93, 0xa}, 0xc0000daf80, 0xc00000e270) /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/interface_collector.go:104 +0x71d mikrotik-exporter/collector.(interfaceCollector).collectForStat(...) /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/interface_collector.go:66 mikrotik-exporter/collector.(interfaceCollector).collect(0xc0000ca500, 0xc000198180?) /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/interface_collector.go:45 +0xfa mikrotik-exporter/collector.(collector).connectAndCollect(0xc0000da9c0, 0xc000198180, 0xc000070240) /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/collector.go:355 +0x36d mikrotik-exporter/collector.(collector).collectForDevice(0xc000222768?, {{0x7fffb6995840, 0x9}, {0x7fffb6995819, 0xc}, {{0x0, 0x0}, {{0x0, 0x0}, 0x0}}, ...}, ...) /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/collector.go:326 +0xe5 mikrotik-exporter/collector.(collector).Collect.func1({{0x7fffb6995840, 0x9}, {0x7fffb6995819, 0xc}, {{0x0, 0x0}, {{0x0, 0x0}, 0x0}}, {0x7fffb6995850, ...}, ...}) /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/collector.go:291 +0x78 created by mikrotik-exporter/collector.(*collector).Collect /var/lib/prometheus/mikrotik-exporter/mikrotik-exporter/collector/collector.go:290 +0x285

Unfortunately, my golang skills are very limited, I would have tried to fix it myself if I could..

Here's what I was able to figure out so far: