diff options
Diffstat (limited to '')
-rw-r--r-- | src/go/plugin/go.d/modules/postgres/metrics.go | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/src/go/plugin/go.d/modules/postgres/metrics.go b/src/go/plugin/go.d/modules/postgres/metrics.go new file mode 100644 index 000000000..a42ccba13 --- /dev/null +++ b/src/go/plugin/go.d/modules/postgres/metrics.go @@ -0,0 +1,231 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package postgres + +import "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/metrics" + +type pgMetrics struct { + srvMetrics + dbs map[string]*dbMetrics + tables map[string]*tableMetrics + indexes map[string]*indexMetrics + replApps map[string]*replStandbyAppMetrics + replSlots map[string]*replSlotMetrics +} + +type srvMetrics struct { + xactTimeHist metrics.Histogram + queryTimeHist metrics.Histogram + + maxConnections int64 + maxLocksHeld int64 + + uptime int64 + + relkindOrdinaryTable int64 + relkindIndex int64 + relkindSequence int64 + relkindTOASTTable int64 + relkindView int64 + relkindMatView int64 + relkindCompositeType int64 + relkindForeignTable int64 + relkindPartitionedTable int64 + relkindPartitionedIndex int64 + relkindOrdinaryTableSize int64 + relkindIndexSize int64 + relkindSequenceSize int64 + relkindTOASTTableSize int64 + relkindViewSize int64 + relkindMatViewSize int64 + relkindCompositeTypeSize int64 + relkindForeignTableSize int64 + relkindPartitionedTableSize int64 + relkindPartitionedIndexSize int64 + + connUsed int64 + connStateActive int64 + connStateIdle int64 + connStateIdleInTrans int64 + connStateIdleInTransAborted int64 + connStateFastpathFunctionCall int64 + connStateDisabled int64 + + checkpointsTimed int64 + checkpointsReq int64 + checkpointWriteTime int64 + checkpointSyncTime int64 + buffersCheckpoint int64 + buffersClean int64 + maxwrittenClean int64 + buffersBackend int64 + buffersBackendFsync int64 + buffersAlloc int64 + + oldestXID int64 + percentTowardsWraparound int64 + percentTowardsEmergencyAutovacuum int64 + + walWrites int64 + walRecycledFiles int64 + walWrittenFiles int64 + walArchiveFilesReady int64 + walArchiveFilesDone int64 + + autovacuumWorkersAnalyze int64 + autovacuumWorkersVacuumAnalyze int64 + autovacuumWorkersVacuum int64 + autovacuumWorkersVacuumFreeze int64 + autovacuumWorkersBrinSummarize int64 +} + +type dbMetrics struct { + name string + + updated bool + hasCharts bool + + numBackends int64 + datConnLimit int64 + xactCommit int64 + xactRollback int64 + blksRead incDelta + blksHit incDelta + tupReturned incDelta + tupFetched incDelta + tupInserted int64 + tupUpdated int64 + tupDeleted int64 + conflicts int64 + tempFiles int64 + tempBytes int64 + deadlocks int64 + + size *int64 // need 'connect' privilege for pg_database_size() + + conflTablespace int64 + conflLock int64 + conflSnapshot int64 + conflBufferpin int64 + conflDeadlock int64 + + accessShareLockHeld int64 + rowShareLockHeld int64 + rowExclusiveLockHeld int64 + shareUpdateExclusiveLockHeld int64 + shareLockHeld int64 + shareRowExclusiveLockHeld int64 + exclusiveLockHeld int64 + accessExclusiveLockHeld int64 + accessShareLockAwaited int64 + rowShareLockAwaited int64 + rowExclusiveLockAwaited int64 + shareUpdateExclusiveLockAwaited int64 + shareLockAwaited int64 + shareRowExclusiveLockAwaited int64 + exclusiveLockAwaited int64 + accessExclusiveLockAwaited int64 +} + +type replStandbyAppMetrics struct { + name string + + updated bool + hasCharts bool + + walSentDelta int64 + walWriteDelta int64 + walFlushDelta int64 + walReplayDelta int64 + + walWriteLag int64 + walFlushLag int64 + walReplayLag int64 +} + +type replSlotMetrics struct { + name string + + updated bool + hasCharts bool + + walKeep int64 + files int64 +} + +type tableMetrics struct { + name string + parentName string + db string + schema string + + updated bool + hasCharts bool + hasLastAutoVacuumChart bool + hasLastVacuumChart bool + hasLastAutoAnalyzeChart bool + hasLastAnalyzeChart bool + hasTableIOCharts bool + hasTableIdxIOCharts bool + hasTableTOASTIOCharts bool + hasTableTOASTIdxIOCharts bool + + // pg_stat_user_tables + seqScan int64 + seqTupRead int64 + idxScan int64 + idxTupFetch int64 + nTupIns int64 + nTupUpd incDelta + nTupDel int64 + nTupHotUpd incDelta + nLiveTup int64 + nDeadTup int64 + lastVacuumAgo int64 + lastAutoVacuumAgo int64 + lastAnalyzeAgo int64 + lastAutoAnalyzeAgo int64 + vacuumCount int64 + autovacuumCount int64 + analyzeCount int64 + autoAnalyzeCount int64 + + // pg_statio_user_tables + heapBlksRead incDelta + heapBlksHit incDelta + idxBlksRead incDelta + idxBlksHit incDelta + toastBlksRead incDelta + toastBlksHit incDelta + tidxBlksRead incDelta + tidxBlksHit incDelta + + totalSize int64 + + bloatSize *int64 // need 'SELECT' access to the table + bloatSizePerc *int64 // need 'SELECT' access to the table + nullColumns *int64 // need 'SELECT' access to the table +} + +type indexMetrics struct { + name string + db string + schema string + table string + parentTable string + + updated bool + hasCharts bool + + idxScan int64 + idxTupRead int64 + idxTupFetch int64 + + size int64 + + bloatSize *int64 // need 'SELECT' access to the table + bloatSizePerc *int64 // need 'SELECT' access to the table +} +type incDelta struct{ prev, last int64 } + +func (pc *incDelta) delta() int64 { return pc.last - pc.prev } |