Skip to content

Commit

Permalink
Add perf_schema quantile columns to collector
Browse files Browse the repository at this point in the history
This change appends the 3 quantile columns exposed in the
events_statements_summary_by_digest table to the
perf_schema_events_statements collector so that they are available
as metrics

Signed-off-by: Matt Nolf <matt.nolf@grafana.com>
  • Loading branch information
matthewnolf committed Nov 25, 2024
1 parent d6ae7aa commit 85082aa
Showing 1 changed file with 37 additions and 3 deletions.
40 changes: 37 additions & 3 deletions collector/perf_schema_events_statements.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ const perfEventsStatementsQuery = `
SUM_CREATED_TMP_TABLES,
SUM_SORT_MERGE_PASSES,
SUM_SORT_ROWS,
SUM_NO_INDEX_USED
SUM_NO_INDEX_USED,
QUANTILE_95,
QUANTILE_99,
QUANTILE_999
FROM (
SELECT *
FROM performance_schema.events_statements_summary_by_digest
Expand All @@ -67,7 +70,10 @@ const perfEventsStatementsQuery = `
Q.SUM_CREATED_TMP_TABLES,
Q.SUM_SORT_MERGE_PASSES,
Q.SUM_SORT_ROWS,
Q.SUM_NO_INDEX_USED
Q.SUM_NO_INDEX_USED,
Q.QUANTILE_95,
Q.QUANTILE_99,
Q.QUANTILE_999
ORDER BY SUM_TIMER_WAIT DESC
LIMIT %d
`
Expand Down Expand Up @@ -160,6 +166,21 @@ var (
"The total number of statements that used full table scans by digest.",
[]string{"schema", "digest", "digest_text"}, nil,
)
performanceSchemaEventsStatementsQuantile95 = prometheus.NewDesc(
prometheus.BuildFQName(namespace, performanceSchema, "events_statements_quantile_95"),
"The 95th percentile of the statement latency, in picoseconds.",
[]string{"schema", "digest", "digest_text"}, nil,
)
performanceSchemaEventsStatementsQuantile99 = prometheus.NewDesc(
prometheus.BuildFQName(namespace, performanceSchema, "events_statements_quantile_99"),
"The 99th percentile of the statement latency, in picoseconds.",
[]string{"schema", "digest", "digest_text"}, nil,
)
performanceSchemaEventsStatementsQuantile999 = prometheus.NewDesc(
prometheus.BuildFQName(namespace, performanceSchema, "events_statements_quantile_999"),
"The 99.9th percentile of the statement latency, in picoseconds.",
[]string{"schema", "digest", "digest_text"}, nil,
)
)

// ScrapePerfEventsStatements collects from `performance_schema.events_statements_summary_by_digest`.
Expand Down Expand Up @@ -204,10 +225,11 @@ func (ScrapePerfEventsStatements) Scrape(ctx context.Context, instance *instance
tmpTables, tmpDiskTables uint64
sortMergePasses, sortRows uint64
noIndexUsed uint64
quantile95, quantile99, quantile999 uint64
)
for perfSchemaEventsStatementsRows.Next() {
if err := perfSchemaEventsStatementsRows.Scan(
&schemaName, &digest, &digestText, &count, &queryTime, &lockTime, &cpuTime, &errors, &warnings, &rowsAffected, &rowsSent, &rowsExamined, &tmpDiskTables, &tmpTables, &sortMergePasses, &sortRows, &noIndexUsed,
&schemaName, &digest, &digestText, &count, &queryTime, &lockTime, &cpuTime, &errors, &warnings, &rowsAffected, &rowsSent, &rowsExamined, &tmpDiskTables, &tmpTables, &sortMergePasses, &sortRows, &noIndexUsed, &quantile95, &quantile99, &quantile999,
); err != nil {
return err
}
Expand Down Expand Up @@ -267,6 +289,18 @@ func (ScrapePerfEventsStatements) Scrape(ctx context.Context, instance *instance
performanceSchemaEventsStatementsNoIndexUsedDesc, prometheus.CounterValue, float64(noIndexUsed),
schemaName, digest, digestText,
)
ch <- prometheus.MustNewConstMetric(
performanceSchemaEventsStatementsQuantile95, prometheus.CounterValue, float64(quantile95),
schemaName, digest, digestText,
)
ch <- prometheus.MustNewConstMetric(
performanceSchemaEventsStatementsQuantile99, prometheus.CounterValue, float64(quantile99),
schemaName, digest, digestText,
)
ch <- prometheus.MustNewConstMetric(
performanceSchemaEventsStatementsQuantile999, prometheus.CounterValue, float64(quantile999),
schemaName, digest, digestText,
)
}
return nil
}
Expand Down

0 comments on commit 85082aa

Please sign in to comment.