mirror of
https://github.com/prometheus-community/postgres_exporter
synced 2025-05-04 17:08:02 +00:00
Merge 9c7a4586c2
into 6526065fbc
This commit is contained in:
commit
80c61f6217
@ -38,18 +38,19 @@ var (
|
|||||||
statioUserIndexesIdxBlksRead = prometheus.NewDesc(
|
statioUserIndexesIdxBlksRead = prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(namespace, statioUserIndexesSubsystem, "idx_blks_read_total"),
|
prometheus.BuildFQName(namespace, statioUserIndexesSubsystem, "idx_blks_read_total"),
|
||||||
"Number of disk blocks read from this index",
|
"Number of disk blocks read from this index",
|
||||||
[]string{"schemaname", "relname", "indexrelname"},
|
[]string{"datname", "schemaname", "relname", "indexrelname"},
|
||||||
prometheus.Labels{},
|
prometheus.Labels{},
|
||||||
)
|
)
|
||||||
statioUserIndexesIdxBlksHit = prometheus.NewDesc(
|
statioUserIndexesIdxBlksHit = prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(namespace, statioUserIndexesSubsystem, "idx_blks_hit_total"),
|
prometheus.BuildFQName(namespace, statioUserIndexesSubsystem, "idx_blks_hit_total"),
|
||||||
"Number of buffer hits in this index",
|
"Number of buffer hits in this index",
|
||||||
[]string{"schemaname", "relname", "indexrelname"},
|
[]string{"datname", "schemaname", "relname", "indexrelname"},
|
||||||
prometheus.Labels{},
|
prometheus.Labels{},
|
||||||
)
|
)
|
||||||
|
|
||||||
statioUserIndexesQuery = `
|
statioUserIndexesQuery = `
|
||||||
SELECT
|
SELECT
|
||||||
|
current_database() AS datname,
|
||||||
schemaname,
|
schemaname,
|
||||||
relname,
|
relname,
|
||||||
indexrelname,
|
indexrelname,
|
||||||
@ -69,12 +70,17 @@ func (c *PGStatioUserIndexesCollector) Update(ctx context.Context, instance *ins
|
|||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var schemaname, relname, indexrelname sql.NullString
|
var datname, schemaname, relname, indexrelname sql.NullString
|
||||||
var idxBlksRead, idxBlksHit sql.NullFloat64
|
var idxBlksRead, idxBlksHit sql.NullFloat64
|
||||||
|
|
||||||
if err := rows.Scan(&schemaname, &relname, &indexrelname, &idxBlksRead, &idxBlksHit); err != nil {
|
if err := rows.Scan(&datname, &schemaname, &relname, &indexrelname, &idxBlksRead, &idxBlksHit); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
datnameLabel := "unknown"
|
||||||
|
if datname.Valid {
|
||||||
|
datnameLabel = datname.String
|
||||||
|
}
|
||||||
schemanameLabel := "unknown"
|
schemanameLabel := "unknown"
|
||||||
if schemaname.Valid {
|
if schemaname.Valid {
|
||||||
schemanameLabel = schemaname.String
|
schemanameLabel = schemaname.String
|
||||||
@ -87,7 +93,7 @@ func (c *PGStatioUserIndexesCollector) Update(ctx context.Context, instance *ins
|
|||||||
if indexrelname.Valid {
|
if indexrelname.Valid {
|
||||||
indexrelnameLabel = indexrelname.String
|
indexrelnameLabel = indexrelname.String
|
||||||
}
|
}
|
||||||
labels := []string{schemanameLabel, relnameLabel, indexrelnameLabel}
|
labels := []string{datnameLabel, schemanameLabel, relnameLabel, indexrelnameLabel}
|
||||||
|
|
||||||
idxBlksReadMetric := 0.0
|
idxBlksReadMetric := 0.0
|
||||||
if idxBlksRead.Valid {
|
if idxBlksRead.Valid {
|
||||||
|
@ -30,6 +30,7 @@ func TestPgStatioUserIndexesCollector(t *testing.T) {
|
|||||||
defer db.Close()
|
defer db.Close()
|
||||||
inst := &instance{db: db}
|
inst := &instance{db: db}
|
||||||
columns := []string{
|
columns := []string{
|
||||||
|
"datname",
|
||||||
"schemaname",
|
"schemaname",
|
||||||
"relname",
|
"relname",
|
||||||
"indexrelname",
|
"indexrelname",
|
||||||
@ -37,7 +38,7 @@ func TestPgStatioUserIndexesCollector(t *testing.T) {
|
|||||||
"idx_blks_hit",
|
"idx_blks_hit",
|
||||||
}
|
}
|
||||||
rows := sqlmock.NewRows(columns).
|
rows := sqlmock.NewRows(columns).
|
||||||
AddRow("public", "pgtest_accounts", "pgtest_accounts_pkey", 8, 9)
|
AddRow("postgres", "public", "pgtest_accounts", "pgtest_accounts_pkey", 8, 9)
|
||||||
|
|
||||||
mock.ExpectQuery(sanitizeQuery(statioUserIndexesQuery)).WillReturnRows(rows)
|
mock.ExpectQuery(sanitizeQuery(statioUserIndexesQuery)).WillReturnRows(rows)
|
||||||
|
|
||||||
@ -51,8 +52,8 @@ func TestPgStatioUserIndexesCollector(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
expected := []MetricResult{
|
expected := []MetricResult{
|
||||||
{labels: labelMap{"schemaname": "public", "relname": "pgtest_accounts", "indexrelname": "pgtest_accounts_pkey"}, value: 8, metricType: dto.MetricType_COUNTER},
|
{labels: labelMap{"datname": "postgres", "schemaname": "public", "relname": "pgtest_accounts", "indexrelname": "pgtest_accounts_pkey"}, value: 8, metricType: dto.MetricType_COUNTER},
|
||||||
{labels: labelMap{"schemaname": "public", "relname": "pgtest_accounts", "indexrelname": "pgtest_accounts_pkey"}, value: 9, metricType: dto.MetricType_COUNTER},
|
{labels: labelMap{"datname": "postgres", "schemaname": "public", "relname": "pgtest_accounts", "indexrelname": "pgtest_accounts_pkey"}, value: 9, metricType: dto.MetricType_COUNTER},
|
||||||
}
|
}
|
||||||
convey.Convey("Metrics comparison", t, func() {
|
convey.Convey("Metrics comparison", t, func() {
|
||||||
for _, expect := range expected {
|
for _, expect := range expected {
|
||||||
@ -73,6 +74,7 @@ func TestPgStatioUserIndexesCollectorNull(t *testing.T) {
|
|||||||
defer db.Close()
|
defer db.Close()
|
||||||
inst := &instance{db: db}
|
inst := &instance{db: db}
|
||||||
columns := []string{
|
columns := []string{
|
||||||
|
"datname",
|
||||||
"schemaname",
|
"schemaname",
|
||||||
"relname",
|
"relname",
|
||||||
"indexrelname",
|
"indexrelname",
|
||||||
@ -80,7 +82,7 @@ func TestPgStatioUserIndexesCollectorNull(t *testing.T) {
|
|||||||
"idx_blks_hit",
|
"idx_blks_hit",
|
||||||
}
|
}
|
||||||
rows := sqlmock.NewRows(columns).
|
rows := sqlmock.NewRows(columns).
|
||||||
AddRow(nil, nil, nil, nil, nil)
|
AddRow(nil, nil, nil, nil, nil, nil)
|
||||||
|
|
||||||
mock.ExpectQuery(sanitizeQuery(statioUserIndexesQuery)).WillReturnRows(rows)
|
mock.ExpectQuery(sanitizeQuery(statioUserIndexesQuery)).WillReturnRows(rows)
|
||||||
|
|
||||||
@ -94,8 +96,8 @@ func TestPgStatioUserIndexesCollectorNull(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
expected := []MetricResult{
|
expected := []MetricResult{
|
||||||
{labels: labelMap{"schemaname": "unknown", "relname": "unknown", "indexrelname": "unknown"}, value: 0, metricType: dto.MetricType_COUNTER},
|
{labels: labelMap{"datname": "unknown", "schemaname": "unknown", "relname": "unknown", "indexrelname": "unknown"}, value: 0, metricType: dto.MetricType_COUNTER},
|
||||||
{labels: labelMap{"schemaname": "unknown", "relname": "unknown", "indexrelname": "unknown"}, value: 0, metricType: dto.MetricType_COUNTER},
|
{labels: labelMap{"datname": "unknown", "schemaname": "unknown", "relname": "unknown", "indexrelname": "unknown"}, value: 0, metricType: dto.MetricType_COUNTER},
|
||||||
}
|
}
|
||||||
convey.Convey("Metrics comparison", t, func() {
|
convey.Convey("Metrics comparison", t, func() {
|
||||||
for _, expect := range expected {
|
for _, expect := range expected {
|
||||||
|
Loading…
Reference in New Issue
Block a user