PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como monitorar o PostgreSQL usando o Nagios

Introdução


Independentemente da tecnologia de banco de dados, é necessário ter uma configuração de monitoramento, tanto para detectar problemas e agir, ou simplesmente para conhecer o estado atual de nossos sistemas.

Para isso existem diversas ferramentas, pagas e gratuitas. Neste blog vamos focar em um em particular:Nagios Core.

O que é o Nagios Core?


O Nagios Core é um sistema Open Source para monitoramento de hosts, redes e serviços. Permite configurar alertas e possui diferentes estados para eles. Permite a implementação de plugins, desenvolvidos pela comunidade, ou ainda permite configurar nossos próprios scripts de monitoramento.

Como instalar o Nagios?


A documentação oficial mostra como instalar o Nagios Core em sistemas CentOS ou Ubuntu.

Vejamos um exemplo dos passos necessários para a instalação no CentOS 7.

Pacotes necessários
[[email protected] ~]# yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip

Faça o download do Nagios Core, plug-ins do Nagios e NRPE
[[email protected] ~]# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.2.tar.gz
[[email protected] ~]# wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Adicionar usuário e grupo do Nagios
[[email protected] ~]# useradd nagios
[[email protected] ~]# groupadd nagcmd
[[email protected] ~]# usermod -a -G nagcmd nagios
[[email protected] ~]# usermod -a -G nagios,nagcmd apache

