为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: dm8 20240115
【操作系统】:centos
【CPU】: x86
【问题描述】*:
time="2025-04-25T23:44:28Z" level=info msg="Starting dmdb_exporter 0.0.0.dev" source="main.go:400"
time="2025-04-25T23:44:28Z" level=info msg="Successfully loaded default metrics from: default-metrics.toml" source="main.go:411"
time="2025-04-25T23:44:28Z" level=info msg="No custom metrics defined." source="main.go:425"
time="2025-04-25T23:44:34Z" level=error msg="Error scraping for tablespace _ map[free_percent:Generic counter metric of tablespaces free percent in DmService. free_space:Generic counter metric of tablespaces free space MB in DmService. max_free_percent:Generic counter metric of tablespaces max free percent in DmService. max_space:Generic counter metric of tablespaces max space MB in DmService. total_space:Generic counter metric of tablespaces total space MB in DmService.] : Error -6103: 除0错误\nstack info:\n 1). dmdb_exporter/vendor/dm.(*dm_build_1099).dm_build_1132\n \t/go/src/dmdb_exporter/vendor/dm/zr.go:707\n 2). dmdb_exporter/vendor/dm.(*dm_build_1099).dm_build_1088\n \t/go/src/dmdb_exporter/vendor/dm/zr.go:694\n 3). dmdb_exporter/vendor/dm.(*dm_build_1099).dm_build_1091\n \t/go/src/dmdb_exporter/vendor/dm/zr.go:744\n 4). dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_730\n \t/go/src/dmdb_exporter/vendor/dm/a.go:260\n 5). dmdb_exporter/vendor/dm.(*dm_build_690).Dm_build_757\n \t/go/src/dmdb_exporter/vendor/dm/a.go:351\n 6). dmdb_exporter/vendor/dm.(*dm_build_690).Dm_build_775\n \t/go/src/dmdb_exporter/vendor/dm/a.go:372\n 7). dmdb_exporter/vendor/dm.(*DmConnection).executeInner\n \t/go/src/dmdb_exporter/vendor/dm/n.go:201\n 8). dmdb_exporter/vendor/dm.(*DmConnection).queryContext\n \t/go/src/dmdb_exporter/vendor/dm/n.go:641\n 9). dmdb_exporter/vendor/dm.(*DmConnection).QueryContext\n \t/go/src/dmdb_exporter/vendor/dm/n.go:302\n 10). database/sql.ctxDriverQuery\n \t/usr/local/go/src/database/sql/ctxutil.go:48\n 11). database/sql.(*DB).queryDC.func1\n \t/usr/local/go/src/database/sql/sql.go:1759\n 12). database/sql.withLock\n \t/usr/local/go/src/database/sql/sql.go:3437\n 13). database/sql.(*DB).queryDC\n \t/usr/local/go/src/database/sql/sql.go:1754\n 14). database/sql.(*DB).query\n \t/usr/local/go/src/database/sql/sql.go:1737\n 15). database/sql.(*DB).QueryContext\n \t/usr/local/go/src/database/sql/sql.go:1710\n 16). main.GeneratePrometheusMetrics\n \t/go/src/dmdb_exporter/main.go:334\n 17). main.ScrapeGenericValues\n \t/go/src/dmdb_exporter/main.go:304\n 18). main.ScrapeMetric\n \t/go/src/dmdb_exporter/main.go:257\n 19). main.(*Exporter).scrape.func2\n \t/go/src/dmdb_exporter/main.go:226\n 20). runtime.goexit\n \t/usr/local/go/src/runtime/asm_amd64.s:1571\n" source="main.go:227"
<nil>
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0xf8 pc=0x82425d]
goroutine 182 [running]:
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_720.func1()
/go/src/dmdb_exporter/vendor/dm/a.go:111 +0xd4
panic({0x96fbc0, 0xf04ab0})
/usr/local/go/src/runtime/panic.go:838 +0x207
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_952(...)
/go/src/dmdb_exporter/vendor/dm/a.go:816
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_720(0xc00031c1e0, {0xae99d8, 0xc000c9e1e0})
/go/src/dmdb_exporter/vendor/dm/a.go:154 +0x43d
dmdb_exporter/vendor/dm.(*dm_build_690).dm_build_730(0x1?, {0xae99d8, 0xc000c9e1e0})
/go/src/dmdb_exporter/vendor/dm/a.go:250 +0x49
dmdb_exporter/vendor/dm.(*dm_build_690).Dm_build_752(0xc00031c1e0, 0x0)
/go/src/dmdb_exporter/vendor/dm/a.go:341 +0x6e
dmdb_exporter/vendor/dm.(*DmStatement).free(0xc000bb8140)
/go/src/dmdb_exporter/vendor/dm/v.go:510 +0x9e
dmdb_exporter/vendor/dm.(*DmStatement).close(0xc00031c1e0?)
/go/src/dmdb_exporter/vendor/dm/v.go:360 +0x58
dmdb_exporter/vendor/dm.(*DmConnection).executeInner(0xc000338c80, {0xc0001e596a, 0x17d}, 0x1)
/go/src/dmdb_exporter/vendor/dm/n.go:205 +0x8ef
dmdb_exporter/vendor/dm.(*DmConnection).queryContext(0xc000338c80, {0xae6178, 0xc000378600}, {0xc0001e596a, 0x17d}, {0xf622c0, 0x0, 0x0})
/go/src/dmdb_exporter/vendor/dm/n.go:641 +0x231
dmdb_exporter/vendor/dm.(*DmConnection).QueryContext(0x0?, {0xae6178?, 0xc000378600?}, {0xc0001e596a?, 0x4?}, {0xf622c0?, 0x8?, 0xc0002cb7b0?})
/go/src/dmdb_exporter/vendor/dm/n.go:302 +0x3e
database/sql.ctxDriverQuery({0xae6178?, 0xc000378600?}, {0x7f6670bca008?, 0xc000338c80?}, {0x0?, 0x0?}, {0xc0001e596a?, 0x0?}, {0xf622c0, 0x0, ...})
/usr/local/go/src/database/sql/ctxutil.go:48 +0xe5
database/sql.(*DB).queryDC.func1()
/usr/local/go/src/database/sql/sql.go:1759 +0x175
database/sql.withLock({0xae3728, 0xc000aa0ea0}, 0xc0002cb9e8)
/usr/local/go/src/database/sql/sql.go:3437 +0x8c
database/sql.(*DB).queryDC(0xc1fb25792005f001?, {0xae6178, 0xc000378600}, {0x0, 0x0}, 0xc000aa0ea0, 0xc000370410, {0xc0001e596a, 0x17d}, {0x0, ...})
/usr/local/go/src/database/sql/sql.go:1754 +0x211
database/sql.(*DB).query(0x0?, {0xae6178, 0xc000378600}, {0xc0001e596a, 0x17d}, {0x0, 0x0, 0x0}, 0x40?)
/usr/local/go/src/database/sql/sql.go:1737 +0xfd
database/sql.(*DB).QueryContext(0xae6140?, {0xae6178, 0xc000378600}, {0xc0001e596a, 0x17d}, {0x0, 0x0, 0x0})
/usr/local/go/src/database/sql/sql.go:1710 +0xda
main.GeneratePrometheusMetrics(0xc0001ff4f0?, 0xc0002cbd50, {0xc0001e596a, 0x17d})
/go/src/dmdb_exporter/main.go:334 +0x1ae
main.ScrapeGenericValues(0x0?, 0x0?, {0xc0000264c8?, 0x0?}, {0xc0001fe610?, 0x0?, 0xc0002a2e50?}, 0x8ff20b?, 0xc0002a2e50?, {0x0, ...}, ...)
/go/src/dmdb_exporter/main.go:304 +0xe5
main.ScrapeMetric(0x65756c6176050a14?, 0x552012801200218?, {{0xc0000264c8, 0xe}, {0xc0001fe610, 0x1, 0x1}, 0xc0001faa80, 0x0, {0x0, ...}, ...})
/go/src/dmdb_exporter/main.go:257 +0xfa
main.(*Exporter).scrape.func2()
/go/src/dmdb_exporter/main.go:226 +0x565
created by main.(*Exporter).scrape
/go/src/dmdb_exporter/main.go:206 +0x532
怎么解决这个panic?
这个是go驱动panic的代码