Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PMM-13154 PG17 support in QAN #3159

Merged
merged 56 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
e019b5c
PMM-13154 Intermediate progress
artemgavrilov Aug 19, 2024
89fb2f8
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Aug 20, 2024
0f7aef1
PMM-12154 Some progress
artemgavrilov Aug 21, 2024
eb8a67c
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Aug 21, 2024
c3930dc
PMM-12154 Some progress
artemgavrilov Aug 21, 2024
3f1a88d
PMM-12154 Fix linter warn
artemgavrilov Aug 21, 2024
aa35522
PMM-12154 Cleanup
artemgavrilov Aug 21, 2024
d2ec243
PMM-12154 Fix
artemgavrilov Aug 21, 2024
93b4e15
PMM-12154 Update PG version in agent CI
artemgavrilov Aug 21, 2024
9e4bf03
PMM-12154 Update PG tests
artemgavrilov Aug 21, 2024
9dd08ce
PMM-12154 Update PG tests
artemgavrilov Aug 21, 2024
8cf6277
PMM-12154 Fix PG17 tag
artemgavrilov Aug 21, 2024
5139a8e
PMM-12154 Update PG tests
artemgavrilov Aug 21, 2024
f7c99f1
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Aug 22, 2024
c7c0b16
PMM-12154 Try fix
artemgavrilov Aug 22, 2024
0cd6462
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Aug 22, 2024
bd162eb
PMM-12154 Try fix
artemgavrilov Aug 22, 2024
28ceb20
PMM-12154 Try fix
artemgavrilov Aug 22, 2024
6e6370f
PMM-12154 Try fix
artemgavrilov Aug 22, 2024
b178526
PMM-13154 Update PG tests
artemgavrilov Aug 22, 2024
3add46d
PMM-12154 Update PG tests
artemgavrilov Aug 22, 2024
6dceece
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Aug 22, 2024
2f653c9
PMM-12154 Update PG tests
artemgavrilov Aug 22, 2024
4b16506
PMM-12154 Update PG tests
artemgavrilov Aug 22, 2024
d30a096
PMM-13154 Update PG version matrix in CI
artemgavrilov Aug 22, 2024
1dd00b3
PMM-13154 Use dev image of percona distribution for pg17
artemgavrilov Aug 22, 2024
6455c54
PMM-13154 Update PG tests
artemgavrilov Aug 22, 2024
55b54d9
PMM-13154 Update PG tests
artemgavrilov Aug 22, 2024
a150d51
PMM-12154 Cleanup
artemgavrilov Aug 22, 2024
299c410
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Aug 29, 2024
5e3432f
PMM-13154 Add local block read/write timers to QAN, update QAN API
artemgavrilov Aug 29, 2024
2cadf25
PMM-13154 Fixed
artemgavrilov Aug 29, 2024
8ad8c17
PMM-13154 Update test data
artemgavrilov Aug 29, 2024
71f4d5f
PMM-13154 Fixes
artemgavrilov Aug 29, 2024
321d5ba
PMM-13154 Fixes
artemgavrilov Aug 29, 2024
5cf0fe7
PMM-13154 Fixes
artemgavrilov Aug 29, 2024
0289c5d
Rewrite pg_stat_statments view reading
artemgavrilov Aug 29, 2024
24b220b
PMM-13154 Fix
artemgavrilov Aug 29, 2024
e1e9eec
PMM-13154 Fix
artemgavrilov Aug 29, 2024
2c27486
PMM-13154 Fix
artemgavrilov Aug 29, 2024
69ab7c6
PMM-13154 Fix
artemgavrilov Aug 29, 2024
4601741
PMM-13154 Fix
artemgavrilov Aug 29, 2024
ae5a2e7
PMM-13154 Fix
artemgavrilov Aug 29, 2024
32b99a2
PMM-13154 Fix
artemgavrilov Aug 30, 2024
344f9c6
PMM-13154 Add licence header
artemgavrilov Aug 30, 2024
72dc1bf
PMM-13154 Fix tests
artemgavrilov Aug 30, 2024
03b7bf6
PMM-13154 Update tests
artemgavrilov Aug 30, 2024
cd06b7c
PMM-13154 Fix style
artemgavrilov Aug 30, 2024
84027e4
PMM-13154 Fix CH migration
artemgavrilov Aug 30, 2024
c988e3d
PMM-13154 Remove redundant fields backfill
artemgavrilov Sep 9, 2024
de6343f
Use PG in CI 17rc1
artemgavrilov Sep 9, 2024
3ad47fb
Merge remote-tracking branch 'origin/main' into PMM-13154-QAN-PG17
artemgavrilov Sep 9, 2024
2d2a653
PMM-13154 Format sources
artemgavrilov Sep 9, 2024
514bd9f
PMM-13154 Update test
artemgavrilov Sep 9, 2024
a093ea2
Merge branch 'main' into PMM-13154-QAN-PG17
JiriCtvrtka Oct 3, 2024
a38ad97
Merge branch 'main' into PMM-13154-QAN-PG17
BupycHuk Oct 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/workflows/agent.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ jobs:
strategy:
matrix:
images:
- { mysql: 'mysql:5.6', mongo: 'mongo:4.2', postgres: 'postgres:10', pmm_server: 'percona/pmm-server:2.0.0' }
- { mysql: 'mysql:5.7', mongo: 'mongo:4.4', postgres: 'postgres:11', pmm_server: 'percona/pmm-server:2.0.1' }
- { mysql: 'mysql:8.0', mongo: 'mongo:4.4', postgres: 'postgres:12', pmm_server: 'percona/pmm-server:2.1.0' }
- { mysql: 'mysql:8.0', mongo: 'mongo:4.4', postgres: 'postgres:13', pmm_server: 'percona/pmm-server:2.2.0' }
- { mysql: 'mysql:5.6', mongo: 'mongo:4.2', postgres: 'postgres:14', pmm_server: 'percona/pmm-server:2.0.0' }
- { mysql: 'mysql:5.7', mongo: 'mongo:4.4', postgres: 'postgres:15', pmm_server: 'percona/pmm-server:2.0.1' }
- { mysql: 'mysql:8.0', mongo: 'mongo:4.4', postgres: 'postgres:16', pmm_server: 'percona/pmm-server:2.1.0' }
- { mysql: 'mysql:8.0', mongo: 'mongo:4.4', postgres: 'postgres:17rc1', pmm_server: 'percona/pmm-server:2.2.0' }

