db.Use(prometheus.New(prometheus.Config{ DBName: "db1", // используйте `DBName` как метку метрики RefreshInterval: 15, // Интервал обновления метрик (по умолчанию 15 секунд) PushAddr: "prometheus pusher address", // push метрики если `PushAddr` настроен StartServer: true, // стартовать http сервер для выгрузки метрик HTTPServerPort: 8080, // настройка порта сервера http, порт по умолчанию 8080 (если объявлено несколько раз, будет использован первый параметр `HTTPServerPort` для старта сервера) MetricsCollector: []prometheus.MetricsCollector { &prometheus.MySQL{ VariableNames: []string{"Threads_running"}, }, }, // пользовательские метрики }))
Пользовательские метрики
Вы можете определить ваши метрики и собрать их с помощью плагина GORM Prometheus, который должен реализовывать интерфейс MetricsCollector
type MetricsCollector interface { Metrics(*Prometheus) []prometheus.Collector }
MySQL
GORM представляет пример того, как собирать статусы MySQL в качестве метрики, посмотрите prometheus.MySQL
&prometheus.MySQL{ Prefix: "gorm_status_", // Префикс имени метки, по умолчанию `gorm_status_` // Например, имя метрики Threads_running будет `gorm_status_Threads_running` Interval: 100, // Интервал выборки, по умолчанию используется интервал обновления Prometheus's RefreshInterval VariableNames: []string{"Threads_running"}, // Выбор переменных из SHOW STATUS, если не установлено, используются все статусные переменные }