Template para monitoramento de PostgreSQL no Debian 8/Ubuntu 14.04

Olá, pessoal!

Este template serve para monitorar, a partir da interface web do Zabbix, um banco de dados PostgreSQL que está sendo executado em outra máquina e que já está sendo monitorado via Agente Zabbix.

Este template faz uso do recurso UserParameter do Zabbix https://www.zabbix.com/documentation/2.4/manual/config/items/userparameters.

Se você ainda não tem um servidor Zabbix e o agente instalado, sugiro olhar os tutoriais desta página: http://www.zabbixbrasil.org//?page_id=7

Os UserParameters abaixo funcionam no Ubuntu 12.04 ou 14.04/Debian 7 ou 8. Para outras distros, talvez seja necessário ajustá-los.

Configurando o UserParameter

1) No host que tem o PostgreSQL instalado, adicione o usuário zabbix no Sistema operacional.

sudo useradd zabbix

2) Dê permissão do usuário zabbix executar comandos de sudo sem a solicitação de senha.

echo "zabbix ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
echo Defaults:zabbix\ \!requiretty >> /etc/sudoers

3) No host que tem o PostgreSQL instalado, adicione o usuário zabbix no PostgreSQL.

sudo -u postgres
createuser -a -d -E -P zabbix

4) No host que tem o PostgreSQL instalado, adicione os UserParameters no final do arquivo zabbix_agentd.conf

#----------#
# Postgres
#----------#
UserParameter=psql.version,sudo -u zabbix psql --version|head -n1
UserParameter=psql.db_size[*],sudo -u zabbix psql -d $1 -t -c "select pg_database_size('$1')" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.server_processes,sudo -u zabbix psql -d $1 -t -c "select sum(numbackends) from pg_stat_database" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_connections[*],sudo -u zabbix psql -d $1 -t -c "select numbackends from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_returned[*],sudo -u zabbix psql -d $1 -t -c "select tup_returned from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_fetched[*],sudo -u zabbix psql -d $1 -t -c "select tup_fetched from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_inserted[*],sudo -u zabbix psql -d $1 -t -c "select tup_inserted from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_updated[*],sudo -u zabbix psql -d $1 -t -c "select tup_updated from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_deleted[*],sudo -u zabbix psql -d $1 -t -c "select tup_deleted from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_commit[*],sudo -u zabbix psql -d $1 -t -c "select xact_commit from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'
UserParameter=psql.db_rollback[*],sudo -u zabbix psql -d $1 -t -c "select xact_rollback from pg_stat_database where datname = '$1'" |sed 's/^ \+//' | sed 's/[ ]\+/ /g' | sed ':a;$!N;s/\n//;ta;'

5) Reinicie o Zabbix-Agent

sudo /etc/init.d/zabbix-agentd restart

Importando o template

6) Importe o template que está disponível para download em: http://www.zabbixbrasil.org//files/zbx_PostgreSQL_database.xml

Para importá-lo, acesse a interface Web do Zabbix em Configuração > Template e clicando no botão Importar. Marque as opções conforme abaixo.

1

7) Acesse o menu Configuração > Template. Localize o template PostrgreSQL_database. Clique no nome do template. Em seguida, clique na aba Macros. Troque o valor da macro {$NAME_DATABASE} pelo nome do banco de dados que será monitorado, conforme mostra a figura abaixo. Salve as alterações.

2

Os itens do template fazem uso desta macro de template nos nomes das chaves, conforme mostra a figura abaixo.

3

8) Cadastre o host na interface web do Zabbix (se já não tiver feito isso) e associe este template ao host.

9) Os dados coletados ficarão disponíveis para visualização em Monitoramento > Gráficos e também quando você adicionar o host a um mapa e, quando acessar o menu Monitoramento > Mapas, clicar com o botão esquerdo do mouse sobre ele e escolher a opção Telas do Host, conforme mostra as figuras abaixo.

4

5

Atenção:
Se quiser monitorar ao mesmo tempo banco de dados com nomes diferentes (mesmo que não seja no mesmo host), crie um clone completo do template importado e altere o valor da macro de template para receber o nome de cada banco a ser monitorado.

6 thoughts on “Template para monitoramento de PostgreSQL no Debian 8/Ubuntu 14.04”

  1. Aécio, boa noite!

    Estou precisando executar consultas SQL em um servidor SQL server sei que não é o foco do seu artigo, mas por acaso já fez algo parecido ou tem alguma documentação que possa me indicar para estudar, pois pelo que já pesquisei vai ter que ser com o userparamenter também.

    Obrigado!

  2. Bom dia
    Não consegui trazer nenhum dado, como posso encontrar o que pode estar errado?

  3. Oi, Leandro!

    O tempo passou e esqueci de responder o seu comentário. Eu ainda não usei SQL Server. Infelizmente não sei como ajudá-lo.

    Espero que tenha conseguido nesse meio tempo.

    Abraço e fica com Deus.

  4. Michel, acredito que o Zabbix está recebendo um Json mal formado ou o usuário zabbix não tem as permissões necessárias. Revise o passo-a-passo e veja se não pulou algum procedimento.

  5. Boa noite amigo, preciso monitorar mais de uma base no mesmo host e infelizmente
    nao consegui seguindo sua dica acima, clonei o template e alterei o valor da macro no template para o nome do banco mas mesmo assim ocorre erro “O item “psql.db_commit[{$NAME_DATABASE}]” já existe em “***”, herdado de outro template.”, como posso proceder nesse caso?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *