diff --git a/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help.out b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help.out new file mode 100644 index 0000000000..38c23a044a --- /dev/null +++ b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help.out @@ -0,0 +1,12 @@ +# HELP foo First help text. +# TYPE foo gauge +foo{file="a"} 1 +# HELP node_textfile_mtime_seconds Unixtime mtime of textfiles successfully read. +# TYPE node_textfile_mtime_seconds gauge +node_textfile_mtime_seconds{file="fixtures/textfile/metrics_merge_inconsistent_then_no_help/a.prom"} 1 +node_textfile_mtime_seconds{file="fixtures/textfile/metrics_merge_inconsistent_then_no_help/b.prom"} 1 +node_textfile_mtime_seconds{file="fixtures/textfile/metrics_merge_inconsistent_then_no_help/c.prom"} 1 +node_textfile_mtime_seconds{file="fixtures/textfile/metrics_merge_inconsistent_then_no_help/d.prom"} 1 +# HELP node_textfile_scrape_error 1 if there was an error opening or reading a file, 0 otherwise +# TYPE node_textfile_scrape_error gauge +node_textfile_scrape_error 1 diff --git a/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/a.prom b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/a.prom new file mode 100644 index 0000000000..4e727fd6d5 --- /dev/null +++ b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/a.prom @@ -0,0 +1,3 @@ +# HELP foo First help text. +# TYPE foo gauge +foo{file="a"} 1 diff --git a/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/b.prom b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/b.prom new file mode 100644 index 0000000000..b094d1087e --- /dev/null +++ b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/b.prom @@ -0,0 +1,3 @@ +# HELP foo Second help text. +# TYPE foo gauge +foo{file="b"} 2 diff --git a/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/c.prom b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/c.prom new file mode 100644 index 0000000000..7e6cf1efa5 --- /dev/null +++ b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/c.prom @@ -0,0 +1,2 @@ +# TYPE foo gauge +foo{file="c"} 3 diff --git a/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/d.prom b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/d.prom new file mode 100644 index 0000000000..3569ccf392 --- /dev/null +++ b/collector/fixtures/textfile/metrics_merge_inconsistent_then_no_help/d.prom @@ -0,0 +1,3 @@ +# HELP foo First help text. +# TYPE foo gauge +foo{file="d"} 4 diff --git a/collector/textfile.go b/collector/textfile.go index 6629eb9d8e..8e4055f297 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -219,12 +219,14 @@ func (c *textFileCollector) Update(ch chan<- prometheus.Metric) error { // Check for metrics with inconsistent help texts and take the first help text occurrence. if helpTexts, seen := metricsNamesToHelpTexts[*mf.Name]; seen { if mf.Help != nil && helpTexts[0] != *mf.Help || helpTexts[1] != "" { - metricsNamesToHelpTexts[*mf.Name] = [2]string{helpTexts[0], *mf.Help} + if mf.Help != nil { + metricsNamesToHelpTexts[*mf.Name] = [2]string{helpTexts[0], *mf.Help} + } errored = true c.logger.Error("inconsistent metric help text", "metric", *mf.Name, "original_help_text", helpTexts[0], - "new_help_text", *mf.Help, + "new_help_text", mf.GetHelp(), // Only the first file path will be recorded in case of two or more inconsistent help texts. "file", metricsNamesToFiles[*mf.Name][0]) continue diff --git a/collector/textfile_test.go b/collector/textfile_test.go index 222ffa8fee..1412377c66 100644 --- a/collector/textfile_test.go +++ b/collector/textfile_test.go @@ -122,6 +122,10 @@ func TestTextfileCollector(t *testing.T) { paths: []string{"fixtures/textfile/metrics_merge_different_help"}, out: "fixtures/textfile/metrics_merge_different_help.out", }, + { + paths: []string{"fixtures/textfile/metrics_merge_inconsistent_then_no_help"}, + out: "fixtures/textfile/metrics_merge_inconsistent_then_no_help.out", + }, } for i, test := range tests {