Instalação do Nagios
[[email protected] ~]# tar zxvf nagios-4.4.2.tar.gz
[[email protected] ~]# cd nagios-4.4.2
[[email protected] nagios-4.4.2]# ./configure --with-command-group=nagcmd
[[email protected] nagios-4.4.2]# make all
[[email protected] nagios-4.4.2]# make install
[[email protected] nagios-4.4.2]# make install-init
[[email protected] nagios-4.4.2]# make install-config
[[email protected] nagios-4.4.2]# make install-commandmode
[[email protected] nagios-4.4.2]# make install-webconf
[[email protected] nagios-4.4.2]# cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
[[email protected] nagios-4.4.2]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
[[email protected] nagios-4.4.2]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Plugin do Nagios e instalação do NRPE
[[email protected] ~]# tar zxvf nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# cd nagios-plugins-2.2.1
[[email protected] nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[[email protected] nagios-plugins-2.2.1]# make
[[email protected] nagios-plugins-2.2.1]# make install
[[email protected] ~]# yum install epel-release
[[email protected] ~]# yum install nagios-plugins-nrpe
[[email protected] ~]# tar zxvf nrpe-3.2.1.tar.gz
[[email protected] ~]# cd nrpe-3.2.1
[[email protected] nrpe-3.2.1]# ./configure --disable-ssl --enable-command-args
[[email protected] nrpe-3.2.1]# make all
[[email protected] nrpe-3.2.1]# make install-plugin

Adicionamos a seguinte linha ao final do nosso arquivo /usr/local/nagios/etc/objects/command.cfg para usar o NRPE ao verificar nossos servidores:
define command{
    command_name           check_nrpe
    command_line           /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Nagios começa
[[email protected] nagios-4.4.2]# systemctl start nagios
[[email protected] nagios-4.4.2]# systemctl start httpd

Acesso à Web

Criamos o usuário para acessar a interface web e podemos entrar no site.
[[email protected] nagios-4.4.2]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

http://IP_Address/nagios/
Nagios Web Access

Como configurar o Nagios?


Agora que temos nosso Nagios instalado, podemos continuar com a configuração. Para isso devemos ir ao local correspondente à nossa instalação, em nosso exemplo /usr/local/nagios/etc.

Existem vários arquivos de configuração diferentes que você precisará criar ou editar antes de começar a monitorar qualquer coisa.
[[email protected] etc]# ls /usr/local/nagios/etc
cgi.cfg  htpasswd.users  nagios.cfg  objects  resource.cfg
  • cgi.cfg: O arquivo de configuração CGI contém várias diretivas que afetam a operação dos CGIs. Ele também contém uma referência ao arquivo de configuração principal, para que os CGIs saibam como você configurou o Nagios e onde suas definições de objeto estão armazenadas.
  • htpasswd.users: Este arquivo contém os usuários criados para acessar a interface web do Nagios.
  • nagios.cfg: O arquivo de configuração principal contém várias diretivas que afetam o funcionamento do daemon do Nagios Core.
  • objetos: Quando você instala o Nagios, vários arquivos de configuração de objeto de amostra são colocados aqui. Você pode usar esses arquivos de amostra para ver como a herança de objetos funciona e aprender como definir suas próprias definições de objeto. Objetos são todos os elementos envolvidos na lógica de monitoramento e notificação.
  • recurso.cfg: Isso é usado para especificar um arquivo de recurso opcional que pode conter definições de macro. As macros permitem que você faça referência às informações de hosts, serviços e outras fontes em seus comandos.

Dentro dos objetos, podemos encontrar templates, que podem ser usados ​​na criação de novos objetos. Por exemplo, podemos ver que em nosso arquivo /usr/local/nagios/etc/objects/templates.cfg, existe um template chamado linux-server, que será usado para adicionar nossos servidores.
define host {
    name                            linux-server            ; The name of this host template
    use                             generic-host            ; This template inherits other values from the generic-host template
    check_period                    24x7                    ; By default, Linux hosts are checked round the clock
    check_interval                  5                       ; Actively check the host every 5 minutes
    retry_interval                  1                       ; Schedule host check retries at 1 minute intervals
    max_check_attempts              10                      ; Check each Linux host 10 times (max)
    check_command                   check-host-alive        ; Default command to check Linux hosts
    notification_period             workhours               ; Linux admins hate to be woken up, so we only notify during the day
                                                           ; Note that the notification_period variable is being overridden from
                                                           ; the value that is inherited from the generic-host template!
    notification_interval           120                     ; Resend notifications every 2 hours
    notification_options            d,u,r                   ; Only send notifications for specific host states
    contact_groups                  admins                  ; Notifications get sent to the admins by default
    register                        0                       ; DON'T REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

Usando este modelo, nossos hosts herdarão a configuração sem precisar especificá-los um por um em cada servidor que adicionamos.

Também temos comandos, contatos e prazos predefinidos.

Os comandos serão usados ​​pelo Nagios para suas verificações, e é isso que adicionamos dentro do arquivo de configuração de cada servidor para monitorá-lo. Por exemplo, PING:
define command {
    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

Temos a possibilidade de criar contatos ou grupos, e especificar quais alertas quero alcançar para qual pessoa ou grupo.
define contact {
    contact_name            nagiosadmin             ; Short name of user
    use                     generic-contact         ; Inherit default values from generic-contact template (defined above)
    alias                   Nagios Admin            ; Full name of user
    email                   [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}

Para nossas verificações e alertas, podemos configurar em que horas e dias queremos recebê-los. Se temos um serviço que não é crítico, provavelmente não queremos acordar de madrugada, então seria bom alertar apenas no horário de trabalho para evitar isso.
define timeperiod {
    name                    workhours
    timeperiod_name         workhours
    alias                   Normal Work Hours
    monday                  09:00-17:00
    tuesday                 09:00-17:00
    wednesday               09:00-17:00
    thursday                09:00-17:00
    friday                  09:00-17:00
}

Vamos ver agora como adicionar alertas ao nosso Nagios.

Vamos monitorar nossos servidores PostgreSQL, então primeiro os adicionamos como hosts em nosso diretório de objetos. Vamos criar 3 novos arquivos:
[[email protected] ~]# cd /usr/local/nagios/etc/objects/
[[email protected] objects]# vi postgres1.cfg
define host {
    use        linux-server      ; Name of host template to use
    host_name    postgres1        ; Hostname
    alias        PostgreSQL1        ; Alias
    address    192.168.100.123    ; IP Address
}
[[email protected] objects]# vi postgres2.cfg
define host {
    use        linux-server      ; Name of host template to use
    host_name    postgres2        ; Hostname
    alias        PostgreSQL2        ; Alias
    address    192.168.100.124    ; IP Address
}
[[email protected] objects]# vi postgres3.cfg
define host {
    use        linux-server      ; Name of host template to use
    host_name    postgres3        ; Hostname
    alias        PostgreSQL3        ; Alias
    address    192.168.100.125    ; IP Address
}

Então devemos adicioná-los ao arquivo nagios.cfg e aqui temos 2 opções.

Adicione nossos hosts (arquivos cfg) um por um usando a variável cfg_file (opção padrão) ou adicione todos os arquivos cfg que temos dentro de um diretório usando a variável cfg_dir.

Adicionaremos os arquivos um a um seguindo a estratégia padrão.
cfg_file=/usr/local/nagios/etc/objects/postgres1.cfg
cfg_file=/usr/local/nagios/etc/objects/postgres2.cfg
cfg_file=/usr/local/nagios/etc/objects/postgres3.cfg

Com isso temos nossos hosts monitorados. Agora só temos que adicionar quais serviços queremos monitorar. Para isso utilizaremos algumas verificações já definidas (check_ssh e check_ping), e adicionaremos algumas verificações básicas do sistema operacional como carga e espaço em disco, entre outras, utilizando NRPE.
Baixe o whitepaper hoje PostgreSQL Management &Automation with ClusterControlSaiba o que você precisa saber para implantar, monitorar, gerenciar e dimensionar o PostgreSQLBaixe o whitepaper

O que é NRPE?


Executor de plug-in remoto do Nagios. Esta ferramenta nos permite executar plugins Nagios em um host remoto da maneira mais transparente possível.

Para usá-lo, devemos instalar o servidor em cada nó que queremos monitorar, e nosso Nagios se conectará como cliente a cada um deles, executando o(s) plugin(s) correspondente(s).

Como instalar o NRPE?

[[email protected] ~]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz
[[email protected] ~]# wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# tar zxvf nagios-plugins-2.2.1.tar.gz
[[email protected] ~]# tar zxvf nrpe-3.2.1.tar.gz
[[email protected] ~]# cd nrpe-3.2.1
[[email protected] nrpe-3.2.1]# ./configure --disable-ssl --enable-command-args
[[email protected] nrpe-3.2.1]# make all
[[email protected] nrpe-3.2.1]# make install-groups-users
[[email protected] nrpe-3.2.1]# make install
[[email protected] nrpe-3.2.1]# make install-config
[[email protected] nrpe-3.2.1]# make install-init
[[email protected] ~]# cd nagios-plugins-2.2.1
[[email protected] nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[[email protected] nagios-plugins-2.2.1]# make
[[email protected] nagios-plugins-2.2.1]# make install
[[email protected] nagios-plugins-2.2.1]# systemctl enable nrpe

Em seguida, editamos o arquivo de configuração /usr/local/nagios/etc/nrpe.cfg
server_address=<Local IP Address>
allowed_hosts=127.0.0.1,<Nagios Server IP Address>

E reiniciamos o serviço NRPE:
[[email protected] ~]# systemctl restart nrpe

Podemos testar a conexão executando o seguinte em nosso servidor Nagios:
[[email protected] ~]# /usr/local/nagios/libexec/check_nrpe -H <Node IP Address>
NRPE v3.2.1

Como monitorar o PostgreSQL?


Ao monitorar o PostgreSQL, há duas áreas principais a serem consideradas:sistema operacional e bancos de dados.

Para o sistema operacional, o NRPE possui algumas verificações básicas configuradas como espaço em disco e carga, entre outras. Essas verificações podem ser habilitadas muito facilmente da seguinte maneira.

Em nossos nós editamos o arquivo /usr/local/nagios/etc/nrpe.cfg e vamos até onde estão as seguintes linhas:
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w 15,10,05 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

Os nomes entre colchetes são aqueles que usaremos em nosso servidor Nagios para habilitar essas verificações.

Em nosso Nagios, editamos os arquivos dos 3 nós:
/usr/local/nagios/etc/objects/postgres1.cfg
/usr/local/nagios/etc/objects/postgres2.cfg
/usr/local/nagios/etc/objects/postgres3.cfg

Adicionamos essas verificações que vimos anteriormente, deixando nossos arquivos da seguinte forma:
define host {
    use                     linux-server
    host_name               postgres1
    alias                   PostgreSQL1
    address                 192.168.100.123
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     SSH
    check_command           check_ssh
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Root Partition
    check_command        check_nrpe!check_disk
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Total Processes zombie
    check_command           check_nrpe!check_zombie_procs
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Total Processes
    check_command           check_nrpe!check_total_procs
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Current Load
    check_command           check_nrpe!check_load
}
define service {
    use                     generic-service
    host_name               postgres1
    service_description     Current Users
    check_command           check_nrpe!check_users
}

E reiniciamos o serviço nagios:
[[email protected] ~]# systemctl start nagios

Neste ponto, se formos para a seção de serviços na interface web do nosso Nagios, devemos ter algo como o seguinte:
Alertas de host do Nagios
Desta forma, estaremos cobrindo as verificações básicas do nosso servidor no nível do sistema operacional.

Temos muitas outras verificações que podemos adicionar e podemos até criar nossas próprias verificações (veremos um exemplo mais adiante).

Agora vamos ver como monitorar nosso mecanismo de banco de dados PostgreSQL usando dois dos principais plugins projetados para esta tarefa.

Check_postgres


Um dos plugins mais populares para verificar o PostgreSQL é o check_postgres do Bucardo.

Vamos ver como instalá-lo e como usá-lo com nosso banco de dados PostgreSQL.

Pacotes obrigatórios

[[email protected] ~]# yum install perl-devel

Instalação

[[email protected] ~]#  wget http://bucardo.org/downloads/check_postgres.tar.gz
[[email protected] ~]#  tar zxvf check_postgres.tar.gz
[[email protected] ~]#  cp check_postgres-2.23.0/check_postgres.pl /usr/local/nagios/libexec/
[[email protected] ~]# chown nagios.nagios /usr/local/nagios/libexec/check_postgres.pl
[[email protected] ~]# cd /usr/local/nagios/libexec/
[[email protected] libexec]# perl /usr/local/nagios/libexec/check_postgres.pl  --symlinks

Este último comando cria os links para usar todas as funções desta verificação, como check_postgres_connection, check_postgres_last_vacuum ou check_postgres_replication_slots entre outras.
[[email protected] libexec]# ls |grep postgres
check_postgres.pl
check_postgres_archive_ready
check_postgres_autovac_freeze
check_postgres_backends
check_postgres_bloat
check_postgres_checkpoint
check_postgres_cluster_id
check_postgres_commitratio
check_postgres_connection
check_postgres_custom_query
check_postgres_database_size
check_postgres_dbstats
check_postgres_disabled_triggers
check_postgres_disk_space
…

Adicionamos em nosso arquivo de configuração do NRPE (/usr/local/nagios/etc/nrpe.cfg) a linha para executar a verificação que queremos usar:
command[check_postgres_locks]=/usr/local/nagios/libexec/check_postgres_locks -w 2 -c 3
command[check_postgres_bloat]=/usr/local/nagios/libexec/check_postgres_bloat -w='100 M' -c='200 M'
command[check_postgres_connection]=/usr/local/nagios/libexec/check_postgres_connection --db=postgres
command[check_postgres_backends]=/usr/local/nagios/libexec/check_postgres_backends -w=70 -c=100

Em nosso exemplo adicionamos 4 verificações básicas para o PostgreSQL. Vamos monitorar Locks, Bloat, Connection e Backends.

No arquivo correspondente ao nosso banco de dados no servidor Nagios (/usr/local/nagios/etc/objects/postgres1.cfg), adicionamos as seguintes entradas:
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL locks
      check_command          check_nrpe!check_postgres_locks
}
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL Bloat
      check_command          check_nrpe!check_postgres_bloat
}
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL Connection
      check_command          check_nrpe!check_postgres_connection
}
define service {
      use                    generic-service
      host_name              postgres1
      service_description    PostgreSQL Backends
      check_command          check_nrpe!check_postgres_backends
}

E após reiniciar os dois serviços (NRPE e Nagios) em ambos os servidores, podemos ver nossos alertas configurados.
Nagios check_postgres Alertas
Na documentação oficial do plugin check_postgres, você pode encontrar informações sobre o que mais monitorar e como fazê-lo.

Verificar_pgatividade


Agora é a vez do check_pgactivity, também popular para monitorar nosso banco de dados PostgreSQL.

Instalação

[[email protected] ~]# wget https://github.com/OPMDG/check_pgactivity/releases/download/REL2_3/check_pgactivity-2.3.tgz
[[email protected] ~]# tar zxvf check_pgactivity-2.3.tgz
[[email protected] ~]# cp check_pgactivity-2.3check_pgactivity /usr/local/nagios/libexec/check_pgactivity
[[email protected] ~]# chown nagios.nagios /usr/local/nagios/libexec/check_pgactivity

Adicionamos em nosso arquivo de configuração do NRPE (/usr/local/nagios/etc/nrpe.cfg) a linha para executar a verificação que queremos usar:
command[check_pgactivity_backends]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s backends -w 70 -c 100
command[check_pgactivity_connection]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s connection
command[check_pgactivity_indexes]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s invalid_indexes
command[check_pgactivity_locks]=/usr/local/nagios/libexec/check_pgactivity -h localhost -s locks -w 5 -c 10

Em nosso exemplo, adicionaremos 4 verificações básicas para o PostgreSQL. Monitoraremos Backends, Conexão, Índices Inválidos e bloqueios.

No arquivo correspondente ao nosso banco de dados no servidor Nagios (/usr/local/nagios/etc/objects/postgres2.cfg), adicionamos as seguintes entradas:
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Backends
    check_command           check_nrpe!check_pgactivity_backends
}
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Connection
    check_command           check_nrpe!check_pgactivity_connection
}
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Indexes
    check_command           check_nrpe!check_pgactivity_indexes
}
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres2
    service_description     PGActivity Locks
    check_command           check_nrpe!check_pgactivity_locks
}

E após reiniciar os dois serviços (NRPE e Nagios) em ambos os servidores, podemos ver nossos alertas configurados.
Nagios check_pgactivity Alertas

Verificar registro de erros


Uma das verificações mais importantes, ou a mais importante, é verificar nosso log de erros.

Aqui podemos encontrar diferentes tipos de erros como FATAL ou deadlock, e é um bom ponto de partida para analisar qualquer problema que tenhamos em nosso banco de dados.

Para verificar nosso log de erros, vamos criar nosso próprio script de monitoramento e integrá-lo ao nosso Nagios (este é apenas um exemplo, este script será básico e tem muito espaço para melhorias).

Roteiro


Vamos criar o arquivo /usr/local/nagios/libexec/check_postgres_log.sh em nosso servidor PostgreSQL3.
[[email protected] ~]# vi /usr/local/nagios/libexec/check_postgres_log.sh
#!/bin/bash
#Variables
LOG="/var/log/postgresql-$(date +%a).log"
CURRENT_DATE=$(date +'%Y-%m-%d %H')
ERROR=$(grep "$CURRENT_DATE" $LOG | grep "FATAL" | wc -l)
#States
STATE_CRITICAL=2
STATE_OK=0
#Check
if [ $ERROR -ne 0 ]; then
       echo "CRITICAL - Check PostgreSQL Log File - $ERROR Error Found"
       exit $STATE_CRITICAL
