7
7
8
8
class PgStatStatement (Plugin ):
9
9
AgentPluginType = "pg"
10
- # TODO: добавить выбор схемы
11
10
query = """
12
- SELECT {0 }
13
- FROM public.{1 };
11
+ SELECT {metrics }
12
+ FROM {extension_schema}.{extension };
14
13
"""
15
14
query_info = """
16
- SELECT {0 }
15
+ SELECT {metrics }
17
16
FROM public.pg_stat_statements_info;
18
17
"""
19
18
key = "pgsql."
@@ -86,15 +85,17 @@ def run(self, zbx):
86
85
self .disable_and_exit_if_extension_is_not_installed (ext = "pg_stat_statements/pgpro_stats" )
87
86
if Pooler .is_pgpro () or Pooler .is_pgpro_ee ():
88
87
extension = "pgpro_stats_statements"
88
+ extension_schema = self .extension_schema (extension = "pgpro_stats" )
89
89
else :
90
90
extension = "pg_stat_statements"
91
+ extension_schema = self .extension_schema (extension = "pg_stat_statements" )
91
92
if Pooler .server_version_greater ("14" ):
92
93
self .Items [5 ][1 ] = self .Items [5 ][1 ].format ("total_exec_time+total_plan_time" )
93
94
all_items = self .Items + self .Items_pg_13
94
95
columns = [x [1 ] for x in all_items ]
95
96
info_items = self .Items_pg_14
96
97
info_params = [x [1 ] for x in info_items ]
97
- info_result = Pooler .query (self .query_info .format (", " .join (info_params )))
98
+ info_result = Pooler .query (self .query_info .format (metrics = ( ", " .join (info_params ) )))
98
99
for key , value in enumerate (info_result [0 ]):
99
100
zbx_key , value = "pgsql.{0}" .format (
100
101
info_items [key ][0 ]), int (value )
@@ -107,7 +108,7 @@ def run(self, zbx):
107
108
self .Items [5 ][1 ] = self .Items [5 ][1 ].format ("total_time" )
108
109
all_items = self .Items
109
110
columns = [x [1 ] for x in all_items ]
110
- result = Pooler .query (self .query .format (", " .join (columns ), extension ))
111
+ result = Pooler .query (self .query .format (metrics = ( ", " .join (columns )), extension_schema = extension_schema , extension = extension ))
111
112
for key , value in enumerate (result [0 ]):
112
113
zbx_key , value = "pgsql.{0}" .format (all_items [key ][0 ]), int (value )
113
114
zbx .send (zbx_key , value , all_items [key ][4 ])
@@ -173,14 +174,14 @@ def keys_and_queries(self, template_zabbix):
173
174
for i , item in enumerate (all_items ):
174
175
keys = item [0 ].split ("[" )
175
176
result .append ("{0}[*],$2 $1 -c \" {1}\" " .format ("{0}{1}.{2}" .format (self .key , keys [0 ], keys [1 ][:- 1 ]),
176
- self .query .format (item [1 ], extension )))
177
+ self .query .format (metrics = item [1 ], extension_schema = extension_schema , extension = extension )))
177
178
178
179
if LooseVersion (self .VersionPG ) >= LooseVersion ("14" ):
179
180
all_items = self .Items_pg_14
180
181
for i , item in enumerate (all_items ):
181
182
keys = item [0 ].split ("[" )
182
183
result .append ("{0}[*],$2 $1 -c \" {1}\" " .format ("{0}{1}.{2}" .format (self .key , keys [0 ], keys [1 ][:- 1 ]),
183
- self .query_info .format (item [1 ])))
184
+ self .query_info .format (metrics = ( item [1 ]) )))
184
185
return template_zabbix .key_and_query (result )
185
186
else :
186
187
return
0 commit comments