diff --git a/collector/perf_schema_file_instances.go b/collector/perf_schema_file_instances.go index 148a749..a36b68b 100644 --- a/collector/perf_schema_file_instances.go +++ b/collector/perf_schema_file_instances.go @@ -14,7 +14,7 @@ import ( const perfFileInstancesQuery = ` SELECT - FILE_NAME, + FILE_NAME, EVENT_NAME, COUNT_READ, COUNT_WRITE, SUM_NUMBER_OF_BYTES_READ, SUM_NUMBER_OF_BYTES_WRITE FROM performance_schema.file_summary_by_instance @@ -29,19 +29,19 @@ var ( ) performanceSchemaFileInstancesRemovePrefix = flag.Bool( - "collect.perf_schema.file_instances.remove_prefix", true, + "collect.perf_schema.file_instances.remove_prefix", false, "Remove path prefix in performance_schema.file_summary_by_instance", ) performanceSchemaFileInstancesBytesDesc = prometheus.NewDesc( prometheus.BuildFQName(namespace, performanceSchema, "file_instances_bytes"), "The number of bytes processed by file read/write operations.", - []string{"file_name", "mode"}, nil, + []string{"file_name", "event_name", "mode"}, nil, ) performanceSchemaFileInstancesCountDesc = prometheus.NewDesc( prometheus.BuildFQName(namespace, performanceSchema, "file_instances_total"), "The total number of file read/write operations.", - []string{"file_name", "mode"}, nil, + []string{"file_name", "event_name", "mode"}, nil, ) ) @@ -55,14 +55,14 @@ func ScrapePerfFileInstances(db *sql.DB, ch chan<- prometheus.Metric) error { defer perfSchemaFileInstancesRows.Close() var ( - fileName string + fileName, eventName string countRead, countWrite uint64 sumBytesRead, sumBytesWritten uint64 ) for perfSchemaFileInstancesRows.Next() { if err := perfSchemaFileInstancesRows.Scan( - &fileName, + &fileName, &eventName, &countRead, &countWrite, &sumBytesRead, &sumBytesWritten, ); err != nil { @@ -74,19 +74,19 @@ func ScrapePerfFileInstances(db *sql.DB, ch chan<- prometheus.Metric) error { } ch <- prometheus.MustNewConstMetric( performanceSchemaFileInstancesCountDesc, prometheus.CounterValue, float64(countRead), - fileName, "read", + fileName, eventName, "read", ) ch <- prometheus.MustNewConstMetric( performanceSchemaFileInstancesCountDesc, prometheus.CounterValue, float64(countWrite), - fileName, "write", + fileName, eventName, "write", ) ch <- prometheus.MustNewConstMetric( performanceSchemaFileInstancesBytesDesc, prometheus.CounterValue, float64(sumBytesRead), - fileName, "read", + fileName, eventName, "read", ) ch <- prometheus.MustNewConstMetric( performanceSchemaFileInstancesBytesDesc, prometheus.CounterValue, float64(sumBytesWritten), - fileName, "write", + fileName, eventName, "write", ) } diff --git a/collector/perf_schema_file_instances_test.go b/collector/perf_schema_file_instances_test.go index 474a84e..b547ea6 100644 --- a/collector/perf_schema_file_instances_test.go +++ b/collector/perf_schema_file_instances_test.go @@ -23,11 +23,11 @@ func TestScrapePerfFileInstances(t *testing.T) { } defer db.Close() - columns := []string{"FILE_NAME", "COUNT_READ", "COUNT_WRITE", "SUM_NUMBER_OF_BYTES_READ", "SUM_NUMBER_OF_BYTES_WRITE"} + columns := []string{"FILE_NAME", "EVENT_NAME", "COUNT_READ", "COUNT_WRITE", "SUM_NUMBER_OF_BYTES_READ", "SUM_NUMBER_OF_BYTES_WRITE"} rows := sqlmock.NewRows(columns). - AddRow("file_1", "3", "4", "725", "128"). - AddRow("file_2", "23", "12", "3123", "967") + AddRow("file_1", "event1", "3", "4", "725", "128"). + AddRow("file_2", "event2", "23", "12", "3123", "967") mock.ExpectQuery(sanitizeQuery(perfFileInstancesQuery)).WillReturnRows(rows) ch := make(chan prometheus.Metric) @@ -39,14 +39,14 @@ func TestScrapePerfFileInstances(t *testing.T) { }() metricExpected := []MetricResult{ - {labels: labelMap{"file_name": "file_1", "mode": "read"}, value: 3, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_1", "mode": "write"}, value: 4, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_1", "mode": "read"}, value: 725, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_1", "mode": "write"}, value: 128, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_2", "mode": "read"}, value: 23, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_2", "mode": "write"}, value: 12, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_2", "mode": "read"}, value: 3123, metricType: dto.MetricType_COUNTER}, - {labels: labelMap{"file_name": "file_2", "mode": "write"}, value: 967, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_1", "event_name": "event1", "mode": "read"}, value: 3, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_1", "event_name": "event1", "mode": "write"}, value: 4, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_1", "event_name": "event1", "mode": "read"}, value: 725, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_1", "event_name": "event1", "mode": "write"}, value: 128, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_2", "event_name": "event2", "mode": "read"}, value: 23, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_2", "event_name": "event2", "mode": "write"}, value: 12, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_2", "event_name": "event2", "mode": "read"}, value: 3123, metricType: dto.MetricType_COUNTER}, + {labels: labelMap{"file_name": "file_2", "event_name": "event2", "mode": "write"}, value: 967, metricType: dto.MetricType_COUNTER}, } convey.Convey("Metrics comparison", t, func() { for _, expect := range metricExpected {