One place for hosting & domains

      Monitorar

      Como monitorar comunicados e rotas via protocolo BGP usando o BGPalerter no Ubuntu 18.04


      O autor selecionou a COVID-19 Relief Fund​​​​​ para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O BGP (Border Gateway Protocol) é um dos protocolos mais importantes, responsável pelo roteamento de pacotes pela Internet. Assim, quando ele apresenta problemas, falhas significativas podem ocorrer. Por exemplo, em 2019, um pequeno ISP fez uma configuração de BGP erroneamente e isso, infelizmente, se propagou em ramificação ascendente e fez com que grandes porções do Cloudflare e AWS ficassem off-line por mais de uma hora. Além disso, um ano antes, um sequestro BGP foi executado para interceptar tráfego para um provedor de carteira de criptomoedas e roubar os fundos de clientes de clientes desavisados.

      O BGPalerter é um instrumento de monitoramento de rede BGP de código aberto que pode fornecer alertas em tempo real sobre a atividade BGP, incluindo a visibilidade de rota e novos comunicados de rota, bem como atividades potencialmente danosas, como o sequestro ou vazamento de rota. O BGPalerter absorve automaticamente informações de roteamento de rede disponíveis publicamente, o que significa que ele não precisa ter nenhum nível de acesso privilegiado ou integração na(s) rede(s) que você deseja monitorar.

      Nota: o BGPalerter absorve automaticamente informações de roteamento de rede disponíveis publicamente, o que significa que ele não precisa ter nenhum nível de acesso privilegiado ou integração na(s) rede(s) que você deseja monitorar. Todo o monitoramento está em total conformidade com a Lei de uso indevido de computadores, a Lei de fraude e abuso de computador, além de outras leis semelhantes. No entanto, é recomendável divulgar de maneira responsável quaisquer achados relevantes para o operador de rede afetado.

      Neste tutorial, você instalará e configurará o BGPalerter para monitorar suas redes importantes, buscando por qualquer atividade potencialmente suspeita.

      Pré-requisitos

      Para completar este tutorial, você precisará de:

      • Um servidor Ubuntu 18.04 configurado seguindo a Configuração inicial de servidor com o Ubuntu 18.04, incluindo um usuário sudo não raiz.

      • Um ou mais redes ou dispositivos que você deseja monitorar, como por exemplo:

        • Um servidor que você mantenha
        • A rede de sua empresa
        • Seu provedor de internet (ISP) local

      Para cada dispositivo ou rede, você precisará identificar o endereço IP individual, o intervalo de endereços IP, ou o número do sistema autônomo que esse item faz parte. O processo é abordado no Passo 1.

      Assim que tiver tudo pronto, faça login no seu servidor como usuário não raiz para começar.

      Passo 1 — Identificando as redes para monitorar

      Neste passo, você identificará os detalhes relevantes das redes que deseja monitorar.

      O BGPalerter pode monitorar com base em endereços IP individuais ou prefixes de rede. Ele também pode monitorar redes inteiras ba com base em seu número autônomo de sistema (AS, do inglês Autonomous System), que é um identificador global único para uma rede de propriedade de uma entidade administrativa em particular.

      Para encontrar essas informações, utilize o serviço de procura IP-to-ASN WHOIS fornecido pelo serviço de inteligência de ameaças Team Cymru. Ele é um servidor WHOIS personalizado, projetado para procurar endereços IP e informações de roteamento de rede.

      Caso ainda não tenha o whois instalado, instale-o usando os seguintes comandos:

      • sudo apt update
      • sudo apt install whois

      Assim que você tiver confirmado que o whois está instalado, comece o processo executando uma pesquisa pelo endereço IP do seu próprio servidor, usando o argumento -h para especificar um servidor personalizado:

      • whois -h whois.cymru.com your-ip-address

      Isso gerará um resultado parecido com este abaixo, que mostra o nome e o número AS do qual seu servidor faz parte. Geralmente, esse será o AS do seu provedor de hospedagem de servidor, como por exemplo, a DigitalOcean.

      Output

      AS | IP | AS Name 14061 | your-ip-address | DIGITALOCEAN-ASN, US

      Em seguida, execute uma pesquisa para identificar o prefixo/intervalo da rede de que seu servidor faz parte. Faça isso adicionando o argumento -p ao seu pedido:

      • whois -h whois.cymru.com " -p your-ip-address"

      O resultado será muito parecido com o comando anterior, mas agora exibirá o prefixo de endereço IP ao qual o endereço IP do seu servidor pertence:

      Output

      AS | IP | BGP Prefix | AS Name 14061 | your-ip-address | 157.230.80.0/20 | DIGITALOCEAN-ASN, US

      Por fim, você pode pesquisar mais detalhes do AS que seu servidor faz parte, incluindo a região geográfica e a data de alocação.

      Substitua o número AS acima por aquele que você identificou usando os comandos anteriores. Use o argumento -v para habilitar o resultado detalhado, que garante que todos os detalhes relevantes sejam mostrados:

      • whois -h whois.cymru.com " -v as14061"

      O resultado mostrará mais informações sobre o AS:

      Output

      AS | CC | Registry | Allocated | AS Name 14061 | US | arin | 2012-09-25 | DIGITALOCEAN-ASN, US

      Você identificou detalhes fundamentais sobre a(s) rede(s) que deseja monitorar. Anote esses detalhes em algum lugar, pois você precisará deles mais tarde. Em seguida, você iniciará a configuração do BGPalerter.

      Passo 2 — Criando um usuário não privilegiado para o BGPalerter

      Neste passo, você criará uma nova conta de usuário não privilegiado para o BGPalerter, pois o programa não precisa ser executado com privilégios sudo/raiz.

      Primeiro, crie um novo usuário com uma senha desativada:

      • sudo adduser --disabled-password bgpalerter

      Você não precisa configurar uma senha ou chaves SSH, pois usará esse usuário apenas como uma conta de serviço para executar/manter o BGPalerter.

      Faça login no novo usuário usando su:

      Agora, você estará logado com o novo usuário:

      bgpalerter@droplet:/home/user$
      

      Use o comando cd para ir para o diretório home do seu novo usuário:

      bgpalerter@droplet:/home/user$ cd
      bgpalerter@droplet:~$
      

      Você criou um novo usuário não privilegiado para o BGPalerter. Em seguida, instalará e configurará o BGPalerter em seu sistema.

      Passo 3 — Instalando e configurando o BGPalerter

      Neste passo, você instalará e configurará o BGPalerter. Certifique-se de que você ainda esteja logado com seu novo usuário sem privilégios.

      Primeiro, você precisa identificar a versão mais recente do BGPalerter, para garantir que você baixe a versão mais atual. Navegue até a página das Versões do BGPalerter e pegue uma cópia do link de download da versão mais recente para o Linux x64.

      Agora, baixe uma cópia do BGPalerter usando o wget, certificando-se de colocar o link de download correto:

      • wget https://github.com/nttgin/BGPalerter/releases/download/v1.24.0/bgpalerter-linux-x64

      Assim que o arquivo terminar de ser baixado, marque-o como executável:

      • chmod +x bgpalerter-linux-x64

      Em seguida, verifique se o BGPalerter foi baixado e instalado com sucesso verificando o número da versão:

      • ./bgpalerter-linux-x64 --version

      Isso gerará como saída o número da versão atual:

      Output

      1.24.0

      Antes de executar o BGPalerter corretamente, você precisará definir as redes que você deseja monitorar dentro de um arquivo de configuração. Crie e abra o arquivo prefixes.yml em seu editor de texto favorito:

      Neste arquivo de configuração, você especificará cada um dos endereços IP individuais, intervalos de endereços IP e números AS que você deseja monitorar.

      Adicione o exemplo a seguir e ajuste os valores de configuração conforme necessário. Faça isso utilizando as informações de rede que você identificou no Passo 1:

      ~/prefixes.yml

      your-ip-address/32:
        description: My Server
        asn:
          - 14061
        ignoreMorespecifics: false
      
      157.230.80.0/20:
        description: IP range for my Server
        asn:
          - 14061
        ignoreMorespecifics: false
      
      options:
        monitorASns:
          '14061':
            group: default
      

      Você pode monitorar quantos intervalos de endereços IP ou números AS quiser. Para monitorar endereços IP individuais, represente-os usando /32 para IPv4, e /128 para IPv6.

      O valor ignoreMorespecifics é usado para controlar se o BGPalerter deve ignorar a atividade para rotas mais específicas (menores) do que as que você está monitorando. Por exemplo, se você estiver monitorando uma /20 e uma alteração de roteamento for detectada para uma /24 dentro dela, isso é considerado como sendo mais específico. Na maioria dos casos, não ignore esses dados. No entanto, se você estiver monitorando uma rede grande com vários prefixos do clientes delegados, isso pode ajudar a reduzir o ruído de fundo.

      Agora, execute o BGPalerter pela primeira vez para começar a monitorar suas redes:

      Se o BGPalerter for iniciado com sucesso, você verá um resultado parecido com este: Observe que pode levar alguns minutos para que o monitoramento comece:

      Output

      Impossible to load config.yml. A default configuration file has been generated. BGPalerter, version: 1.24.0 environment: production Loaded config: /home/bgpalerter/config.yml Monitoring 157.230.80.0/20 Monitoring your-ip-address/32 Monitoring AS 14061

      O BGPalerter continuará sendo executado até que você interrompa-o usando Ctrl+C.

      No próximo passo, você interpretará alguns dos alertas que o BGPalerter pode gerar.

      Passo 4 — Interpretando os alertas do BGPalerter

      Neste passo, você revisará alguns exemplos de alerta do BGPalerter. O BGPalerter gerará alertas no feed de resultados principal e, de maneira opcional, para qualquer ponto de extremidade de relatório adicional que possa ser configurado dentro do config.yml, como descrito na documentação do BGPalerter.

      Por padrão, o BGPalerter monitora e alerta sobre o seguinte:

      • Sequestro de rota: ocorre quando um AS anuncia um prefixo no qual ele não é permitido, fazendo com que o tráfego seja direcionado incorretamente. Ele pode ser um ataque deliberado, ou um erro acidental de configuração.

      • Perda de visibilidade de rota: uma rota é considerada visível quando a maioria dos roteadores BGP na Internet é capaz de roteá-la com segurança. A perda de visibilidade diz respeito à sua rede estar possivelmente indisponível, como, por exemplo, se o peering de BGP tenha parado de funcionar.

      • Novos comunicados sub-prefixo: é quando um AS começa a anunciar um prefixo que é menor que o esperado. Isso pode indicar uma alteração de configuração prevista, uma configuração acidental, ou, em alguns casos, um ataque.

      • Atividade dentro do seu AS: geralmente diz respeito a novos comunicados de rota. Uma rota é considerada “nova” se o BGPalerter ainda não sabe nada sobre ela.

      Em seguida, há alguns exemplos de alerta, junto com uma descrição curta do seu significado:

      Alert #1

      The prefix 203.0.113.0/24 is announced by AS64496 instead of AS65540
      

      Este alerta mostra evidências de um sequestro de rota, onde o AS64496 anunciou 203.0.113.0/24, quando na verdade espera-se que essa rota seja anunciada pelo AS65540. Isso é um indicador forte de que existe uma configuração errada levando a um vazamento de rota, ou de um sequestro deliberado por um agressor.

      Alert #2

      The prefix 203.0.113.0/24 has been withdrawn. It is no longer visible from 6 peers
      

      Este alerta mostra que a rede 203.0.113.0/24 não está mais visível. Isso pode ser devido a um problema de roteamento de ramificação ascendente, ou por um roteador ter sofrido uma falha de energia.

      Alert #3

      A new prefix 203.0.113.0/25 is announced by AS64496. It should be instead 203.0.113.0/24 announced by AS64496
      

      Este alerta mostra que um prefixo mais específico foi anunciado onde ele não está previsto. Por exemplo, anunciar um /25 quando apenas um /24 é esperado. É bastante provável que isso seja um erro de configuração. No entanto, em alguns casos, pode ser uma evidência de um sequestro de rota.

      Alert #4

      AS64496 is announcing 192.0.2.0/24 but this prefix is not in the configured list of announced prefixes
      

      Por fim, esse alerta mostra que o AS64496 anunciou um prefixo sobre o qual o BGPalerter ainda não sabe. Isso pode ser porque você está anunciando legitimamente um novo prefixo, ou pode ser um indicativo de uma configuração errada que está fazendo com que você anuncie um prefixo de propriedade de outra pessoa acidentalmente.

      Neste passo, você revisou alguns exemplos de alertas do BGPalerter. Em seguida, você configurará o BGPalerter para ser executado automaticamente na inicialização do sistema.

      Passo 5 — Iniciando o BGPalerter na inicialização do sistema

      Neste passo final, você configurará o BGPalerter para ser executado na inicialização.

      Certifique-se de que você ainda está logado com seu novo usuário não privilegiado e abra o editor crontab:

      Em seguida, adicione a seguinte linha ao final do arquivo crontab:

      crontab

      @reboot sleep 10; screen -dmS bgpalerter "./bgpalerter-linux-x64"
      

      Toda vez que seu sistema for inicializado, isso criará uma sessão screen (de tela) separada chamada ‘bgpalerter’, e iniciará o BGPalerter dentro dela.

      Salve e saia do editor crontab. Agora, você pode querer reinicializar seu sistema para garantir que o BGPalerter seja iniciado corretamente na inicialização.

      Primeiro, você precisará desconectar-se do seu usuário do BGPalerter:

      Em seguida, prossiga com uma reinicialização normal do sistema:normal

      Assim que seu sistema for reinicializado, faça login novamente no seu servidor e use o su para acessar seu usuário do BGPalerter novamente:

      Em seguida, você pode anexar-se à sessão a qualquer momento para visualizar o resultado do BGPalerter:

      Neste passo final, você configurou o BGPalerter para ser executado na inicialização.

      Conclusão

      Neste artigo, você configurou o BGPalerter e o usou para monitorar redes para mudanças de roteamento BGP.

      Se quiser tornar o BGPalerter mais fácil de usar, você pode configurá-lo para enviar alertas para um canal Slack através de um webhook:

      Se quiser aprender mais sobre o BGP em si, mas não tem acesso a um ambiente de produção BGP, você pode apreciar utilizar o DN42 para testar o BGP em um ambiente seguro e isolado:



      Source link

      Como Monitorar seu Banco de Dados PostgreSQL Gerenciado Usando o Nagios Core no Ubuntu 18.04


      O autor escolheu o Free and Open Source Fund para receber uma doação como parte do programa Write for DOnations.

      Introdução

      O monitoramento do banco de dados é essencial para entender como o banco de dados se comporta ao longo do tempo. Ele pode ajudá-lo a descobrir problemas de utilização ocultos e gargalos que ocorrem no seu banco de dados. A implementação de sistemas de monitoramento de banco de dados pode rapidamente se tornar uma vantagem a longo prazo, o que influenciará positivamente seu processo de gerenciamento de infraestrutura. Você poderá reagir rapidamente às alterações de status do seu banco de dados e será notificado rapidamente quando os serviços monitorados retornarem ao funcionamento normal.

      O Nagios Core é um sistema de monitoramento popular que você pode usar para monitorar seu banco de dados gerenciado. Os benefícios de usar o Nagios para esta tarefa são sua versatilidade — é fácil de configurar e utiliza um grande repositório de plugins disponíveis, e o mais importante, alerta integrado.

      Neste tutorial, você configurará o monitoramento do banco de dados PostgreSQL no Nagios Core utilizando o plugin check_postgres e configurar alertas baseados no Slack. No final, você terá um sistema de monitoramento funcionando em seu banco de dados PostgreSQL gerenciado e será notificado imediatamente sobre alterações de status de várias funcionalidades.

      Pré-requisitos

      Passo 1 — Instalando check_postgres

      Nesta seção, você fará o download da versão mais recente do plug-in check_postgres no Github e disponibilizará para o Nagios Core. Você também instalará o cliente PostgreSQL (psql), para que check_postgres consiga se conectar ao seu banco de dados gerenciado.

      Comece instalando o cliente PostgreSQL, executando o seguinte comando:

      • sudo apt install postgresql-client

      Em seguida, você baixará o check_postgres para o seu diretório home. Primeiro, navegue até ele:

      Vá para a página Github releases e copie o link da versão mais recente do plug-in. No momento da redação deste artigo, a versão mais recente do check_postgres era a 2.24.0; lembre-se de que isso será atualizado e, sempre que possível, a boa prática é usar a versão mais recente.

      Agora faça o download usando curl:

      • curl -LO https://github.com/bucardo/check_postgres/releases/download/2.24.0/check_postgres-2.24.0.tar.gz

      Extraia-o usando o seguinte comando:

      • tar xvf check_postgres-*.tar.gz

      Isso criará um diretório com o mesmo nome que o arquivo que você baixou. Essa pasta contém o executável check_postgres, que você precisará copiar para o diretório em que o Nagios armazena seus plugins (geralmente /usr/local/nagios/libexec/). Copie-o executando o seguinte comando:

      • sudo cp check_postgres-*/check_postgres.pl /usr/local/nagios/libexec/

      Em seguida, você precisará atribuir ao usuário nagios a propriedade sobre ele, para que ele possa ser executado a partir do Nagios:

      • sudo chown nagios:nagios /usr/local/nagios/libexec/check_postgres.pl

      O check_postgres está agora disponível para o Nagios e pode ser usado a partir dele. No entanto, ele fornece muitos comandos relativos a diferentes aspectos do PostgreSQL e, para uma melhor manutenção do serviço, é melhor dividi-los para que possam ser chamados separadamente. Você conseguirá isso criando um link simbólico para cada comando check_postgres no diretório do plugin.

      Navegue para o diretório onde o Nagios armazena plugins executando o seguinte comando:

      • cd /usr/local/nagios/libexec

      Em seguida, crie os links simbólicos com:

      • sudo perl check_postgres.pl --symlinks

      A saída será semelhante a esta:

      Output

      Created "check_postgres_archive_ready" Created "check_postgres_autovac_freeze" Created "check_postgres_backends" Created "check_postgres_bloat" Created "check_postgres_checkpoint" Created "check_postgres_cluster_id" Created "check_postgres_commitratio" Created "check_postgres_connection" Created "check_postgres_custom_query" Created "check_postgres_database_size" Created "check_postgres_dbstats" Created "check_postgres_disabled_triggers" Created "check_postgres_disk_space" Created "check_postgres_fsm_pages" Created "check_postgres_fsm_relations" Created "check_postgres_hitratio" Created "check_postgres_hot_standby_delay" Created "check_postgres_index_size" Created "check_postgres_indexes_size" Created "check_postgres_last_analyze" Created "check_postgres_last_autoanalyze" Created "check_postgres_last_autovacuum" Created "check_postgres_last_vacuum" Created "check_postgres_listener" Created "check_postgres_locks" Created "check_postgres_logfile" Created "check_postgres_new_version_bc" Created "check_postgres_new_version_box" Created "check_postgres_new_version_cp" Created "check_postgres_new_version_pg" Created "check_postgres_new_version_tnm" Created "check_postgres_pgagent_jobs" Created "check_postgres_pgb_pool_cl_active" Created "check_postgres_pgb_pool_cl_waiting" Created "check_postgres_pgb_pool_maxwait" Created "check_postgres_pgb_pool_sv_active" Created "check_postgres_pgb_pool_sv_idle" Created "check_postgres_pgb_pool_sv_login" Created "check_postgres_pgb_pool_sv_tested" Created "check_postgres_pgb_pool_sv_used" Created "check_postgres_pgbouncer_backends" Created "check_postgres_pgbouncer_checksum" Created "check_postgres_prepared_txns" Created "check_postgres_query_runtime" Created "check_postgres_query_time" Created "check_postgres_relation_size" Created "check_postgres_replicate_row" Created "check_postgres_replication_slots" Created "check_postgres_same_schema" Created "check_postgres_sequence" Created "check_postgres_settings_checksum" Created "check_postgres_slony_status" Created "check_postgres_table_size" Created "check_postgres_timesync" Created "check_postgres_total_relation_size" Created "check_postgres_txn_idle" Created "check_postgres_txn_time" Created "check_postgres_txn_wraparound" Created "check_postgres_version" Created "check_postgres_wal_files"

      O Perl listou todas as funções para as quais criou um link simbólico. Agora elas podem ser executadas na linha de comando, como de costume.

      Você baixou e instalou o plug-in check_postgres. Você também criou links simbólicos para todos os comandos do plug-in, para que possam ser usados individualmente no Nagios. No próximo passo, você criará um arquivo de serviço de conexão, que o check_postgres utilizará para se conectar ao seu banco de dados gerenciado.

      Passo 2 — Configurando Seu Banco de Dados

      Nesta seção, você criará um arquivo de serviço de conexão do PostgreSQL contendo as informações de conexão do seu banco de dados. A seguir, você testará os dados de conexão invocando o check_postgres nele.

      O arquivo do serviço de conexão é, por convenção, chamado pg_service.conf e deve estar localizado em /etc/postgresql-common/. Crie este arquivo usando seu editor de textos favorito (por exemplo, o nano):

      • sudo nano /etc/postgresql-common/pg_service.conf

      Adicione as seguintes linhas, substituindo os espaços reservados destacados pelos valores reais mostrados no Painel de Controle do Banco de Dados gerenciado na seção Connection Details:

      /etc/postgresql-common/pg_service.conf

      [managed-db]
      host=host
      port=porta
      user=nome_de_usuário
      password=senha
      dbname=defaultdb
      sslmode=require
      

      O arquivo do serviço de conexão pode abrigar vários grupos de informações de conexão com o banco de dados. O início de um grupo é sinalizado colocando seu nome entre colchetes. Depois disso vem os parâmetros de conexão (host, port, user, password e assim por diante), separados por novas linhas, que devem receber um valor.

      Salve e feche o arquivo quando terminar.

      Agora você testará a validade da configuração conectando-se ao banco de dados via check_postgres executando o seguinte comando:

      • ./check_postgres.pl --dbservice=managed-db --action=connection

      Aqui, você diz ao check_postgres qual grupo de informações de conexão com o banco de dados usar com o parâmetro --dbservice, e também especifica que ele deve apenas tentar se conectar a ele especificando connection como a ação.

      Sua saída será semelhante a esta:

      Output

      POSTGRES_CONNECTION OK: service=managed-db version 11.4 | time=0.10s

      Isto significa que o check_postgres conseguiu conectar-se ao banco de dados, de acordo com os parâmetros do pg_service.conf. Se você receber um erro, verifique novamente o que você acabou de inserir nesse arquivo de configuração.

      Você criou e preencheu um arquivo de serviço de conexão do PostgreSQL, que funciona como uma string de conexão. Você também testou os dados de conexão executando check_postgres e observando a saída. Na próxima etapa, você configurará o Nagios para monitorar várias partes do seu banco de dados.

      Passo 3 — Criando Serviços de Monitoramento no Nagios

      Agora você configurará o Nagios para monitorar várias métricas do seu banco de dados, definindo um host e vários serviços, que chamarão o plug-in check_postgres e seus links simbólicos.

      O Nagios armazena seus arquivos de configuração personalizados em /usr/local/nagios/etc/objects. Os novos arquivos adicionados lá devem ser ativados manualmente no arquivo de configuração central do Nagios, localizado em /usr/local/nagios/etc/nagios.cfg. Agora você deverá definir comandos, um host e vários serviços, que serão usados para monitorar seu banco de dados gerenciado no Nagios.

      Primeiro, crie uma pasta dentro de /usr/local/nagios/etc/objects para armazenar sua configuração relacionada ao PostgreSQL executando o seguinte comando:

      • sudo mkdir /usr/local/nagios/etc/objects/postgresql

      Você armazenará os comandos do Nagios para check_nagios em um arquivo chamado commands.cfg. Crie-o para edição:

      • sudo nano /usr/local/nagios/etc/objects/postgresql/commands.cfg

      Adicione as seguintes linhas:

      /usr/local/nagios/etc/objects/postgresql/commands.cfg

      define command {
          command_name           check_postgres_connection
          command_line           /usr/local/nagios/libexec/check_postgres_connection --dbservice=$ARG1$
      }
      
      define command {
          command_name           check_postgres_database_size
          command_line           /usr/local/nagios/libexec/check_postgres_database_size --dbservice=$ARG1$ --critical='$ARG2$'
      }
      
      define command {
          command_name           check_postgres_locks
          command_line           /usr/local/nagios/libexec/check_postgres_locks --dbservice=$ARG1$
      }
      
      define command {
          command_name           check_postgres_backends
          command_line           /usr/local/nagios/libexec/check_postgres_backends --dbservice=$ARG1$
      }
      

      Salve e feche o arquivo.

      Neste arquivo, você define quatro comandos do Nagios que chamam partes diferentes do plugin check_postgres (checando a conectividade, obtendo o número de locks e conexões e o tamanho de todo o banco de dados). Todos eles aceitam um argumento que é passado para o parâmetro --dbservice e especificam a qual dos bancos de dados definidos em pg_service.conf se conectar.

      O comando check_postgres_database_size aceita um segundo argumento que é passado para o parâmetro --critical, que especifica o ponto em que o armazenamento do banco de dados está ficando cheio. Os valores aceitos incluem 1 KB para um kilobyte, 1 MB para um megabyte e assim por diante, até exabytes (EB). Um número sem uma unidade de capacidade é tratado como sendo expresso em bytes.

      Agora que os comandos necessários estão definidos, você definirá o host (essencialmente o banco de dados) e seus serviços de monitoramento em um arquivo chamado services.cfg. Crie-o usando seu editor favorito:

      • sudo nano /usr/local/nagios/etc/objects/postgresql/services.cfg

      Inclua as seguintes linhas, substituindo db_max_storage_size por um valor referente ao armazenamento disponível do seu banco de dados. É recomendável configurá-lo para 90% do tamanho de armazenamento que você alocou para ele:

      /usr/local/nagios/etc/objects/postgresql/services.cfg

      define host {
            use                    linux-server
            host_name              postgres
            check_command          check_postgres_connection!managed-db
      }
      
      define service {
            use                    generic-service
            host_name              postgres
            service_description    PostgreSQL Connection
            check_command          check_postgres_connection!managed-db
            notification_options   w,u,c,r,f,s
      }
      
      define service {
            use                    generic-service
            host_name              postgres
            service_description    PostgreSQL Database Size
            check_command          check_postgres_database_size!managed-db!db_max_storage_size
            notification_options   w,u,c,r,f,s
      }
      
      define service {
            use                    generic-service
            host_name              postgres
            service_description    PostgreSQL Locks
            check_command          check_postgres_locks!managed-db
            notification_options   w,u,c,r,f,s
      }
      
      define service {
            use                    generic-service
            host_name              postgres
            service_description    PostgreSQL Backends
            check_command          check_postgres_backends!managed-db
            notification_options   w,u,c,r,f,s
      }
      

      Você primeiro define um host, para que o Nagios saiba a que entidade os serviços se relacionam. Em seguida, você cria quatro serviços, que chamam os comandos que você acabou de definir. Cada um deles passa managed-db como argumento, detalhando que o managed-db que você definiu no Passo 2 deve ser monitorado.

      Em relação às opções de notificação, cada serviço especifica que as notificações devem ser enviadas quando o estado do serviço se tornar WARNING,UNKNOWN, CRITICAL,OK (quando se recuperar de uma parada), quando o serviço iniciar oscilando, ou quando a parada programada iniciar ou terminar. Sem atribuir explicitamente um valor a essa opção, nenhuma notificação seria enviada (para os contatos disponíveis), exceto se acionada manualmente.

      Salve e feche o arquivo.

      Em seguida, você precisará dizer explicitamente ao Nagios para ler os arquivos de configuração deste novo diretório, editando o arquivo de configuração geral do Nagios. Abra-o para edição executando o seguinte comando:

      • sudo nano /usr/local/nagios/etc/nagios.cfg

      Encontre esta linha destacada no arquivo:

      /usr/local/nagios/etc/nagios.cfg

      ...
      # directive as shown below:
      
      cfg_dir=/usr/local/nagios/etc/servers
      #cfg_dir=/usr/local/nagios/etc/printers
      ...
      

      Acima dela, adicione a seguinte linha destacada:

      /usr/local/nagios/etc/nagios.cfg

      ...
      cfg_dir=/usr/local/nagios/etc/objects/postgresql
      cfg_dir=/usr/local/nagios/etc/servers
      ...
      

      Salve e feche o arquivo. Esta linha diz ao Nagios para carregar todos os arquivos de configuração a partir do diretório /usr/local/nagios/etc/objects/postgresql, onde seus arquivos de configuração estão localizados.

      Antes de reiniciar o Nagios, verifique a validade da configuração executando o seguinte comando:

      • sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

      O final da saída será semelhante a este:

      Output

      Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check

      Isso significa que o Nagios não encontrou erros na configuração. Se ele lhe mostrar um erro, você também verá uma dica sobre o que deu errado, para poder corrigir o erro mais facilmente.

      Para fazer com que o Nagios recarregue sua configuração, reinicie seu serviço executando o seguinte comando:

      • sudo systemctl restart nagios

      Agora você pode navegar até o Nagios no seu navegador. Depois de carregado, clique na opção Services no menu à esquerda. Você verá o host do postgres e uma lista de serviços, junto com seus status atuais:

      PostgreSQL Monitoring Services - Pending

      Em breve, todos eles ficarão verdes e mostrarão o status OK. Você verá a saída do comando na coluna Status Information. Você pode clicar no nome do serviço e ver informações detalhadas sobre seu status e disponibilidade.

      Você adicionou comandos check_postgres, um host e vários serviços à sua instalação do Nagios para monitorar seu banco de dados. Você também verificou que os serviços estão funcionando corretamente, examinando-os por meio da interface web do Nagios. Na próxima etapa, você configurará os alertas baseados no Slack.

      Passo 4 — Configurando Alertas para o Slack

      Nesta seção, você configurará o Nagios para alertá-lo sobre eventos via Slack, publicando-os nos canais desejados em seu workspace.

      Antes de começar, efetue login no workspace desejado no Slack e crie dois canais nos quais você deseja receber mensagens de status do Nagios: um para host e outro para notificações de serviço. Se desejar, você pode criar apenas um canal em que receberá os dois tipos de alertas.

      Em seguida, vá para o app Nagios no Diretório de apps do Slack e click em Add Configuration. Você verá uma página para adicionar a Integração Nagios.

      Slack - Add Nagios Integration

      Click em Add Nagios Integration. Quando a página carregar, role para baixo e tome nota do token, porque você precisará dele mais adiante.

      Slack - Integration Token

      Agora você instalará e configurará o plugin Slack (escrito em Perl) para o Nagios no seu servidor. Primeiro, instale os pré-requisitos necessários do Perl executando o seguinte comando:

      • sudo apt install libwww-perl libcrypt-ssleay-perl -y

      Em seguida, faça o download do plug-in para o diretório de plugins do Nagios:

      • sudo curl https://raw.githubusercontent.com/tinyspeck/services-examples/master/nagios.pl -o slack.pl

      Torne-o executável executando o seguinte comando:

      Agora, você precisará editá-lo para conectar-se ao seu workspace usando o token que você obteve do Slack. Abra-o para edição:

      Localize as seguintes linhas no arquivo:

      /usr/local/nagios/libexec/slack.pl

      ...
      my $opt_domain = "foo.slack.com"; # Your team's domain
      my $opt_token = "your_token"; # The token from your Nagios services page
      ...
      

      Substitua foo.slack.com pelo domínio do seu workspace e your_token pelo seu token de integração do app Nagios, salve e feche o arquivo. O script agora poderá enviar solicitações apropriadas ao Slack, que você testará executando o seguinte comando:

      • ./slack.pl -field slack_channel=#nome_do_seu_canal -field HOSTALIAS="Test Host" -field HOSTSTATE="UP" -field HOSTOUTPUT="Host is UP" -field NOTIFICATIONTYPE="RECOVERY"

      Substitua nome_do_seu_canal pelo nome do canal em que você deseja receber alertas de status. O script exibirá informações sobre a solicitação HTTP feita ao Slack e, se tudo for executado corretamente, a última linha da saída será ok. Se você receber um erro, verifique novamente se o canal do Slack especificado existe no workspace.

      Agora você pode ir para o workspace do Slack e selecionar o canal que você especificou. Você verá uma mensagem de teste vinda do Nagios.

      Slack - Nagios Test Message

      Isso confirma que você configurou corretamente o script para o Slack. Agora você passará a configurar o Nagios para alertá-lo via Slack usando este script.

      Você precisará criar um contato para o Slack e dois comandos que enviarão mensagens para ele. Você armazenará essa configuração em um arquivo chamado slack.cfg, na mesma pasta que os arquivos de configuração anteriores. Crie-o para edição executando o seguinte comando:

      • sudo nano /usr/local/nagios/etc/objects/postgresql/slack.cfg

      Adicione as seguintes linhas:

      /usr/local/nagios/etc/objects/postgresql/slack.cfg

      define contact {
            contact_name                             slack
            alias                                    Slack
            service_notification_period              24x7
            host_notification_period                 24x7
            service_notification_options             w,u,c,f,s,r
            host_notification_options                d,u,r,f,s
            service_notification_commands            notify-service-by-slack
            host_notification_commands               notify-host-by-slack
      }
      
      define command {
            command_name     notify-service-by-slack
            command_line     /usr/local/nagios/libexec/slack.pl -field slack_channel=#service_alerts_channel
      }
      
      define command {
            command_name     notify-host-by-slack
            command_line     /usr/local/nagios/libexec/slack.pl -field slack_channel=#host_alerts_channel
      }
      

      Aqui você define um contato chamado slack, declara que ele pode ser contatado a qualquer momento e especifica quais comandos usar para notificar eventos relacionados ao serviço e ao host. Esses dois comandos são definidos depois e chamam o script que você acabou de configurar. Você precisará substituir service_alerts_channel e host_alerts_channel pelos nomes dos canais em que deseja receber mensagens de serviço e host, respectivamente. Se preferir, você pode usar os mesmos nomes de canais.

      De maneira semelhante à criação do serviço no último passo, é crucial definir as opções de notificação de serviço e host no contato, pois ele determina que tipo de alerta o contato receberá. A omissão dessas opções resultaria no envio de notificações somente quando acionadas manualmente a partir da interface web.

      Quando você terminar de editar, salve e feche o arquivo.

      Para habilitar o alerta através do contato slack que você acabou de definir, você precisará adicioná-lo ao grupo de contatos admin, definido no arquivo de configuração contacts.cfg, localizado em /usr/local/nagios/etc/objects/. Abra-o para edição executando o seguinte comando:

      • sudo nano /usr/local/nagios/etc/objects/contacts.cfg

      Localize o bloco de configuração parecido com este:

      /usr/local/nagios/etc/objects/contacts.cfg

      define contactgroup {
      
          contactgroup_name       admins
          alias                   Nagios Administrators
          members                 nagiosadmin
      }
      

      Adicione slack à lista de membros, assim:

      /usr/local/nagios/etc/objects/contacts.cfg

      define contactgroup {
      
          contactgroup_name       admins
          alias                   Nagios Administrators
          members                 nagiosadmin,slack
      }
      

      Salve e feche o arquivo.

      Por padrão, ao executar scripts, o Nagios não disponibiliza informações de host e serviço por meio de variáveis de ambiente, que é o que o script Slack requer para enviar mensagens significativas. Para remediar isso, você precisará definir a configuração enable_environment_macros em nagios.cfg como 1. Abra-o para edição executando o seguinte comando:

      • sudo nano /usr/local/nagios/etc/nagios.cfg

      Encontre a linha semelhante a essa:

      /usr/local/nagios/etc/nagios.cfg

      enable_environment_macros=0
      

      Altere o valor para 1, assim:

      /usr/local/nagios/etc/nagios.cfg

      enable_environment_macros=1
      

      Salve e feche o arquivo.

      Teste a validade da configuração do Nagios executando o seguinte comando:

      • sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

      O final da saída será semelhante a:

      Output

      Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check

      Prossiga e reinicie o Nagios executando o seguinte comando:

      • sudo systemctl restart nagios

      Para testar a integração do Slack, você vai enviar uma notificação personalizada pela interface web. Recarregue a página de status Services do Nagios no seu navegador. Clique no serviço PostgreSQL Backends e clique em Send custom service notification à direita quando a página carregar.

      Nagios - Custom Service Notification

      Digite um comentário de sua escolha e clique em Commit e, em seguida, clique em Done. Você receberá imediatamente uma nova mensagem no Slack.

      Slack - Status Alert From Nagios

      Agora você integrou o Slack ao Nagios, para receber mensagens sobre eventos críticos e alterações de status imediatamente. Você também testou a integração acionando manualmente um evento no Nagios.

      Conclusão

      Agora você tem o Nagios Core configurado para monitorar seu banco de dados PostgreSQL gerenciado e relatar quaisquer mudanças de status e eventos para o Slack, para estar sempre de olho no que está acontecendo com seu banco de dados. Isso permitirá que você reaja rapidamente em caso de emergência, porque você receberá o feed de status em tempo real.

      Se você quiser saber mais sobre os recursos do check_postgres, consulte a documentação, onde você encontrará muito mais comandos que você pode eventualmente usar.

      Para obter mais informações sobre o que você pode fazer com seu banco de dados PostgreSQL gerenciado, visite a doumentação de produto.



      Source link