8000 Merge branch 'dev' · postgrespro/mamonsu@499a3bc · GitHub
[go: up one dir, main page]

Skip to content

Commit 499a3bc

Browse files
committed
Merge branch 'dev'
2 parents 487ed84 + 1f72ca6 commit 499a3bc

File tree

6 files changed

+49
-29
lines changed

6 files changed

+49
-29
lines changed

mamonsu/plugins/pgsql/driver/pool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def extension_installed(self, ext, db=None):
210210
result = self.query("""
211211
SELECT count(*)
212212
FROM pg_catalog.pg_extension
213-
WHERE extname = '{0}';
213+
WHERE lower(extname) = lower('{0}');
214214
""".format(ext), db)
215215
return (int(result[0][0])) == 1
216216

mamonsu/plugins/pgsql/pg_buffercache.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ class PgBufferCache(Plugin):
3030
graph_name = "PostgreSQL pg_buffercache: Shared Buffer"
3131

3232
def run(self, zbx):
33-
if not self.extension_installed("pg_buffercache"):
34-
return
33+
if not Pooler.extension_installed("pg_buffercache"):
34+
self.disable_and_exit_if_extension_is_not_installed("pg_buffercache")
3535
result = Pooler.run_sql_type("buffer_cache", extension="pg_buffercache")[0]
3636
for i, value in enumerate(result):
3737
zbx.send("pgsql.buffers[{0}]".format(self.Items[i][0]), value)
@@ -65,7 +65,7 @@ def graphs(self, template, dashboard=False):
6565
return []
6666

