Skip to content

Commit 1829502

Browse files
committed
fix: fixed pg edition check and pg_stat_statements check
1 parent a03b5db commit 1829502

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

mamonsu/plugins/pgsql/statements.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# -*- coding: utf-8 -*-
2+
import logging
23

34
from mamonsu.plugins.pgsql.plugin import PgsqlPlugin as Plugin
45
from distutils.version import LooseVersion
@@ -16,7 +17,7 @@ class Statements(Plugin):
1617
"pgpro_stats":
1718
"""
1819
SELECT {metrics}
19-
FROM {extension_schema}.pgpro_stats_totals
20+
FROM {extension_schema}.pgpro_stats_totals()
2021
WHERE object_type = 'cluster';
2122
""",
2223
"pgpro_stats_bootstrap":
@@ -94,31 +95,32 @@ class Statements(Plugin):
9495
("PostgreSQL Statements: Spent Time", 1),
9596
("PostgreSQL Statements: WAL Statistics", None)]
9697

98+
extension = ""
99+
97100
# pgpro_stats работает только для PGPRO 12+ в режиме bootstrap и/или если в конфиге указан суперпользователь mamonsu
98101
def run(self, zbx):
99-
extension = ""
100102
if (Pooler.is_pgpro() or Pooler.is_pgpro_ee()) and Pooler.server_version_greater("12"):
101103
if Pooler.extension_installed("pgpro_stats"):
102104
if not Pooler.is_bootstraped():
103105
self.disable_and_exit_if_not_superuser()
104-
extension = "pgpro_stats"
106+
self.extension = "pgpro_stats"
105107
elif Pooler.extension_installed("pg_stat_statements"):
106-
extension = "pg_stat_statements"
108+
self.extension = "pg_stat_statements"
107109
else:
108110
self.disable_and_exit_if_extension_is_not_installed(ext="pgpro_stats")
109111
else:
110112
if not Pooler.extension_installed("pg_stat_statements"):
111113
self.disable_and_exit_if_extension_is_not_installed(ext="pg_stat_statements")
112-
extension = "pg_stat_statements"
114+
self.extension = "pg_stat_statements"
113115

114-
extension_schema = self.extension_schema(extension=extension)
116+
extension_schema = self.extension_schema(extension=self.extension)
115117

116118
# TODO: add 13 and 14 items when pgpro_stats added new WAL metrics
117119
all_items = self.Items.copy()
118120
if Pooler.server_version_greater("14"):
119121
self.Items[5][1] = self.Items[5][1].format("total_exec_time+total_plan_time")
120-
if not Pooler.is_pgpro() or not Pooler.is_pgpro_ee():
121-
all_items += self.Items_pg_13
122+
all_items += self.Items_pg_13
123+
if self.extension == "pg_stat_statements":
122124
info_items = self.Items_pg_14
123125
info_params = [x[1] for x in info_items]
124126
info_result = Pooler.query(
@@ -127,18 +129,16 @@ def run(self, zbx):
127129
zbx_key, value = "pgsql.{0}".format(
128130
info_items[key][0]), int(value)
129131
zbx.send(zbx_key, value, info_items[key][4])
130-
columns = [x[1] for x in all_items]
131132
elif Pooler.server_version_greater("13"):
132133
self.Items[5][1] = self.Items[5][1].format("total_exec_time+total_plan_time")
133134
all_items += self.Items_pg_13
134-
columns = [x[1] for x in all_items]
135135
else:
136136
self.Items[5][1] = self.Items[5][1].format("total_time")
137-
columns = [x[1] for x in all_items]
138-
result = Pooler.query(self.query[extension + "_bootstrap"].format(
137+
columns = [x[1] for x in all_items]
138+
result = Pooler.query(self.query[self.extension + "_bootstrap"].format(
139139
columns=", ".join([x[0][x[0].find("[") + 1:x[0].find("]")] for x in all_items]),
140140
metrics=(", ".join(columns)), extension_schema=extension_schema) if Pooler.is_bootstraped() else self.query[
141-
extension].format(metrics=(", ".join(columns)), extension_schema=extension_schema))
141+
self.extension].format(metrics=(", ".join(columns)), extension_schema=extension_schema))
142142
for key, value in enumerate(result[0]):
143143
zbx_key, value = "pgsql.{0}".format(all_items[key][0]), int(value)
144144
zbx.send(zbx_key, value, all_items[key][4])
@@ -191,16 +191,16 @@ def graphs(self, template, dashboard=False):
191191
def keys_and_queries(self, template_zabbix):
192192
if (Pooler.is_pgpro() or Pooler.is_pgpro_ee()) and Pooler.server_version_greater("12"):
193193
if Pooler.extension_installed("pgpro_stats"):
194-
extension = "pgpro_stats"
194+
self.extension = "pgpro_stats"
195195
elif Pooler.extension_installed("pg_stat_statements"):
196-
extension = "pg_stat_statements"
196+
self.extension = "pg_stat_statements"
197197
else:
198198
if Pooler.extension_installed("pg_stat_statements"):
199-
extension = "pg_stat_statements"
199+
self.extension = "pg_stat_statements"
200200

201201
if Pooler.extension_installed("pgpro_stats") or Pooler.extension_installed("pg_stat_statements"):
202202

203-
extension_schema = self.extension_schema(extension=extension)
203+
extension_schema = self.extension_schema(extension=self.extension)
204204

205205
result = []
206206
all_items = self.Items.copy()
@@ -216,13 +216,13 @@ def keys_and_queries(self, template_zabbix):
216216
for i, item in enumerate(all_items):
217217
keys = item[0].split("[")
218218
result.append("{0}[*],$2 $1 -Aqtc \"{1}\"".format("{0}{1}.{2}".format(self.key, keys[0], keys[1][:-1]),
219-
self.query[extension + "_bootstrap"].format(
219+
self.query[self.extension + "_bootstrap"].format(
220220
columns=", ".join(
221221
[x[0][x[0].find("[") + 1:x[0].find("]")] for x
222222
in
223223
all_items]), metrics=(", ".join(columns)),
224224
extension_schema=extension_schema) if Pooler.is_bootstraped() else
225-
self.query[extension].format(
225+
self.query[self.extension].format(
226226
metrics=(", ".join(columns)),
227227
extension_schema=extension_schema)))
228228

0 commit comments

Comments
 (0)