# Percona + latest PMM Server release
- { mysql: 'percona:5.6', mongo: 'percona/percona-server-mongodb:4.2', postgres: 'perconalab/percona-distribution-postgresql:11', pg_libs: 'pg_stat_statements,pg_stat_monitor', pmm_server: 'percona/pmm-server:2' }
- { mysql: 'percona:5.7', mongo: 'percona/percona-server-mongodb:4.4', postgres: 'perconalab/percona-distribution-postgresql:12.8-pg_stat', pg_libs: 'pg_stat_statements,pg_stat_monitor', pmm_server: 'percona/pmm-server:2' }
- { mysql: 'percona:8.0', mongo: 'percona/percona-server-mongodb:4.4', postgres: 'perconalab/percona-distribution-postgresql:13.5-pg_stat', pg_libs: 'pg_stat_statements,pg_stat_monitor', pmm_server: 'percona/pmm-server:2' }
- { mysql: 'percona:5.6', mongo: 'percona/percona-server-mongodb:4.2', postgres: 'perconalab/percona-distribution-postgresql:15', pg_libs: 'pg_stat_statements,pg_stat_monitor', pmm_server: 'percona/pmm-server:2' }
- { mysql: 'percona:5.7', mongo: 'percona/percona-server-mongodb:4.4', postgres: 'perconalab/percona-distribution-postgresql:16', pg_libs: 'pg_stat_statements,pg_stat_monitor', pmm_server: 'percona/pmm-server:2' }
- { mysql: 'percona:8.0', mongo: 'percona/percona-server-mongodb:4.4', postgres: 'perconalab/percona-distribution-postgresql:17-dev', pg_libs: 'pg_stat_statements,pg_stat_monitor', pmm_server: 'percona/pmm-server:2' }

# MariaDB (only 3 latest GA versions)
# + older supported MongoDB versions
Expand All @@ -44,9 +44,9 @@ jobs:
# - MYSQL_IMAGE=mariadb:10.0
# - MYSQL_IMAGE=mariadb:10.1

- { mysql: 'mariadb:10.2', mongo: 'mongo:4.4', postgres: 'postgres:9.4', pmm_server: 'perconalab/pmm-server:dev-latest' }
- { mysql: 'mariadb:10.3', mongo: 'percona/percona-server-mongodb:4.4', postgres: 'postgres:9.5', pmm_server: 'perconalab/pmm-server:dev-latest' }
- { mysql: 'mariadb:10.4', postgres: 'postgres:9.6', pmm_server: 'perconalab/pmm-server:dev-latest' }
- { mysql: 'mariadb:10.2', mongo: 'mongo:4.4', postgres: 'postgres:12', pmm_server: 'perconalab/pmm-server:dev-latest' }
- { mysql: 'mariadb:10.3', mongo: 'percona/percona-server-mongodb:4.4', postgres: 'postgres:13', pmm_server: 'perconalab/pmm-server:dev-latest' }
- { mysql: 'mariadb:10.4', postgres: 'postgres:14', pmm_server: 'perconalab/pmm-server:dev-latest' }

continue-on-error: true

Expand Down
79 changes: 51 additions & 28 deletions agent/agents/postgres/pgstatmonitor/pgstatmonitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,13 @@ const (
pgStatMonitorVersion20PG13
pgStatMonitorVersion20PG14
pgStatMonitorVersion20PG15
pgStatMonitorVersion20PG16
pgStatMonitorVersion21PG12
pgStatMonitorVersion21PG13
pgStatMonitorVersion21PG14
pgStatMonitorVersion21PG15
pgStatMonitorVersion21PG16
pgStatMonitorVersion21PG17
)