else
       echo "OK - PostgreSQL without errors"
       exit $STATE_OK
fi

O importante do script é criar corretamente as saídas correspondentes a cada estado. Essas saídas são lidas pelo Nagios e cada número corresponde a um estado:
0=OK
1=WARNING
2=CRITICAL
3=UNKNOWN

Em nosso exemplo usaremos apenas 2 estados, OK e CRITICAL, pois estamos interessados ​​apenas em saber se há erros do tipo FATAL em nosso log de erros na hora atual.

O texto que usamos antes de nossa saída será mostrado pela interface web do nosso Nagios, portanto, deve ser o mais claro possível usá-lo como guia para o problema.

Assim que terminarmos nosso script de monitoramento, iremos dar a ele permissões de execução, atribuí-lo ao usuário nagios e adicioná-lo ao nosso servidor de banco de dados NRPE, bem como ao nosso Nagios:
[[email protected] ~]# chmod +x /usr/local/nagios/libexec/check_postgres_log.sh
[[email protected] ~]# chown nagios.nagios /usr/local/nagios/libexec/check_postgres_log.sh

[[email protected] ~]# vi /usr/local/nagios/etc/nrpe.cfg
command[check_postgres_log]=/usr/local/nagios/libexec/check_postgres_log.sh

[[email protected] ~]# vi /usr/local/nagios/etc/objects/postgres3.cfg
define service {
    use                     generic-service           ; Name of service template to use
    host_name               postgres3
    service_description     PostgreSQL LOG
    check_command           check_nrpe!check_postgres_log
}

