munin on postgres

помимо установленных плагинов и прописанного в munin-node.conf вот этого:


[postgres_*]
user postgres
env.PGUSER postgres
env.PGPORT 5432
env.PGHOST localhost
env.PGPASSWORD 123

в убунту надо поставить пакет:

libdbd-pg-perl

это перловый драйвер доступа к postgres

также есть проблема вот в этом модуле:

/usr/share/perl5/Munin/Plugin/Pgsql.pm

из-за него в логи сыпятся ошибки вот такого плана:


2012/05/22-11:57:59 [20608] Error output from postgres_transactions_ALL:
2012/05/22-11:57:59 [20608] Unable to detect PostgreSQL version

ну, и графики, соответственно не рисуются.

лечицца так, ищем рутинку:


sub get_version {
my ($self) = @_;

return if (defined $self->{detected_version});

my $r = $self->runquery("SELECT version()");
my $v = $r->[0]->[0];
die "Unable to detect PostgreSQL version\n"
unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+) on/);
$self->{detected_version} = "$1.$2";
}

строка

unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+) on/);

пытается распарсить селект из базы, который у нас выглядит вот так:


root@1c:~# psql -U postgres -W -h localhost
Password for user postgres:
psql (9.0.4-alt1)
Type "help" for help.

postgres=# select version();
version
----------------------------------------------------------------------------------------------------------------
PostgreSQL 9.0.4-alt1 on x86_64-pc-linux-gnu, compiled by GCC gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
(1 row)

postgres=# \q

т.е вместо 3 цифр версии у нас есть приписка в виде «-alt1», которую скрипт увидеть не ожидает.

правим строчку парсинга просто дописывая недостающий момент:

unless ($v =~ /^PostgreSQL (\d+)\.(\d+)\.(\d+)-alt1 on/);

все работает.

Запись опубликована в рубрике overminds с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий