mirror of
https://github.com/prometheus-community/postgres_exporter
synced 2025-04-08 02:01:23 +00:00
Merge 108177593c
into d85a7710bf
This commit is contained in:
commit
963d978b76
@ -71,47 +71,43 @@ var (
|
|||||||
prometheus.Labels{},
|
prometheus.Labels{},
|
||||||
)
|
)
|
||||||
|
|
||||||
pgStatStatementsQuery = `SELECT
|
pgStatStatementsQuery = `WITH percentiles AS (
|
||||||
pg_get_userbyid(userid) as user,
|
SELECT percentile_cont(0.1) WITHIN GROUP (ORDER BY total_time) AS percentile
|
||||||
pg_database.datname,
|
FROM pg_stat_statements
|
||||||
pg_stat_statements.queryid,
|
|
||||||
pg_stat_statements.calls as calls_total,
|
|
||||||
pg_stat_statements.total_time / 1000.0 as seconds_total,
|
|
||||||
pg_stat_statements.rows as rows_total,
|
|
||||||
pg_stat_statements.blk_read_time / 1000.0 as block_read_seconds_total,
|
|
||||||
pg_stat_statements.blk_write_time / 1000.0 as block_write_seconds_total
|
|
||||||
FROM pg_stat_statements
|
|
||||||
JOIN pg_database
|
|
||||||
ON pg_database.oid = pg_stat_statements.dbid
|
|
||||||
WHERE
|
|
||||||
total_time > (
|
|
||||||
SELECT percentile_cont(0.1)
|
|
||||||
WITHIN GROUP (ORDER BY total_time)
|
|
||||||
FROM pg_stat_statements
|
|
||||||
)
|
)
|
||||||
ORDER BY seconds_total DESC
|
SELECT DISTINCT ON (pss.queryid, pg_get_userbyid(pss.userid), pg_database.datname)
|
||||||
LIMIT 100;`
|
pg_get_userbyid(pss.userid) as user,
|
||||||
|
pg_database.datname,
|
||||||
|
pss.queryid,
|
||||||
|
pss.calls as calls_total,
|
||||||
|
pss.total_time / 1000.0 as seconds_total,
|
||||||
|
pss.rows as rows_total,
|
||||||
|
pss.blk_read_time / 1000.0 as block_read_seconds_total,
|
||||||
|
pss.blk_write_time / 1000.0 as block_write_seconds_total
|
||||||
|
FROM pg_stat_statements pss
|
||||||
|
JOIN pg_database ON pg_database.oid = pss.dbid
|
||||||
|
CROSS JOIN percentiles
|
||||||
|
WHERE pss.total_time > (SELECT percentile FROM percentiles)
|
||||||
|
ORDER BY pss.queryid, pg_get_userbyid(pss.userid) DESC, pg_database.datname
|
||||||
|
LIMIT 100;`
|
||||||
|
|
||||||
pgStatStatementsNewQuery = `SELECT
|
pgStatStatementsNewQuery = `SELECT DISTINCT ON (pss.queryid, pg_get_userbyid(pss.userid), pg_database.datname)
|
||||||
pg_get_userbyid(userid) as user,
|
pg_get_userbyid(pss.userid) AS user,
|
||||||
pg_database.datname,
|
pg_database.datname AS database_name,
|
||||||
pg_stat_statements.queryid,
|
pss.queryid,
|
||||||
pg_stat_statements.calls as calls_total,
|
pss.calls AS calls_total,
|
||||||
pg_stat_statements.total_exec_time / 1000.0 as seconds_total,
|
pss.total_exec_time / 1000.0 AS seconds_total,
|
||||||
pg_stat_statements.rows as rows_total,
|
pss.rows AS rows_total,
|
||||||
pg_stat_statements.blk_read_time / 1000.0 as block_read_seconds_total,
|
pss.blk_read_time / 1000.0 AS block_read_seconds_total,
|
||||||
pg_stat_statements.blk_write_time / 1000.0 as block_write_seconds_total
|
pss.blk_write_time / 1000.0 AS block_write_seconds_total
|
||||||
FROM pg_stat_statements
|
FROM pg_stat_statements pss
|
||||||
JOIN pg_database
|
JOIN pg_database ON pg_database.oid = pss.dbid
|
||||||
ON pg_database.oid = pg_stat_statements.dbid
|
JOIN (
|
||||||
WHERE
|
SELECT percentile_cont(0.1) WITHIN GROUP (ORDER BY total_exec_time) AS percentile_val
|
||||||
total_exec_time > (
|
FROM pg_stat_statements
|
||||||
SELECT percentile_cont(0.1)
|
) AS perc ON pss.total_exec_time > perc.percentile_val
|
||||||
WITHIN GROUP (ORDER BY total_exec_time)
|
ORDER BY pss.queryid, pg_get_userbyid(pss.userid) DESC, pg_database.datname
|
||||||
FROM pg_stat_statements
|
LIMIT 100;`
|
||||||
)
|
|
||||||
ORDER BY seconds_total DESC
|
|
||||||
LIMIT 100;`
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (PGStatStatementsCollector) Update(ctx context.Context, instance *instance, ch chan<- prometheus.Metric) error {
|
func (PGStatStatementsCollector) Update(ctx context.Context, instance *instance, ch chan<- prometheus.Metric) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user