Documentation
¶
Index ¶
- Variables
- func AddDbnameSysinfoIfNotExistsToQueryResultData(data metrics.Measurements, ver MonitoredDatabaseSettings, ...) metrics.Measurements
- func CheckForPGObjectChangesAndStore(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, ...)
- func ClearDBUnreachableStateIfAny(dbUnique string)
- func CloseResourcesForRemovedMonitoredDBs(metricsWriter *sinks.MultiWriter, ...)
- func DBExecRead(ctx context.Context, conn db.PgxIface, sql string, args ...any) (metrics.Measurements, error)
- func DBExecReadByDbUniqueName(ctx context.Context, dbUnique string, sql string, args ...any) (metrics.Measurements, error)
- func DBGetSizeMB(ctx context.Context, dbUnique string) (int64, error)
- func DatarowsToMetricstoreMessage(data metrics.Measurements, msg MetricFetchConfig, ...) (metrics.MeasurementEnvelope, error)
- func DoesEmergencyTriggerfileExist(fname string) bool
- func DoesFunctionExists(ctx context.Context, dbUnique, functionName string) bool
- func FetchMetrics(ctx context.Context, msg MetricFetchConfig, ...) ([]metrics.MeasurementEnvelope, error)
- func FetchMetricsPgpool(ctx context.Context, msg MetricFetchConfig, vme MonitoredDatabaseSettings, ...) (metrics.Measurements, error)
- func FetchStatsDirectlyFromOS(ctx context.Context, msg MetricFetchConfig, vme MonitoredDatabaseSettings, ...) ([]metrics.MeasurementEnvelope, error)
- func FilterPgbouncerData(ctx context.Context, data metrics.Measurements, databaseToKeep string, ...) metrics.Measurements
- func GetAllRecoMetricsForVersion(vme MonitoredDatabaseSettings) (map[string]metrics.Metric, error)
- func GetConnByUniqueName(dbUnique string) db.PgxIface
- func GetDBTotalApproxSize(ctx context.Context, dbUnique string) (int64, error)
- func GetFromInstanceCacheIfNotOlderThanSeconds(msg MetricFetchConfig, maxAgeSeconds int64) metrics.Measurements
- func GetGoPsutilDiskPG(ctx context.Context, dbUnique string) (metrics.Measurements, error)
- func GetMetricVersionProperties(metric string, _ MonitoredDatabaseSettings, metricDefMap *metrics.Metrics) (metrics.Metric, error)
- func GetMonitoredDatabaseByUniqueName(name string) (*sources.MonitoredDatabase, error)
- func GetRecommendations(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings) (metrics.Measurements, error)
- func InitPGVersionInfoFetchingLockIfNil(md *sources.MonitoredDatabase)
- func InitSQLConnPoolForMonitoredDBIfNil(ctx context.Context, md *sources.MonitoredDatabase, maxConns int) (err error)
- func IsCacheableMetric(msg MetricFetchConfig, mvp metrics.Metric) bool
- func IsDBDormant(dbUnique string) bool
- func IsDBIgnoredBasedOnRecoveryState(dbUnique string) bool
- func IsDBUndersized(dbUnique string) bool
- func IsDirectlyFetchableMetric(metric string) bool
- func LoadMetricDefs(r metrics.Reader) (err error)
- func PutToInstanceCache(msg MetricFetchConfig, data metrics.Measurements)
- func SetDBUnreachableState(dbUnique string)
- func SetRecoveryIgnoredDBState(dbUnique string, state bool)
- func SetUndersizedDBState(dbUnique string, state bool)
- func StoreMetrics(metrics []metrics.MeasurementEnvelope, ...) (int, error)
- func SyncMetricDefs(ctx context.Context, r metrics.Reader)
- func SyncMonitoredDBsToDatastore(ctx context.Context, monitoredDbs []*sources.MonitoredDatabase, ...)
- func TryCreateMetricsFetchingHelpers(ctx context.Context, md *sources.MonitoredDatabase) (err error)
- func TryCreateMissingExtensions(ctx context.Context, dbUnique string, extensionNames []string, ...) []string
- func TryDiscoverExecutionEnv(ctx context.Context, dbUnique string) (execEnv string)
- func UpdateMonitoredDBCache(data sources.MonitoredDatabases)
- func VersionToInt(version string) (v int)
- type ChangeDetectionResults
- func DetectConfigurationChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, ...) ChangeDetectionResults
- func DetectIndexChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, ...) ChangeDetectionResults
- func DetectPrivilegeChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, ...) ChangeDetectionResults
- func DetectSprocChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, ...) ChangeDetectionResults
- func DetectTableChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, ...) ChangeDetectionResults
- type ExistingPartitionInfo
- type MetricFetchConfig
- type MonitoredDatabaseSettings
- type Reaper
Constants ¶
This section is empty.
Variables ¶
var MonitoredDatabasesSettings = make(map[string]MonitoredDatabaseSettings)
var MonitoredDatabasesSettingsGetLock = make(map[string]*sync.RWMutex) // synchronize initial PG version detection to 1 instance for each defined host
var MonitoredDatabasesSettingsLock = sync.RWMutex{}
Functions ¶
func AddDbnameSysinfoIfNotExistsToQueryResultData ¶
func AddDbnameSysinfoIfNotExistsToQueryResultData(data metrics.Measurements, ver MonitoredDatabaseSettings, opts *cmdopts.Options) metrics.Measurements
func CheckForPGObjectChangesAndStore ¶
func CheckForPGObjectChangesAndStore(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, storageCh chan<- []metrics.MeasurementEnvelope, hostState map[string]map[string]string)
func ClearDBUnreachableStateIfAny ¶
func ClearDBUnreachableStateIfAny(dbUnique string)
func CloseResourcesForRemovedMonitoredDBs ¶
func CloseResourcesForRemovedMonitoredDBs(metricsWriter *sinks.MultiWriter, currentDBs, prevLoopDBs sources.MonitoredDatabases, shutDownDueToRoleChange map[string]bool)
func DBExecRead ¶
func DatarowsToMetricstoreMessage ¶
func DatarowsToMetricstoreMessage(data metrics.Measurements, msg MetricFetchConfig, vme MonitoredDatabaseSettings, mvp metrics.Metric) (metrics.MeasurementEnvelope, error)
data + custom tags + counters
func DoesFunctionExists ¶
func FetchMetrics ¶
func FetchMetrics(ctx context.Context, msg MetricFetchConfig, hostState map[string]map[string]string, storageCh chan<- []metrics.MeasurementEnvelope, context string, opts *cmdopts.Options) ([]metrics.MeasurementEnvelope, error)
func FetchMetricsPgpool ¶
func FetchMetricsPgpool(ctx context.Context, msg MetricFetchConfig, vme MonitoredDatabaseSettings, mvp metrics.Metric) (metrics.Measurements, error)
some extra work needed as pgpool SHOW commands don't specify the return data types for some reason
func FetchStatsDirectlyFromOS ¶
func FetchStatsDirectlyFromOS(ctx context.Context, msg MetricFetchConfig, vme MonitoredDatabaseSettings, mvp metrics.Metric) ([]metrics.MeasurementEnvelope, error)
func FilterPgbouncerData ¶
func FilterPgbouncerData(ctx context.Context, data metrics.Measurements, databaseToKeep string, vme MonitoredDatabaseSettings) metrics.Measurements
func GetAllRecoMetricsForVersion ¶
func GetAllRecoMetricsForVersion(vme MonitoredDatabaseSettings) (map[string]metrics.Metric, error)
func GetConnByUniqueName ¶
func GetDBTotalApproxSize ¶
func GetFromInstanceCacheIfNotOlderThanSeconds ¶
func GetFromInstanceCacheIfNotOlderThanSeconds(msg MetricFetchConfig, maxAgeSeconds int64) metrics.Measurements
func GetGoPsutilDiskPG ¶
connects actually to the instance to determine PG relevant disk paths / mounts
func GetMetricVersionProperties ¶
func GetMetricVersionProperties(metric string, _ MonitoredDatabaseSettings, metricDefMap *metrics.Metrics) (metrics.Metric, error)
assumes upwards compatibility for versions
func GetMonitoredDatabaseByUniqueName ¶
func GetMonitoredDatabaseByUniqueName(name string) (*sources.MonitoredDatabase, error)
func GetRecommendations ¶
func GetRecommendations(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings) (metrics.Measurements, error)
func InitPGVersionInfoFetchingLockIfNil ¶
func InitPGVersionInfoFetchingLockIfNil(md *sources.MonitoredDatabase)
func InitSQLConnPoolForMonitoredDBIfNil ¶
func InitSQLConnPoolForMonitoredDBIfNil(ctx context.Context, md *sources.MonitoredDatabase, maxConns int) (err error)
every DB under monitoring should have exactly 1 sql.DB connection assigned, that will internally limit parallel access
func IsCacheableMetric ¶
func IsCacheableMetric(msg MetricFetchConfig, mvp metrics.Metric) bool
func IsDBDormant ¶
func IsDBUndersized ¶
func LoadMetricDefs ¶
LoadMetricDefs loads metric definitions from the reader
func PutToInstanceCache ¶
func PutToInstanceCache(msg MetricFetchConfig, data metrics.Measurements)
func SetDBUnreachableState ¶
func SetDBUnreachableState(dbUnique string)
func SetUndersizedDBState ¶
func StoreMetrics ¶
func StoreMetrics(metrics []metrics.MeasurementEnvelope, storageCh chan<- []metrics.MeasurementEnvelope) (int, error)
func SyncMetricDefs ¶
SyncMetricDefs refreshes metric definitions at regular intervals
func SyncMonitoredDBsToDatastore ¶
func SyncMonitoredDBsToDatastore(ctx context.Context, monitoredDbs []*sources.MonitoredDatabase, persistenceChannel chan []metrics.MeasurementEnvelope)
func TryCreateMetricsFetchingHelpers ¶
func TryCreateMetricsFetchingHelpers(ctx context.Context, md *sources.MonitoredDatabase) (err error)
Called once on daemon startup to try to create "metric fething helper" functions automatically
func TryCreateMissingExtensions ¶
func TryCreateMissingExtensions(ctx context.Context, dbUnique string, extensionNames []string, existingExtensions map[string]int) []string
Called once on daemon startup if some commonly wanted extension (most notably pg_stat_statements) is missing. With newer Postgres version can even succeed if the user is not a real superuser due to some cloud-specific whitelisting or "trusted extensions" (a feature from v13). Ignores errors.
func TryDiscoverExecutionEnv ¶
func UpdateMonitoredDBCache ¶
func UpdateMonitoredDBCache(data sources.MonitoredDatabases)
func VersionToInt ¶
Types ¶
type ChangeDetectionResults ¶
func DetectConfigurationChanges ¶
func DetectConfigurationChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, storageCh chan<- []metrics.MeasurementEnvelope, hostState map[string]map[string]string) ChangeDetectionResults
func DetectIndexChanges ¶
func DetectIndexChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, storageCh chan<- []metrics.MeasurementEnvelope, hostState map[string]map[string]string) ChangeDetectionResults
func DetectPrivilegeChanges ¶
func DetectPrivilegeChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, storageCh chan<- []metrics.MeasurementEnvelope, hostState map[string]map[string]string) ChangeDetectionResults
func DetectSprocChanges ¶
func DetectSprocChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, storageCh chan<- []metrics.MeasurementEnvelope, hostState map[string]map[string]string) ChangeDetectionResults
func DetectTableChanges ¶
func DetectTableChanges(ctx context.Context, dbUnique string, vme MonitoredDatabaseSettings, storageCh chan<- []metrics.MeasurementEnvelope, hostState map[string]map[string]string) ChangeDetectionResults
type ExistingPartitionInfo ¶
type MetricFetchConfig ¶
type MonitoredDatabaseSettings ¶
type MonitoredDatabaseSettings struct {
LastCheckedOn time.Time
IsInRecovery bool
VersionStr string
Version int
RealDbname string
SystemIdentifier string
IsSuperuser bool // if true and no helpers are installed, use superuser SQL version of metric if available
Extensions map[string]int
ExecEnv string
ApproxDBSizeB int64
}