const (
Expand Down Expand Up @@ -184,40 +191,54 @@ func getPGMonitorVersion(q *reform.Querier) (pgStatMonitorVersion, pgStatMonitor

var version pgStatMonitorVersion
switch {
case vPGSM.Core().GreaterThanOrEqual(v21):
switch {
case vPG >= 17:
version = pgStatMonitorVersion21PG17
case vPG >= 16:
version = pgStatMonitorVersion21PG16
case vPG >= 15:
version = pgStatMonitorVersion21PG15
case vPG >= 14:
version = pgStatMonitorVersion21PG14
case vPG >= 13:
version = pgStatMonitorVersion21PG13
default:
version = pgStatMonitorVersion21PG12
}
case vPGSM.Core().GreaterThanOrEqual(v20):
if vPG >= 15 {
switch {
case vPG >= 16:
version = pgStatMonitorVersion20PG16
case vPG >= 15:
version = pgStatMonitorVersion20PG15
break
}
if vPG >= 14 {
case vPG >= 14:
version = pgStatMonitorVersion20PG14
break
}
if vPG >= 13 {
case vPG >= 13:
version = pgStatMonitorVersion20PG13
break
default:
version = pgStatMonitorVersion20PG12
}
version = pgStatMonitorVersion20PG12
case vPGSM.Core().GreaterThanOrEqual(v11):
if vPG >= 14 {
switch {
case vPG >= 14:
version = pgStatMonitorVersion11PG14
break
}
if vPG >= 13 {
case vPG >= 13:
version = pgStatMonitorVersion11PG13
break
default:
version = pgStatMonitorVersion11PG12
}
version = pgStatMonitorVersion11PG12

case vPGSM.Core().GreaterThanOrEqual(v10):
if vPG >= 14 {
switch {
case vPG >= 14:
version = pgStatMonitorVersion10PG14
break
}
if vPG >= 13 {
case vPG >= 13:
version = pgStatMonitorVersion10PG13
break
default:
version = pgStatMonitorVersion10PG12
}
version = pgStatMonitorVersion10PG12

case vPGSM.GreaterThanOrEqual(v09):
version = pgStatMonitorVersion09
case vPGSM.GreaterThanOrEqual(v08):
Expand Down Expand Up @@ -563,10 +584,10 @@ func (m *PGStatMonitorQAN) makeBuckets(current, cache map[time.Time]map[string]*
mb.Postgresql.HistogramItems = histogram
}

if (currentPSM.PlanTotalTime - prevPSM.PlanTotalTime) != 0 {
mb.Postgresql.MPlanTimeSum = float32(currentPSM.PlanTotalTime-prevPSM.PlanTotalTime) / 1000
mb.Postgresql.MPlanTimeMin = float32(currentPSM.PlanMinTime) / 1000
mb.Postgresql.MPlanTimeMax = float32(currentPSM.PlanMaxTime) / 1000
if (currentPSM.TotalPlanTime - prevPSM.TotalPlanTime) != 0 {
mb.Postgresql.MPlanTimeSum = float32(currentPSM.TotalPlanTime-prevPSM.TotalPlanTime) / 1000
mb.Postgresql.MPlanTimeMin = float32(currentPSM.MinPlanTime) / 1000
mb.Postgresql.MPlanTimeMax = float32(currentPSM.MaxPlanTime) / 1000
mb.Postgresql.MPlanTimeCnt = count
}

Expand Down Expand Up @@ -618,9 +639,11 @@ func (m *PGStatMonitorQAN) makeBuckets(current, cache map[time.Time]map[string]*
{float32(currentPSM.WalBytes - prevPSM.WalBytes), &mb.Postgresql.MWalBytesSum, &mb.Postgresql.MWalBytesCnt},

// convert milliseconds to seconds
{float32(currentPSM.TotalTime-prevPSM.TotalTime) / 1000, &mb.Common.MQueryTimeSum, &mb.Common.MQueryTimeCnt},
{float32(currentPSM.BlkReadTime-prevPSM.BlkReadTime) / 1000, &mb.Postgresql.MBlkReadTimeSum, &mb.Postgresql.MBlkReadTimeCnt},
{float32(currentPSM.BlkWriteTime-prevPSM.BlkWriteTime) / 1000, &mb.Postgresql.MBlkWriteTimeSum, &mb.Postgresql.MBlkWriteTimeCnt},
{float32(currentPSM.TotalExecTime-prevPSM.TotalExecTime) / 1000, &mb.Common.MQueryTimeSum, &mb.Common.MQueryTimeCnt},
{float32(currentPSM.SharedBlkReadTime-prevPSM.SharedBlkReadTime) / 1000, &mb.Postgresql.MSharedBlkReadTimeSum, &mb.Postgresql.MSharedBlkReadTimeCnt},
{float32(currentPSM.SharedBlkWriteTime-prevPSM.SharedBlkWriteTime) / 1000, &mb.Postgresql.MSharedBlkWriteTimeSum, &mb.Postgresql.MSharedBlkWriteTimeCnt},
{float32(currentPSM.LocalBlkReadTime-prevPSM.LocalBlkReadTime) / 1000, &mb.Postgresql.MLocalBlkReadTimeSum, &mb.Postgresql.MLocalBlkReadTimeCnt},
{float32(currentPSM.LocalBlkWriteTime-prevPSM.LocalBlkWriteTime) / 1000, &mb.Postgresql.MLocalBlkWriteTimeSum, &mb.Postgresql.MLocalBlkWriteTimeCnt},

// convert microseconds to seconds
{float32(cpuSysTime) / 1000000, &mb.Postgresql.MCpuSysTimeSum, &mb.Postgresql.MCpuSysTimeCnt},
Expand Down
Loading
Loading