1
0
mirror of https://github.com/prometheus/mysqld_exporter.git synced 2025-07-30 06:43:05 +03:00

Introduce Scraper interface

Signed-off-by: Kamil Dziedzic <arvenil@klecza.pl>
This commit is contained in:
Kamil Dziedzic
2018-02-01 23:33:02 +01:00
parent f76ef420f1
commit f556a61867
47 changed files with 604 additions and 540 deletions

View File

@ -19,13 +19,16 @@ const perfFileInstancesQuery = `
where FILE_NAME REGEXP ?
`
// Metric descriptors.
// Tunable flags.
var (
performanceSchemaFileInstancesFilter = kingpin.Flag(
"collect.perf_schema.file_instances.filter",
"RegEx file_name filter for performance_schema.file_summary_by_instance",
).Default(".*").String()
)
// Metric descriptors.
var (
performanceSchemaFileInstancesRemovePrefix = kingpin.Flag(
"collect.perf_schema.file_instances.remove_prefix",
"Remove path prefix in performance_schema.file_summary_by_instance",
@ -43,8 +46,21 @@ var (
)
)
// ScrapePerfFileEvents collects from `performance_schema.file_summary_by_event_name`.
func ScrapePerfFileInstances(db *sql.DB, ch chan<- prometheus.Metric) error {
// ScrapePerfFileInstances collects from `performance_schema.file_summary_by_instance`.
type ScrapePerfFileInstances struct{}
// Name of the Scraper. Should be unique.
func (ScrapePerfFileInstances) Name() string {
return "perf_schema.file_instances"
}
// Help describes the role of the Scraper.
func (ScrapePerfFileInstances) Help() string {
return "Collect metrics from performance_schema.file_summary_by_instance"
}
// Scrape collects data from database connection and sends it over channel as prometheus metric.
func (ScrapePerfFileInstances) Scrape(db *sql.DB, ch chan<- prometheus.Metric) error {
// Timers here are returned in picoseconds.
perfSchemaFileInstancesRows, err := db.Query(perfFileInstancesQuery, *performanceSchemaFileInstancesFilter)
if err != nil {