@@ -27,7 +27,7 @@ class Statements(Plugin):
2727
2828 query_info = """
2929 SELECT {metrics}
30- FROM {extension_schema}.pg_stat_statements_info ;
30+ FROM {extension_schema}.{info_view_name} ;
3131 """
3232 key = "pgsql."
3333 # zbx_key, sql, desc, unit, delta, (Graph, color, side)
@@ -88,6 +88,32 @@ class Statements(Plugin):
8888 ("PostgreSQL Statements Info: Last Statistics Reset Time" , "9C8A4E" , 0 ))
8989 ]
9090
91+ Items_pgpro_stats_1_8 = [
92+ ("stat[read_bytes]" ,
93+ "(sum(shared_blks_read+local_blks_read+temp_blks_read)*8*1024)::bigint" ,
94+ "Read bytes/s" , Plugin .UNITS .bytes_per_second , Plugin .DELTA .speed_per_second ,
95+ ("PostgreSQL Statements: Bytes" , "87C2B9" , 0 )),
96+ ("stat[write_bytes]" ,
97+ "(sum(shared_blks_written+local_blks_written+temp_blks_written)*8*1024)::bigint" ,
98+ "Write bytes/s" , Plugin .UNITS .bytes_per_second , Plugin .DELTA .speed_per_second ,
99+ ("PostgreSQL Statements: Bytes" , "793F5D" , 0 )),
100+ ("stat[dirty_bytes]" ,
101+ "(sum(shared_blks_dirtied+local_blks_dirtied)*8*1024)::bigint" ,
102+ "Dirty bytes/s" , Plugin .UNITS .bytes_per_second , Plugin .DELTA .speed_per_second ,
103+ ("PostgreSQL Statements: Bytes" , "9C8A4E" , 0 )),
104+ ("stat[read_time]" ,
105+ "(sum(shared_blk_read_time+local_blk_read_time+temp_blk_read_time)/float4(100))::bigint" ,
106+ "Read IO Time" , Plugin .UNITS .s , Plugin .DELTA .speed_per_second ,
107+ ("PostgreSQL Statements: Spent Time" , "87C2B9" , 0 )),
108+ ("stat[write_time]" ,
109+ "(sum(shared_blk_write_time+local_blk_write_time+temp_blk_write_time)/float4(100))::bigint" ,
110+ "Write IO Time" , Plugin .UNITS .s , Plugin .DELTA .speed_per_second ,
111+ ("PostgreSQL Statements: Spent Time" , "793F5D" , 0 )),
112+ ["stat[other_time]" ,
113+ "(sum(total_exec_time+total_plan_time-shared_blk_read_time-local_blk_read_time-temp_blk_read_time-shared_blk_write_time-local_blk_write_time-temp_blk_write_time)/float4(100))::bigint" ,
114+ "Other (mostly CPU) Time" , Plugin .UNITS .s , Plugin .DELTA .speed_per_second ,
115+ ("PostgreSQL Statements: Spent Time" , "9C8A4E" , 0 )]]
116+
91117 all_graphs = [
92118 ("PostgreSQL Statements: Bytes" , None ),
93119 ("PostgreSQL Statements: Spent Time" , 1 ),
@@ -115,21 +141,45 @@ def run(self, zbx):
115141
116142 # TODO: add 13 and 14 items when pgpro_stats added new WAL metrics
117143 all_items = self .Items .copy ()
118- if Pooler .server_version_greater ("14" ):
144+
145+ if Pooler .extension_installed ("pgpro_stats" ) and Pooler .extension_version_greater ("pgpro_stats" , "1.8" ):
146+ info_view = 'pg_stat_statements_info'
147+ if self .extension == "pgpro_stats" :
148+ info_view = 'pgpro_stats_info'
149+
150+ info_items = self .Items_pg_14
151+ info_params = [x [1 ] for x in info_items ]
152+ info_result = Pooler .query (
153+ self .query_info .format (metrics = (", " .join (info_params )), extension_schema = extension_schema , info_view_name = info_view ))
154+ for key , value in enumerate (info_result [0 ]):
155+ zbx_key , value = "pgsql.{0}" .format (
156+ info_items [key ][0 ]), int (value )
157+ zbx .send (zbx_key , value , info_items [key ][4 ])
158+
159+ all_items = self .Items_pgpro_stats_1_8 .copy ()
160+ all_items += self .Items_pg_13
161+
162+ elif Pooler .server_version_greater ("14" ):
119163 self .Items [5 ][1 ] = self .Items [5 ][1 ].format ("total_exec_time+total_plan_time" )
120164 all_items += self .Items_pg_13
165+ info_view = 'pgpro_stats_info'
121166 if self .extension == "pg_stat_statements" :
122- info_items = self .Items_pg_14
123- info_params = [x [1 ] for x in info_items ]
124- info_result = Pooler .query (
125- self .query_info .format (metrics = (", " .join (info_params )), extension_schema = extension_schema ))
126- for key , value in enumerate (info_result [0 ]):
127- zbx_key , value = "pgsql.{0}" .format (
128- info_items [key ][0 ]), int (value )
129- zbx .send (zbx_key , value , info_items [key ][4 ])
167+ info_view = 'pg_stat_statements_info'
168+ info_items = self .Items_pg_14
169+ info_params = [x [1 ] for x in info_items ]
170+ info_result = Pooler .query (
171+ self .query_info .format (metrics = (", " .join (info_params )),
172+ extension_schema = extension_schema ,
173+ info_view_name = info_view ))
174+ for key , value in enumerate (info_result [0 ]):
175+ zbx_key , value = "pgsql.{0}" .format (
176+ info_items [key ][0 ]), int (value )
177+ zbx .send (zbx_key , value , info_items [key ][4 ])
178+
130179 elif Pooler .server_version_greater ("13" ):
131180 self .Items [5 ][1 ] = self .Items [5 ][1 ].format ("total_exec_time+total_plan_time" )
132181 all_items += self .Items_pg_13
182+
133183 else :
134184 self .Items [5 ][1 ] = self .Items [5 ][1 ].format ("total_time" )
135185 columns = [x [1 ] for x in all_items ]
0 commit comments