Reinicie o NRPE e o Nagios. Então podemos ver nosso check na interface do Nagios:
Alertas de script do Nagios
Como podemos ver está em estado CRÍTICO, então se formos ao log, podemos ver o seguinte:
2018-08-30 02:29:49.531 UTC [22162] FATAL:  Peer authentication failed for user "postgres"
2018-08-30 02:29:49.531 UTC [22162] DETAIL:  Connection matched pg_hba.conf line 83: "local   all             all                                     peer"

Para obter mais informações sobre o que podemos monitorar em nosso banco de dados PostgreSQL, recomendo que você verifique nossos blogs de desempenho e monitoramento ou este webinar de Desempenho do Postgres.

Segurança e desempenho


Ao configurar qualquer monitoramento, seja usando plugins ou nosso próprio script, devemos ter muito cuidado com 2 coisas muito importantes - segurança e desempenho.

Quando atribuímos as permissões necessárias para o monitoramento, devemos ser o mais restritivos possível, limitando o acesso apenas localmente ou do nosso servidor de monitoramento, utilizando chaves seguras, criptografando o tráfego, permitindo a conexão ao mínimo necessário para que o monitoramento funcione.

Com relação ao desempenho, o monitoramento é necessário, mas também é necessário usá-lo com segurança para nossos sistemas.

Devemos ter cuidado para não gerar acesso ao disco excessivamente alto ou executar consultas que afetem negativamente o desempenho de nosso banco de dados.

Se tivermos muitas transações por segundo gerando gigabytes de logs, e continuarmos procurando erros continuamente, provavelmente não é o melhor para nosso banco de dados. Portanto, devemos manter um equilíbrio entre o que monitoramos, com que frequência e o impacto no desempenho.

Conclusão


Existem várias maneiras de implementar o monitoramento ou configurá-lo. Podemos fazê-lo tão complexo ou tão simples quanto quisermos. O objetivo deste blog foi apresentar a você o monitoramento do PostgreSQL utilizando uma das ferramentas open source mais utilizadas. Vimos também que a configuração é muito flexível e pode ser adaptada a diferentes necessidades.

E não se esqueça que podemos sempre contar com a comunidade, por isso deixo alguns links que poderão ser de grande ajuda.

Fórum de suporte:https://support.nagios.com/forum/

Problemas conhecidos:https://github.com/NagiosEnterprises/nagioscore/issues

Plugins do Nagios:https://exchange.nagios.org/directory/Plugins

Plugin Nagios para ClusterControl:https://severalnines.com/blog/nagios-plugin-clustercontrol