github.com/netdata/go.d.plugin@v0.58.1/modules/postgres/metrics.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package postgres
     4  
     5  import "github.com/netdata/go.d.plugin/pkg/metrics"
     6  
     7  type pgMetrics struct {
     8  	srvMetrics
     9  	dbs       map[string]*dbMetrics
    10  	tables    map[string]*tableMetrics
    11  	indexes   map[string]*indexMetrics
    12  	replApps  map[string]*replStandbyAppMetrics
    13  	replSlots map[string]*replSlotMetrics
    14  }
    15  
    16  type srvMetrics struct {
    17  	xactTimeHist  metrics.Histogram
    18  	queryTimeHist metrics.Histogram
    19  
    20  	maxConnections int64
    21  	maxLocksHeld   int64
    22  
    23  	uptime int64
    24  
    25  	relkindOrdinaryTable        int64
    26  	relkindIndex                int64
    27  	relkindSequence             int64
    28  	relkindTOASTTable           int64
    29  	relkindView                 int64
    30  	relkindMatView              int64
    31  	relkindCompositeType        int64
    32  	relkindForeignTable         int64
    33  	relkindPartitionedTable     int64
    34  	relkindPartitionedIndex     int64
    35  	relkindOrdinaryTableSize    int64
    36  	relkindIndexSize            int64
    37  	relkindSequenceSize         int64
    38  	relkindTOASTTableSize       int64
    39  	relkindViewSize             int64
    40  	relkindMatViewSize          int64
    41  	relkindCompositeTypeSize    int64
    42  	relkindForeignTableSize     int64
    43  	relkindPartitionedTableSize int64
    44  	relkindPartitionedIndexSize int64
    45  
    46  	connUsed                      int64
    47  	connStateActive               int64
    48  	connStateIdle                 int64
    49  	connStateIdleInTrans          int64
    50  	connStateIdleInTransAborted   int64
    51  	connStateFastpathFunctionCall int64
    52  	connStateDisabled             int64
    53  
    54  	checkpointsTimed    int64
    55  	checkpointsReq      int64
    56  	checkpointWriteTime int64
    57  	checkpointSyncTime  int64
    58  	buffersCheckpoint   int64
    59  	buffersClean        int64
    60  	maxwrittenClean     int64
    61  	buffersBackend      int64
    62  	buffersBackendFsync int64
    63  	buffersAlloc        int64
    64  
    65  	oldestXID                         int64
    66  	percentTowardsWraparound          int64
    67  	percentTowardsEmergencyAutovacuum int64
    68  
    69  	walWrites            int64
    70  	walRecycledFiles     int64
    71  	walWrittenFiles      int64
    72  	walArchiveFilesReady int64
    73  	walArchiveFilesDone  int64
    74  
    75  	autovacuumWorkersAnalyze       int64
    76  	autovacuumWorkersVacuumAnalyze int64
    77  	autovacuumWorkersVacuum        int64
    78  	autovacuumWorkersVacuumFreeze  int64
    79  	autovacuumWorkersBrinSummarize int64
    80  }
    81  
    82  type dbMetrics struct {
    83  	name string
    84  
    85  	updated   bool
    86  	hasCharts bool
    87  
    88  	numBackends  int64
    89  	datConnLimit int64
    90  	xactCommit   int64
    91  	xactRollback int64
    92  	blksRead     incDelta
    93  	blksHit      incDelta
    94  	tupReturned  incDelta
    95  	tupFetched   incDelta
    96  	tupInserted  int64
    97  	tupUpdated   int64
    98  	tupDeleted   int64
    99  	conflicts    int64
   100  	tempFiles    int64
   101  	tempBytes    int64
   102  	deadlocks    int64
   103  
   104  	size *int64 // need 'connect' privilege for pg_database_size()
   105  
   106  	conflTablespace int64
   107  	conflLock       int64
   108  	conflSnapshot   int64
   109  	conflBufferpin  int64
   110  	conflDeadlock   int64
   111  
   112  	accessShareLockHeld             int64
   113  	rowShareLockHeld                int64
   114  	rowExclusiveLockHeld            int64
   115  	shareUpdateExclusiveLockHeld    int64
   116  	shareLockHeld                   int64
   117  	shareRowExclusiveLockHeld       int64
   118  	exclusiveLockHeld               int64
   119  	accessExclusiveLockHeld         int64
   120  	accessShareLockAwaited          int64
   121  	rowShareLockAwaited             int64
   122  	rowExclusiveLockAwaited         int64
   123  	shareUpdateExclusiveLockAwaited int64
   124  	shareLockAwaited                int64
   125  	shareRowExclusiveLockAwaited    int64
   126  	exclusiveLockAwaited            int64
   127  	accessExclusiveLockAwaited      int64
   128  }
   129  
   130  type replStandbyAppMetrics struct {
   131  	name string
   132  
   133  	updated   bool
   134  	hasCharts bool
   135  
   136  	walSentDelta   int64
   137  	walWriteDelta  int64
   138  	walFlushDelta  int64
   139  	walReplayDelta int64
   140  
   141  	walWriteLag  int64
   142  	walFlushLag  int64
   143  	walReplayLag int64
   144  }
   145  
   146  type replSlotMetrics struct {
   147  	name string
   148  
   149  	updated   bool
   150  	hasCharts bool
   151  
   152  	walKeep int64
   153  	files   int64
   154  }
   155  
   156  type tableMetrics struct {
   157  	name       string
   158  	parentName string
   159  	db         string
   160  	schema     string
   161  
   162  	updated                  bool
   163  	hasCharts                bool
   164  	hasLastAutoVacuumChart   bool
   165  	hasLastVacuumChart       bool
   166  	hasLastAutoAnalyzeChart  bool
   167  	hasLastAnalyzeChart      bool
   168  	hasTableIOCharts         bool
   169  	hasTableIdxIOCharts      bool
   170  	hasTableTOASTIOCharts    bool
   171  	hasTableTOASTIdxIOCharts bool
   172  
   173  	// pg_stat_user_tables
   174  	seqScan            int64
   175  	seqTupRead         int64
   176  	idxScan            int64
   177  	idxTupFetch        int64
   178  	nTupIns            int64
   179  	nTupUpd            incDelta
   180  	nTupDel            int64
   181  	nTupHotUpd         incDelta
   182  	nLiveTup           int64
   183  	nDeadTup           int64
   184  	lastVacuumAgo      int64
   185  	lastAutoVacuumAgo  int64
   186  	lastAnalyzeAgo     int64
   187  	lastAutoAnalyzeAgo int64
   188  	vacuumCount        int64
   189  	autovacuumCount    int64
   190  	analyzeCount       int64
   191  	autoAnalyzeCount   int64
   192  
   193  	// pg_statio_user_tables
   194  	heapBlksRead  incDelta
   195  	heapBlksHit   incDelta
   196  	idxBlksRead   incDelta
   197  	idxBlksHit    incDelta
   198  	toastBlksRead incDelta
   199  	toastBlksHit  incDelta
   200  	tidxBlksRead  incDelta
   201  	tidxBlksHit   incDelta
   202  
   203  	totalSize int64
   204  
   205  	bloatSize     *int64 // need 'SELECT' access to the table
   206  	bloatSizePerc *int64 // need 'SELECT' access to the table
   207  	nullColumns   *int64 // need 'SELECT' access to the table
   208  }
   209  
   210  type indexMetrics struct {
   211  	name        string
   212  	db          string
   213  	schema      string
   214  	table       string
   215  	parentTable string
   216  
   217  	updated   bool
   218  	hasCharts bool
   219  
   220  	idxScan     int64
   221  	idxTupRead  int64
   222  	idxTupFetch int64
   223  
   224  	size int64
   225  
   226  	bloatSize     *int64 // need 'SELECT' access to the table
   227  	bloatSizePerc *int64 // need 'SELECT' access to the table
   228  }
   229  type incDelta struct{ prev, last int64 }
   230  
   231  func (pc *incDelta) delta() int64 { return pc.last - pc.prev }