6767
def keys_and_queries(self, template_zabbix):
68-
if self.extension_installed("pg_buffercache"):
68+
if Pooler.extension_installed("pg_buffercache"):
6969
result = []
7070
for i, item in enumerate(self.Items):
7171
result.append("{0}[*],$2 $1 -c \"{1}\"".format(self.key.format("." + item[0]), self.query[i].format(

mamonsu/plugins/pgsql/plugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ def check(self, extension):
3434
check(self, ext)
3535
self._ext_check_count += 1
3636

37+
# TODO: reason to create cache-like variable for extension???
3738
return self._ext_installed
3839

3940
def extension_schema(self, extension, db=None):
4041
return Pooler.extension_schema(extension, db)
4142

4243
def disable_and_exit_if_extension_is_not_installed(self, ext, db=None):
43-
if not self.extension_installed(ext, db=db, silent=True):
44+
if not Pooler.extension_installed(ext, db=db):
4445
self.disable()
4546
raise PluginDisableException("""Disable plugin and exit, because '{0}' \
4647
extension is not installed. Enable it in PostgreSQL instance: '{1}',

mamonsu/plugins/pgsql/statements.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,21 @@ class Statements(Plugin):
9595
("PostgreSQL Statements: Spend Time", 1),
9696
("PostgreSQL Statements: WAL Statistics", None)]
9797

98+
# pgpro_stats работает только для PGPRO 12+ в режиме bootstrap и/или если в конфиге указан суперпользователь mamonsu
9899
def run(self, zbx):
99-
if not self.extension_installed("pg_stat_statements") or not self.extension_installed("pgpro_stats"):
100-
self.disable_and_exit_if_extension_is_not_installed(ext="pg_stat_statements/pgpro_stats")
100+
extension = ""
101101
if (Pooler.is_pgpro() or Pooler.is_pgpro_ee()) and Pooler.server_version_greater("12"):
102-
if not Pooler.is_bootstraped():
103-
self.disable_and_exit_if_not_superuser()
104-
extension = "pgpro_stats"
102+
if Pooler.extension_installed("pgpro_stats"):
103+
if not Pooler.is_bootstraped():
104+
self.disable_and_exit_if_not_superuser()
105+
extension = "pgpro_stats"
106+
elif Pooler.extension_installed("pg_stat_statements"):
107+
extension = "pg_stat_statements"
108+
else:
109+
self.disable_and_exit_if_extension_is_not_installed(ext="pgpro_stats")
105110
else:
111+
if not Pooler.extension_installed("pg_stat_statements"):
112+
self.disable_and_exit_if_extension_is_not_installed(ext="pg_stat_statements")
106113
extension = "pg_stat_statements"
107114

108115
extension_schema = self.extension_schema(extension=extension)
@@ -184,13 +191,16 @@ def graphs(self, template, dashboard=False):
184191
return []
185192

186193
def keys_and_queries(self, template_zabbix):
187-
if self.extension_installed("pg_stat_statements") or not self.extension_installed("pgpro_stats"):
188-
if (Pooler.is_pgpro() or Pooler.is_pgpro_ee()) and Pooler.server_version_greater("12"):
189-
if not Pooler.is_bootstraped():
190-
self.disable_and_exit_if_not_superuser()
194+
if (Pooler.is_pgpro() or Pooler.is_pgpro_ee()) and Pooler.server_version_greater("12"):
195+
if Pooler.extension_installed("pgpro_stats"):
191196
extension = "pgpro_stats"
192-
else:
197+
elif Pooler.extension_installed("pg_stat_statements"):
193198
extension = "pg_stat_statements"
199+
else:
200+
if Pooler.extension_installed("pg_stat_statements"):
201+
extension = "pg_stat_statements"
202+
203+
if Pooler.extension_installed("pgpro_stats") or Pooler.extension_installed("pg_stat_statements"):
194204

195205
extension_schema = self.extension_schema(extension=extension)
196206

mamonsu/plugins/pgsql/wait_sampling.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -244,26 +244,35 @@ def find_and_send(where, what, zbx):
244244
"pgsql.{0}".format(item[1]),
245245
float(0), Plugin.DELTA.speed_per_second)
246246

247-
if not self.extension_installed("pg_wait_sampling") or not self.extension_installed("pgpro_stats"):
248-
self.disable_and_exit_if_extension_is_not_installed(ext="pg_wait_sampling/pgpro_stats")
247+
extension = ""
249248
if Pooler.is_pgpro() or Pooler.is_pgpro_ee():
250-
if not Pooler.is_bootstraped():
251-
self.disable_and_exit_if_not_superuser()
252-
extension = "pgpro_stats"
249+
if Pooler.extension_installed("pgpro_stats"):
250+
if not Pooler.is_bootstraped():
251+
self.disable_and_exit_if_not_superuser()
252+
extension = "pgpro_stats"
253+
elif Pooler.extension_installed("pg_wait_sampling"):
254+
extension = "pg_wait_sampling"
255+
else:
256+
self.disable_and_exit_if_extension_is_not_installed(ext="pgpro_stats")
253257
else:
258+
if not Pooler.extension_installed("pg_wait_sampling"):
259+
self.disable_and_exit_if_extension_is_not_installed(ext="pg_wait_sampling")
254260
extension = "pg_wait_sampling"
255261

256262
extension_schema = self.extension_schema(extension=extension)
257263

258264
find_and_send(Pooler.query(
259-
self.AllLockQuery[extension + "_bootstrap"] if Pooler.is_bootstraped() else self.AllLockQuery[
260-
extension].format(extension_schema=extension_schema)), self.AllLockItems, zbx)
265+
self.AllLockQuery[extension + "_bootstrap"].format(
266+
extension_schema=extension_schema) if Pooler.is_bootstraped() else self.AllLockQuery[extension].format(
267+
extension_schema=extension_schema)), self.AllLockItems, zbx)
261268
find_and_send(Pooler.query(
262-
self.HWLockQuery[extension + "_bootstrap"] if Pooler.is_bootstraped() else self.HWLockQuery[
263-
extension].format(extension_schema=extension_schema)), self.HWLockItems, zbx)
269+
self.HWLockQuery[extension + "_bootstrap"].format(
270+
extension_schema=extension_schema) if Pooler.is_bootstraped() else self.HWLockQuery[extension].format(
271+
extension_schema=extension_schema)), self.HWLockItems, zbx)
264272
find_and_send(Pooler.query(
265-
self.LWLockQuery[extension + "_bootstrap"] if Pooler.is_bootstraped() else self.LWLockQuery[
266-
extension].format(extension_schema=extension_schema)), self.LWLockItems, zbx)
273+
self.LWLockQuery[extension + "_bootstrap"].format(
274+
extension_schema=extension_schema) if Pooler.is_bootstraped() else self.LWLockQuery[extension].format(
275+
extension_schema=extension_schema)), self.LWLockItems, zbx)
267276

268277
def items(self, template, dashboard=False):
269278
result = ""

packaging/conf/example_win.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,19 @@ port = 10052
5454

5555
[plugins]
5656
enabled = False
57-
directory = c:\Program Files\PostgresPro\Mamonsu\2.5.1\plugins
57+
directory = c:\Program Files\PostgresPro\Mamonsu\3.4.0\plugins
5858

5959
# enable storing the collected metric data in text files locally.
6060

6161
[metric_log]
6262
enabled = False
63-
directory = c:\Program Files\PostgresPro\Mamonsu\2.5.1\logs
63+
directory = c:\Program Files\PostgresPro\Mamonsu\3.4.0\logs
6464
max_size_mb = 1024
6565

6666
# specify logging settings for mamonsu
6767

6868
[log]
69-
file = C:\Program Files\PostgresPro\Mamonsu\2.5.1\logs\mamonsu.log
69+
file = C:\Program Files\PostgresPro\Mamonsu\3.4.0\logs\mamonsu.log
7070
level = INFO
7171
format = [%(levelname)s] %(asctime)s - %(name)s - %(message)s
7272

0 commit comments

Comments
 (0)
0