You've already forked mysqld_exporter
mirror of
https://github.com/prometheus/mysqld_exporter.git
synced 2025-07-30 06:43:05 +03:00
Add innodb compression statistic (#275)
* Add innodb commpression statistic https://dev.mysql.com/doc/refman/5.5/en/innodb-cmp-table.html https://dev.mysql.com/doc/refman/5.5/en/innodb-cmpmem-table.html * Add innodb commpression statistic https://dev.mysql.com/doc/refman/5.5/en/innodb-cmp-table.html https://dev.mysql.com/doc/refman/5.5/en/innodb-cmpmem-table.html
This commit is contained in:
committed by
Ben Kochie
parent
1645bb4d70
commit
170f6645e8
68
collector/info_schema_innodb_cmpmem.go
Normal file
68
collector/info_schema_innodb_cmpmem.go
Normal file
@ -0,0 +1,68 @@
|
||||
// Scrape `information_schema.INNODB_CMPMEM`.
|
||||
|
||||
package collector
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
const innodbCmpMemQuery = `
|
||||
SELECT
|
||||
page_size, buffer_pool_instance, pages_used, pages_free, relocation_ops, relocation_time
|
||||
FROM information_schema.innodb_cmpmem
|
||||
`
|
||||
|
||||
var (
|
||||
infoSchemaInnodbCmpMemPagesRead = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(namespace, informationSchema, "innodb_cmpmem_pages_used_total"),
|
||||
"Number of blocks of the size PAGE_SIZE that are currently in use.",
|
||||
[]string{"page_size", "buffer_pool"}, nil,
|
||||
)
|
||||
infoSchemaInnodbCmpMemPagesFree = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(namespace, informationSchema, "innodb_cmpmem_pages_free_total"),
|
||||
"Number of blocks of the size PAGE_SIZE that are currently available for allocation.",
|
||||
[]string{"page_size", "buffer_pool"}, nil,
|
||||
)
|
||||
infoSchemaInnodbCmpMemRelocationOps = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(namespace, informationSchema, "innodb_cmpmem_relocation_ops_total"),
|
||||
"Number of times a block of the size PAGE_SIZE has been relocated.",
|
||||
[]string{"page_size", "buffer_pool"}, nil,
|
||||
)
|
||||
infoSchemaInnodbCmpMemRelocationTime = prometheus.NewDesc(
|
||||
prometheus.BuildFQName(namespace, informationSchema, "innodb_cmpmem_relocation_time_seconds_total"),
|
||||
"Total time in seconds spent in relocating blocks.",
|
||||
[]string{"page_size", "buffer_pool"}, nil,
|
||||
)
|
||||
)
|
||||
|
||||
// ScrapeInnodbCmp collects from `information_schema.innodb_cmp`.
|
||||
func ScrapeInnodbCmpMem(db *sql.DB, ch chan<- prometheus.Metric) error {
|
||||
|
||||
informationSchemaInnodbCmpMemRows, err := db.Query(innodbCmpMemQuery)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer informationSchemaInnodbCmpMemRows.Close()
|
||||
|
||||
var (
|
||||
page_size, buffer_pool string
|
||||
pages_used, pages_free, relocation_ops, relocation_time float64
|
||||
)
|
||||
|
||||
for informationSchemaInnodbCmpMemRows.Next() {
|
||||
if err := informationSchemaInnodbCmpMemRows.Scan(
|
||||
&page_size, &buffer_pool, &pages_used, &pages_free, &relocation_ops, &relocation_time,
|
||||
); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(infoSchemaInnodbCmpMemPagesRead, prometheus.CounterValue, pages_used, page_size, buffer_pool)
|
||||
ch <- prometheus.MustNewConstMetric(infoSchemaInnodbCmpMemPagesFree, prometheus.CounterValue, pages_free, page_size, buffer_pool)
|
||||
ch <- prometheus.MustNewConstMetric(infoSchemaInnodbCmpMemRelocationOps, prometheus.CounterValue, relocation_ops, page_size, buffer_pool)
|
||||
ch <- prometheus.MustNewConstMetric(infoSchemaInnodbCmpMemRelocationTime, prometheus.CounterValue, (relocation_time / 1000), page_size, buffer_pool)
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user