/ / pg_stat_activity dados agregados para monitoramento em json - postgresql-9.3

pg_stat_activity dados agregados para monitoramento em json - postgresql-9.3

Eu tenho que resumir os dados em pg_stat_activity e retorná-los como json. Postgres 9.3 a bordo. O resultado necessário é como:

{
"web": 67,
"postgres": 2,
"totalSessions": 69,
"idle in transaction": 2,
"active": 1,
"idle": 66
}

onde active é o número de sessões ativas,ocioso - de ocioso, total - a soma de ambos e o restante é o número de sessões por usuário. Não precisamos agrupá-lo por bancos de dados, mas o princípio seria o mesmo.

Não - como posso fazer isso?

Respostas:

0 para resposta № 1

O qry que eu criei não é melhor então:

mon=# with pre as (
select  DISTINCT
concat(""totalSessions":",sum(count(1)) over (),"") total
, concat(""",usename,"":",sum(count(1)) over (partition by usename),"") u
, concat(""",state,"":",sum(count(1)) over (partition by state),"") s
from pg_stat_activity
group by state,usename
)
select concat("{",string_agg(j,","),"}")::json from (
select distinct u j from pre u
union all
select distinct total from pre s
union all
select distinct s from pre s
) pg_stat_act
;
concat
-------------------------------------------------------------------------------------------
{"web":67,"postgres":2,"totalSessions":69,"idle in transaction":2,"active":1,"idle":66}
(1 row)

Time: 1.807 ms