One place for hosting & domains

      Banco

      Como Instalar o WordPress com um Banco de Dados Gerenciado no Ubuntu 18.04


      Uma versão anterior deste tutorial foi escrita por Justin Ellingwood

      Introdução

      O WordPress é o CMS (sistema de gerenciamento de conteúdo) mais popular da Internet. É uma ótima opção para colocar um site em funcionamento rapidamente e, após a configuração inicial, quase toda a administração pode ser feita pela interface web.

      O WordPress foi projetado para buscar conteúdo – incluindo postagens, comentários, perfis de usuário e outros dados – de um banco de dados de back-end. À medida que um site cresce e deve satisfazer a cada vez mais tráfego, ele pode eventualmente crescer excessivamente o seu banco de dados inicial. Para resolver isso, pode-se ampliar o banco de dados migrando seus dados para uma máquina com mais RAM ou CPU, mas esse é um processo tedioso que corre o risco de perda ou corrupção de dados. É por isso que alguns desenvolvedores do WordPress optam por criar seus sites em bancos de dados gerenciados, que permitem aos usuários dimensionar seu banco de dados automaticamente com um risco muito menor de perda de dados.

      Neste guia, vamos focar na configuração de uma instância do WordPress com um banco de dados MySQL gerenciado e um servidor Ubuntu 18.04. Isso exigirá que você instale o PHP e o Apache para servir o conteúdo via web.

      Pré-requisitos

      Para concluir este tutorial, você precisará de:

      • Acesso a um servidor Ubuntu 18.04: Este servidor deve ter um usuário não-root com sudo habilitado e um firewall configurado. Você pode configurar isso seguindo nosso guia de Configuração Inicial de servidor com Ubuntu 18.04.
      • Um banco de dados MySQL gerenciado: Para provisionar um Banco de Dados MySQL Gerenciado na DigitalOcean, consulte nossa documentação de produto do Managed Databases. Observe que este guia se refere aos bancos de dados gerenciados da DigitalOcean nos exemplos, mas as instruções fornecidas aqui também devem geralmente funcionar para bancos de dados MySQL gerenciados de outros provedores de nuvem.
      • Uma pilha LAMP instalada em seu servidor: Além de um banco de dados, o WordPress requer um servidor web e o PHP para funcionar corretamente. A configuração de uma pilha LAMP completa (Linux, Apache, MySQL e PHP) atende a todos esses requisitos. Siga este guia para instalar e configurar estes softwares. Ao seguir este guia, certifique-se de configurar um virtual host para apontar para um nome de domínio que você possui. Além disso, certifique-se de pular o Passo 2, pois a instalação do mysql-server em sua máquina tornará sua instância de banco de dados gerenciada redundante.
      • Segurança TLS/SSL implementada para o seu site: Se você possui um nome de domínio, a maneira mais fácil de proteger seu site é com o Let’s Encrypt, que fornece certificados confiáveis e gratuitos. Siga nosso tutorial Let’s Encrypt guide for Apache para configurar isso. Observe que isso também exigirá que você obtenha um nome de domínio e configure registros DNS no seu servidor. Siga esta introdução ao DNS na DigitalOcean para detalhes sobre como configurar isso. Alternativamente, se você não tiver um nome de domínio, use um certificado autoassinado para o seu site.

      Quando terminar as etapas de configuração, efetue login no servidor como usuário não-root e continue logo abaixo.

      Passo 1 – Adicionando o Repositório de Software MySQL e Instalando o mysql-client

      Para configurar sua instância gerenciada do MySQL, você precisará instalar um cliente que permita acessar o banco de dados a partir do seu servidor. Este passo o guiará pelo processo de instalação do pacote mysql-client.

      Em muitos casos, você pode simplesmente instalar o mysql-client com o comando apt, mas se você estiver usando os repositórios padrão do Ubuntu, isso instalará a versão 5.7 do programa. Para acessar um banco de dados MySQL Gerenciado na DigitalOcean, você precisará instalar a versão 8.0 ou superior. Para fazer isso, você deve primeiro adicionar o repositório de software MySQL antes de instalar o pacote.

      Comece visitando a página MySQL APT Repository em seu navegador. Localize o botão Download no canto inferior direito e clique para avançcar para próxima página. Esta página solicitará que você efetue login ou inscreva-se em uma conta web da Oracle. Você pode pular isso e procurar o link que diz No thanks, just start my download. Clique com o botão direito do mouse no link e selecione Copy Link Address (esta opção pode aparecer de forma diferente, dependendo do seu navegador).

      Agora você está pronto para baixar o arquivo. No seu servidor, vá para um diretório no qual você pode gravar:

      Faça o download do arquivo usando curl, lembrando-se de colar o endereço que você acabou de copiar no lugar da parte destacada do comando a seguir. Você também precisa passar duas flags de linha de comando para o curl. -O instrui o curl para dar saída em um arquivo em vez da saída padrão. A flag L faz com que o curl siga redirecionamentos HTTP, o que é necessário neste caso, porque o endereço que você copiou realmente redireciona para outro local antes do download do arquivo:

      • curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb

      O arquivo agora deve ser baixado em seu diretório atual. Liste os arquivos para garantir:

      Você verá o nome do arquivo listado na saída:

      Output

      mysql-apt-config_0.8.13-1_all.deb . . .

      Agora você pode adicionar o repositório MySQL APT à lista de repositórios do seu sistema. O comando dpkg é usado para instalar, remover e inspecionar pacotes de software .deb. O comando a seguir inclui a flag -i, indicando que você deseja instalar a partir do arquivo especificado:

      • sudo dpkg -i mysql-apt-config*

      Durante a instalação, você verá uma tela de configuração onde poderá especificar qual versão do MySQL você prefere, além de uma opção para instalar repositórios para outras ferramentas relacionadas ao MySQL. Os padrões adicionarão as informações do repositório para a versão estável mais recente do MySQL e nada mais. É isso que queremos, então use a seta para baixo para navegar até a opção de menu Ok e pressione ENTER.

      Selecting mysql-apt-config configuration options

      Depois disso, o pacote terminará de adicionar o repositório. Atualize o cache de pacotes do apt para disponibilizar os novos pacotes de software:

      Em seguida, você pode limpar um pouco o sistema e excluir o arquivo baixado, pois não será necessário no futuro:

      Note: Se você precisar atualizar a configuração desses repositórios, basta executar o seguinte comando para selecionar suas novas opções:

      • sudo dpkg-reconfigure mysql-apt-config

      Após selecionar suas novas opções, execute o seguinte comando para atualizar o cache de pacotes:

      Agora que você adicionou os repositórios do MySQL, está pronto para instalar o software cliente do MySQL. Faça isso com o seguinte comando apt:

      • sudo apt install mysql-client

      Quando esse comando terminar, verifique o número da versão do software para garantir que você tenha a versão mais recente:

      Output

      mysql Ver 8.0.17-cluster for Linux on x86_64 (MySQL Community Server - GPL)

      Agora você pode se conectar ao seu banco de dados gerenciado e começar a prepará-lo para funcionar com o WordPress.

      Passo 2 – Criando um Banco de Dados MySQL e um Usuário para o WordPress

      O WordPress usa o MySQL para gerenciar e armazenar informações do site e de usuário. Supondo que você tenha concluído todos os tutoriais de pré-requisito, você já terá provisionado uma instância gerenciada do MySQL. Aqui, daremos o passo preparatório da criação de um banco de dados e um usuário para o WordPress usar.

      A maioria dos provedores de bancos de dados gerenciados fornece um uniform resource identifier (URI) usado para a conexão com a instância do banco de dados. Se você estiver usando um Banco de Dados Gerenciado na DigitalOcean, poderá encontrar as informações de conexão relevantes no seu Painel de Controle de Nuvem.

      Primeiro, clique em Databases no menu da barra lateral esquerda e selecione o banco de dados MySQL que você deseja usar para a instalação do WordPress. Role para baixo até a seção Connection Details e copie o link no campo host. Em seguida, cole este link no seguinte comando, substituindo uri_do_host pelas informações que você acabou de copiar. Da mesma forma, copie o número da porta no campo port – que será 25060 em um banco de dados gerenciado DigitalOcean – e substitua porta por esse número. Além disso, se esta é a primeira vez que você se conecta ao seu banco de dados gerenciado e você não criou seu próprio usuário administrativo do MySQL, copie o valor no campo username e cole-o no comando, substituindo usuário:

      • mysql -u usuário -p -h uri_do_host -P porta

      Este comando inclui a flag -p, que irá solicitar a senha do usuário do MySQL que você especificou. Para o usuário doadmin padrão do Banco de Dados Gerenciado da DigitalOcean, você pode encontrar isso clicando no link show na seção Connection Details para revelar a senha. Copie e cole-a no seu terminal quando solicitado.

      Nota: Se você não estiver usando um banco de dados gerenciado da DigitalOcean, suas opções de conexão podem ser diferentes. Se for esse o caso, consulte a documentação do seu provedor para obter instruções sobre como conectar aplicações de terceiros ao seu banco de dados.

      No prompt do MySQL, crie um novo banco de dados que o WordPress irá controlar. Você pode chama-lo como quiser, mas usaremos o nome wordpress neste guia para simplificar. Crie o banco de dados para o WordPress digitando:

      • CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

      Nota: Todo comando do MySQL deve terminar em ponto e vírgula (;). Verifique se isso está presente se você estiver enfrentando algum problema.

      Em seguida, crie uma nova conta de usuário MySQL que você usará exclusivamente para operar no novo banco de dados. Criar bancos de dados e contas de propósito único é uma boa ideia do ponto de vista de gerenciamento e segurança. Usaremos o nome wordpressuser neste guia, mas fique à vontade para alterá-lo, se desejar.

      Execute o seguinte comando, mas substitua ip_do_seu_servidor pelo endereço IP do seu servidor Ubuntu. Esteja ciente, no entanto, de que isso limitará o wordpressuser a poder se conectar somente a partir do seu servidor LAMP; se você planeja gerenciar o WordPress a partir do seu computador local, insira o endereço IP dessa máquina. Além disso, escolha uma senha forte para o usuário do banco de dados.

      Observe que este comando especifica que o wordpressuser usará o plugin mysql_native_password para se autenticar. No MySQL 8.0 e posterior, o plug-in de autenticação padrão é o caching_sha2_password, que geralmente é considerado mais seguro que o mysql_native_password. No momento da redação deste artigo, o PHP não suporta o caching_sha2_password, e é por isso que especificamos o mysql_native_password neste comando:

      • CREATE USER 'wordpressuser'@ip_do_seu_servidor IDENTIFIED WITH mysql_native_password BY 'senha';

      Nota: Se você não souber qual é o endereço IP público do seu servidor, existem várias maneiras de encontrá-lo. Geralmente, esse é o endereço que você usa para se conectar ao seu servidor através do SSH.

      Um método é utilizar o utilitário curl para entrar em contato com algo que está externo e perguntar como ele vê seu servidor. Por exemplo, você pode usar o curl para entrar em contato com uma ferramenta de verificação de IP como o ICanHazIP:

      • curl http://icanhazip.com

      Este comando retornará o endereço IP público do seu servidor em sua saída.

      Em seguida, conceda a esse usuário acesso ao banco de dados que você acabou de criar. Faça isso executando o seguinte comando:

      • GRANT ALL ON wordpress.* TO 'wordpressuser'@ip_do_seu_servidor;

      Agora você tem um banco de dados e uma conta de usuário, cada uma feita especificamente para o WordPress. Vá em frente e saia do MySQL digitando:

      Isso cuida da configuração do seu banco de dados MySQL gerenciado para funcionar com o WordPress. No próximo passo, você instalará algumas extensões PHP para obter mais funcionalidade do CMS.

      Passo 3 – Instalando Extensões PHP Adicionais

      Supondo que você seguiu o tutorial de pré-requisito da pilha LAMP, você terá instalado algumas extensões destinadas a fazer com que o PHP se comunique adequadamente com o MySQL. O WordPress e muitos de seus plugins utilizam extensões PHP adicionais para acrescentar funcionalidades adicionais.

      Para baixar e instalar algumas das extensões PHP mais populares para uso com o WordPress, execute o seguinte comando:

      • sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

      Nota: Cada plugin do WordPress tem seu próprio conjunto de requisitos. Alguns podem exigir a instalação de pacotes PHP adicionais. Verifique a documentação do seu plug-in para ver quais extensões ele requer. Se estiverem disponíveis, elas podem ser instaladas com o apt como demonstrado acima.

      Você reiniciará o Apache para carregar essas novas extensões na próxima seção. No entanto, se você estiver retornando aqui para instalar plug-ins adicionais, poderá reiniciar o Apache agora, digitando:

      • sudo systemctl restart apache2

      Caso contrário, continue no Passo 4.

      Passo 4 – Ajustando a Configuração do Apache para Permitir Substituições e Reescritas via .htaccess

      Para que o Apache possa servir adequadamente sua instalação do WordPress, você deve fazer alguns pequenos ajustes na configuração dele.

      Se você seguiu os tutoriais de pré-requisito, já deve ter um arquivo de configuração para o seu site no diretório /etc/apache2/sites-available/. Usaremos /etc/apache2/sites-available/seu_domínio.conf como um exemplo aqui, mas você deve substituir o caminho para seu arquivo de configuração, onde apropriado.

      Além disso, usaremos /var/www/seu_domínio como o diretório raiz ou web root nessa instalação de exemplo do WordPress. Você deve usar o web root especificado em sua própria configuração.

      Nota: É possível que você esteja usando a configuração padrão 000-default.conf (com /var/www/html como seu web root). Isso é bom de usar se você estiver hospedando apenas um site neste servidor. Caso contrário, é melhor dividir a configuração necessária em partes lógicas, um arquivo por site.

      Atualmente, o uso de arquivos .htaccess está desativado. O WordPress e muitos plugins do WordPress usam esses arquivos extensivamente para ajustes do comportamento do servidor web no diretório .

      Abra o arquivo de configuração do Apache para o seu site:

      • sudo nano /etc/apache2/sites-available/seu_dominio.conf

      Para permitir arquivos .htaccess, você precisa definir a diretiva AllowOverride dentro de um bloco Directory apontando para seu document root. Adicione o seguinte bloco de texto dentro do bloco VirtualHost no seu arquivo de configuração, certificando-se de usar o diretório web root correto:

      /etc/apache2/sites-available/seu_domínio.conf

      <Directory /var/www/seu_dominio>
          AllowOverride All
      </Directory>
      

      Quando terminar, salve e feche o arquivo.

      Em seguida, ative o mod_rewrite para que você possa empregar o recurso de link permanente do WordPress:

      Antes de implementar as alterações que você acabou de fazer, verifique se não há erros de sintaxe no seu arquivo de configuração:

      • sudo apache2ctl configtest

      A saída deve ter uma mensagem parecida com esta:

      Output

      AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

      Se você deseja suprimir a linha superior, basta adicionar uma diretiva ServerName ao seu arquivo de configuração Apache principal (global) em /etc/apache2/apache2.conf. O ServerName pode ser o domínio ou endereço IP do seu servidor. No entanto, isso é apenas uma mensagem; isso não afeta a funcionalidade do seu site e, desde que a saída contenha Syntax OK, você estará pronto para continuar.

      Reinicie o Apache para efetivar as alterações:

      • sudo systemctl restart apache2

      Com isso, você está pronto para baixar e configurar o próprio WordPress.

      Passo 5 – Fazendo o Download do WordPress

      Agora que o software do seu servidor está configurado, você pode instalar e configurar o WordPress. Por motivos de segurança, é sempre recomendável obter a versão mais recente do WordPress no site dele.

      Primeiro, navegue para um diretório gravável. O /tmp funcionará para os propósitos deste passo:

      Em seguida, baixe a versão compactada digitando:

      • curl -O https://wordpress.org/latest.tar.gz

      Extraia o arquivo compactado para criar a estrutura de diretórios do WordPress:

      Você moverá esses arquivos para o seu document root momentaneamente. Antes de fazer isso, adicione um arquivo fictício .htaccess para que este fique disponível para uso posterior pelo WordPress.

      Crie o arquivo digitando:

      • touch /tmp/wordpress/.htaccess

      Além disso, copie o arquivo de configuração de exemplo para o nome do arquivo que o WordPress realmente lê:

      • cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

      Crie um diretório upgrade, para que o WordPress não tenha problemas de permissão ao tentar fazer isso sozinho após uma atualização do software:

      • mkdir /tmp/wordpress/wp-content/upgrade

      Em seguida, copie todo o conteúdo do diretório para o document root. O comando a seguir usa um ponto no final do diretório de origem para indicar que tudo dentro do diretório deve ser copiado, incluindo arquivos ocultos (como o arquivo .htaccess que você acabou de criar):

      • sudo cp -a /tmp/wordpress/. /var/www/seu_domínio

      Isso cuida do download do WordPress em seu servidor. Neste ponto, no entanto, você ainda não poderá acessar a interface de configuração do WordPress no seu navegador. Para corrigir isso, você precisará fazer algumas alterações na configuração do WordPress do seu servidor.

      Passo 6 – Configurando o Diretório do WordPress

      Antes de passar pela configuração do WordPress usando a interface web, você precisa ajustar alguns itens no diretório do WordPress. Uma mudança importante na configuração envolve a configuração de permissões razoáveis e propriedade do arquivo.

      Comece dando a propriedade de todos os arquivos ao usuário e grupo www-data. Este é o usuário que o servidor web Apache executa como nos sistemas Debian e Ubuntu, e o Apache precisará ler e gravar arquivos do WordPress para servir o site e realizar atualizações automáticas.

      Atualize a propriedade do seu diretório web root com chown:

      • sudo chown -R www-data:www-data /var/www/seu_dominio

      Em seguida, execute os dois comandos find a seguir para definir as permissões corretas nos diretórios e arquivos do WordPress:

      • sudo find /var/www/seu_dominio/ -type d -exec chmod 750 {} ;
      • sudo find /var/www/seu_dominio/ -type f -exec chmod 640 {} ;

      Essas devem ser permissões razoáveis definidas para começar. Esteja ciente, no entanto, de que alguns plug-ins e procedimentos podem exigir atualizações adicionais.

      Agora, você precisa fazer algumas alterações no arquivo de configuração principal do WordPress.

      Quando você abre o arquivo, a primeira ordem do dia será substituir algumas chaves secretas para fornecer segurança à sua instalação. O WordPress fornece um gerador seguro para esses valores, para que você não precise criar bons valores por conta própria. Eles são usados apenas internamente, portanto, não prejudicará a usabilidade ter valores complexos e seguros aqui.

      Para obter valores seguros do gerador de chave secreta do WordPress, execute o seguinte comando:

      • curl -s https://api.wordpress.org/secret-key/1.1/salt/

      Você receberá de volta valores únicos parecidos com este:

      Atenção! É importante que você solicite valores exclusivos a cada vez. NÃO copie os valores mostrados aqui!

      Output

      define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

      Estas são linhas de configuração que você pode colar diretamente no seu arquivo de configuração para definir chaves seguras. Copie a saída que você recebeu agora.

      Em seguida, abra o arquivo de configuração do WordPress:

      • sudo nano /var/www/seu_domínio/wp-config.php

      Encontre a seção que contém os valores fictícios para essas configurações. Vai parecer com algo assim:

      /var/www/your_domain/wp-config.php

      . . .
      
      define('AUTH_KEY',         'put your unique phrase here');
      define('SECURE_AUTH_KEY',  'put your unique phrase here');
      define('LOGGED_IN_KEY',    'put your unique phrase here');
      define('NONCE_KEY',        'put your unique phrase here');
      define('AUTH_SALT',        'put your unique phrase here');
      define('SECURE_AUTH_SALT', 'put your unique phrase here');
      define('LOGGED_IN_SALT',   'put your unique phrase here');
      define('NONCE_SALT',       'put your unique phrase here');
      
      . . .
      

      Exclua essas linhas e cole os valores que você copiou da linha de comando:

      /var/www/your_domain/wp-config.php

      . . .
      
      define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
      define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
      define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
      define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
      define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
      define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
      define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
      define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');
      
      . . .
      

      Em seguida, você precisa modificar algumas das configurações de conexão com o banco de dados no início do arquivo. Primeiro, atualize os campos 'DB_NAME', 'DB_USER', e 'DB_PASSWORD' para apontar para o nome do banco de dados, o usuário do banco de dados e a senha associada que você configurou no MySQL:

      /var/www/your_domain/wp-config.php

      . . .
      /** The name of the database for WordPress */
      define('DB_NAME', 'wordpress');
      
      /** MySQL database username */
      define('DB_USER', 'wordpressuser');
      
      /** MySQL database password */
      define('DB_PASSWORD', 'password');
      
      . . .
      

      Você também precisará substituir o localhost no campo 'DB_HOST' pelo host do seu banco de dados gerenciado. Além disso, anexe dois pontos (:) e o número da porta do seu banco de dados ao host:

      /var/www/wordpress/wp-config.php

      . . .
      
      /** MySQL hostname */
      define( 'DB_HOST', 'managed_database_host:managed_database_port' );
      
      . . .
      

      A última alteração que você precisa fazer é definir o método que o WordPress usará para gravar no sistema de arquivos. Como você já deu permissão ao servidor web para gravar onde ele precisa, você pode definir explicitamente o método do sistema de arquivos para direct port. Se você não definir isso com as configurações atuais, o WordPress poderá solicitar credenciais de FTP quando você executar determinadas ações.

      Essa configuração pode ser adicionada abaixo das configurações de conexão com o banco de dados ou em qualquer outro local do arquivo:

      /var/www/your_domain/wp-config.php

      . . .
      
      define('FS_METHOD', 'direct');
      . . .
      

      Salve e feche o arquivo ao terminar.

      Depois de fazer essas alterações, você está pronto para concluir o processo de instalação do WordPress em seu navegador. No entanto, há mais uma etapa que recomendamos que você complete para adicionar uma camada extra de segurança à sua configuração.

      Neste ponto, sua instalação do WordPress está se comunicando com o banco de dados MySQL gerenciado. No entanto, não há garantia de que as transferências de dados entre as duas máquinas sejam seguras. Neste passo, configuraremos o WordPress para se comunicar com sua instância do MySQL por meio de uma conexão TLS/SSL para garantir comunicações seguras entre as duas máquinas.

      Para fazer isso, você precisará do certificado da CA do seu banco de dados gerenciado. Para um banco de dados gerenciado na DigitalOcean, você pode encontrá-lo navegando novamente até a guia Databases no Control Panel. Clique no seu banco de dados e encontre a seção Connection Details. Haverá um botão que diz Download the CA certificate. Clique neste botão para baixar o certificado na sua máquina local.

      Em seguida, transfira esse arquivo para o seu servidor WordPress. Se sua máquina local estiver executando Linux ou macOS, você pode usar uma ferramenta como o scp:

      • scp /caminho/para/o/arquivo/ca-certificate.crt sammy@ip_do_seu_servidor:/tmp

      Se sua máquina local estiver executando o Windows, você poderá usar uma ferramenta alternativa como o WinSCP.

      Quando o certificado da CA estiver no seu servidor, mova-o para o diretório /user/local/share/ca-certificates/, o repositório de certificados confiáveis do Ubuntu:

      • sudo mv /tmp/ca-certificate.crt /usr/local/share/ca-certificates/

      Depois disso, execute o comando update-ca-certificates. Este programa procura certificados dentro de /usr/local/share/ca-certificates, adiciona novos no diretório /etc/ssl/certs/ e gera uma lista de certificados SSL confiáveis com base em seu conteúdo:

      • sudo update-ca-certificates

      Em seguida, reabra seu arquivo wp-config.php:

      • nano /var/www/seu_domínio/wp-config.php

      Em algum lugar do arquivo, adicione a seguinte linha:

      /var/www/seu_domínio/wp-config.php

      . . .
      define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
      . . .
      

      Salve e feche o arquivo.

      Depois disso, o WordPress se comunicará com segurança com seu banco de dados MySQL gerenciado.

      Passo 8 – Concluindo a Instalação pela Interface Web

      Agora que a configuração do servidor está concluída, você pode concluir a instalação através da interface web do WordPress.

      No seu navegador, navegue até o nome de domínio ou endereço IP público do seu servidor:

      https://domínio_ou_ip_do_servidor
      

      Supondo que não haja erros nas configurações do seu WordPress ou do Apache, você verá a página inicial da seleção de idiomas do WordPress. Selecione o idioma que você gostaria de usar:

      WordPress language selection

      Depois de selecionar seu idioma, você verá a página principal de configuração.

      Escolha um nome para o seu site WordPress e escolha um nome de usuário (é recomendável não escolher algo como “admin” por motivos de segurança). Uma senha forte é gerada automaticamente. Salve esta senha ou insira uma senha alternativa forte.

      Digite seu endereço de email e selecione se deseja desencorajar os mecanismos de pesquisa de fazer indexação do seu site:

      WordPress setup installation

      Ao clicar adiante, você será direcionado para uma página que solicita que você faça login:

      WordPress login prompt

      Após o login, você será direcionado para o painel de administração do WordPress:

      WordPress login prompt

      A partir daqui, você pode começar a personalizar seu novo site WordPress e começar a publicar conteúdo. Se for a primeira vez que você usa o WordPress, recomendamos que você explore um pouco a interface para se familiarizar com o seu novo CMS.

      Conclusão

      Ao concluir este guia, você terá o WordPress instalado e pronto para uso em seu servidor. Além disso, sua instalação do WordPress busca dinamicamente postagens, páginas e outros conteúdos do seu banco de dados MySQL gerenciado.

      Algumas das próximas etapas comuns são escolher a configuração de links permanentes ou permalinks para suas postagens. Essa configuração pode ser encontrada em Configurações > Permalinks. Você também pode selecionar um novo tema em Aparência > Temas. Depois de começar a carregar algum conteúdo no seu site, você também pode configurar uma CDN para acelerar a entrega de elementos do seu site.



      Source link

      Como Analisar as Estatísticas do Banco de Dados PostgreSQL Gerenciado Usando o Elastic Stack 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 de banco de dados é o processo contínuo de rastrear sistematicamente várias métricas que mostram como o banco de dados está se comportando. Ao observar os dados de desempenho, você pode obter informações valiosas e identificar possíveis gargalos, além de encontrar maneiras adicionais de melhorar o desempenho do banco de dados. Esses sistemas geralmente implementam alertas que notificam os administradores quando as coisas dão errado. As estatísticas coletadas podem ser usadas não apenas para melhorar a configuração e o fluxo de trabalho do banco de dados, mas também para os aplicativos clientes.

      Os benefícios da utilização do Elastic Stack (ELK stack) para monitorar seu banco de dados gerenciado, é seu excelente suporte para pesquisa e a capacidade de ingerir novos dados muito rapidamente. Ele não se destaca na atualização dos dados, mas esse trade-off é aceitável para fins de monitoramento e logs, onde dados passados quase nunca são alterados. O Elasticsearch oferece meios poderosos de consultar os dados, que você pode usar através do Kibana para entender melhor como o banco de dados se sai em diferentes períodos de tempo. Isso permitirá que você correlacione a carga do banco de dados com eventos da vida real para obter informações sobre como o banco de dados está sendo usado.

      Neste tutorial, você importará métricas de banco de dados geradas pelo coletor de estatísticas do PostgreSQL no Elasticsearch via Logstash. Isso implica em configurar o Logstash para extrair dados do banco de dados usando o conector JDBC do PostgreSQL para enviá-los ao Elasticsearch para indexação imediatamente após. Os dados importados podem ser analisados e visualizados posteriormente no Kibana. Então, se seu banco de dados for novo, você usará o pgbench, uma ferramenta de benchmarking do PostgreSQL, para criar visualizações mais interessantes. No final, você terá um sistema automatizado buscando as estatísticas do PostgreSQL para análise posterior.

      Pré-requisitos

      Passo 1 — Configurando o Logstash e o Driver JDBC para PostgreSQL

      Nesta seção, você instalará o Logstash e fará o download do driver JDBC para PostgreSQL para que o Logstash possa se conectar ao seu banco de dados gerenciado.

      Comece instalando o Logstash com o seguinte comando:

      • sudo apt install logstash -y

      Depois que o Logstash estiver instalado, habilite o serviço para iniciar automaticamente na inicialização:

      • sudo systemctl enable logstash

      O Logstash é escrito em Java, portanto, para conectar-se ao PostgreSQL, é necessário que a biblioteca JDBC (Java Database Connectivity) do PostgreSQL esteja disponível no sistema em que está sendo executado. Por causa de uma limitação interna, o Logstash carregará adequadamente a biblioteca apenas se for encontrada no diretório /usr/share/logstash/logstash-core/lib/jars, onde armazena bibliotecas de terceiros que ele utiliza.

      Vá para a página de download da biblioteca JDBC e copie o link para a versão mais recente. Em seguida, faça o download usando curl executando o seguinte comando:

      • sudo curl https://jdbc.postgresql.org/download/postgresql-42.2.6.jar -o /usr/share/logstash/logstash-core/lib/jars/postgresql-jdbc.jar

      No momento da escrita deste tutorial, a versão mais recente da biblioteca era a 42.2.6, com o Java 8 como a versão runtime suportada. Certifique-se de baixar a versão mais recente; emparelhando-a com a versão Java correta que tanto o JDBC quanto o Logstash suportam.

      O Logstash armazena seus arquivos de configuração em /etc/logstash/conf.d e armazena a si próprio em /usr/share/logstash/bin. Antes de criar uma configuração que coletará estatísticas do seu banco de dados, será necessário ativar o plug-in JDBC no Logstash executando o seguinte comando:

      • sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-jdbc

      Você instalou o Logstash usando o apt e baixou a biblioteca JDBC do PostgreSQL para que o Logstash possa usá-la para conectar-se ao seu banco de dados gerenciado. Na próximo passo, você configurará o Logstash para coletar dados estatísticos dele.

      Passo 2 — Configurando o Logstash Para Coletar Estatísticas

      Nesta seção, você configurará o Logstash para coletar métricas do seu banco de dados PostgreSQL gerenciado.

      Você configurará o Logstash para monitorar três bancos de dados de sistema no PostgreSQL, a saber:

      • pg_stat_database: fornece estatísticas sobre cada banco de dados, incluindo seu nome, número de conexões, transações, rollbacks, linhas retornadas ao consultar o banco de dados, deadlocks e assim por diante. Possui um campo stats_reset, que especifica quando as estatísticas foram zeradas pela última vez.
      • pg_stat_user_tables: fornece estatísticas sobre cada tabela criada pelo usuário, como o número de linhas inseridas, excluídas e atualizadas.
      • pg_stat_user_indexes: coleta dados sobre todos os índices em tabelas criadas pelo usuário, como o número de vezes que um índice específico foi consultado.

      Você armazenará a configuração para indexar as estatísticas do PostgreSQL no Elasticsearch em um arquivo chamado postgresql.conf no diretório /etc/logstash/conf.d, onde o Logstash armazena arquivos de configuração. Quando iniciado como um serviço, ele será executado automaticamente em segundo plano.

      Crie o postgresql.conf usando seu editor de textos favorito (por exemplo, o nano):

      • sudo nano /etc/logstash/conf.d/postgresql.conf

      Adicione as seguintes linhas:

      /etc/logstash/conf.d/postgresql.conf

      input {
              # pg_stat_database
              jdbc {
                      jdbc_driver_library => ""
                      jdbc_driver_class => "org.postgresql.Driver"
                      jdbc_connection_string => "jdbc:postgresql://host:port/defaultdb"
                      jdbc_user => "username"
                      jdbc_password => "password"
                      statement => "SELECT * FROM pg_stat_database"
                      schedule => "* * * * *"
                      type => "pg_stat_database"
              }
      
              # pg_stat_user_tables
              jdbc {
                      jdbc_driver_library => ""
                      jdbc_driver_class => "org.postgresql.Driver"
                      jdbc_connection_string => "jdbc:postgresql://host:port/defaultdb"
                      jdbc_user => "username"
                      jdbc_password => "password"
                      statement => "SELECT * FROM pg_stat_user_tables"
                      schedule => "* * * * *"
                      type => "pg_stat_user_tables"
              }
      
              # pg_stat_user_indexes
              jdbc {
                      jdbc_driver_library => ""
                      jdbc_driver_class => "org.postgresql.Driver"
                      jdbc_connection_string => "jdbc:postgresql://host:port/defaultdb"
                      jdbc_user => "username"
                      jdbc_password => "password"
                      statement => "SELECT * FROM pg_stat_user_indexes"
                      schedule => "* * * * *"
                      type => "pg_stat_user_indexes"
              }
      }
      
      output {
              elasticsearch {
                      hosts => "http://localhost:9200"
                      index => "%{type}"
              }
      }
      

      Lembre-se de substituir host pelo seu endereço de host, port pela porta à qual você pode se conectar ao seu banco de dados, username pelo nome de usuário do banco de dados e password pela sua senha. Todos esses valores podem ser encontrados no Painel de Controle do seu banco de dados gerenciado.

      Nesta configuração, você define três entradas JDBC e uma saída Elasticsearch. As três entradas extraem dados dos bancos de dados pg_stat_database, pg_stat_user_tables e pg_stat_user_indexes, respectivamente. Todos eles definem o parâmetro jdbc_driver_library como uma string vazia, porque a biblioteca JDBC do PostgreSQL está em uma pasta que o Logstash carrega automaticamente.

      Em seguida, eles definem o jdbc_driver_class, cujo valor é específico da biblioteca JDBC, e fornecem uma jdbc_connection_string, que detalha como se conectar ao banco de dados. A parte jdbc: significa que é uma conexão JDBC, enquanto postgres:// indica que o banco de dados de destino é o PostgreSQL. Em seguida, vem o host e a porta do banco de dados e, após a barra, você também especifica um banco de dados ao qual se conectar; isso ocorre porque o PostgreSQL exige que você esteja conectado a um banco de dados para poder emitir quaisquer consultas. Aqui, ele está definido como o banco de dados padrão que sempre existe e não pode ser excluído, apropriadamente denominado de defaultdb.

      Em seguida, eles definem um nome de usuário e a senha do usuário através do qual o banco de dados será acessado. O parâmetro statement contém uma consulta SQL que deve retornar os dados que você deseja processar — nessa configuração, ele seleciona todas as linhas do banco de dados apropriado.

      O parâmetro schedule aceita uma string na sintaxe do cron que define quando o Logstash deve executar esta entrada; omiti-lo completamente fará com que o Logstash a execute apenas uma vez. Especificando * * * * *, como você fez aqui, dirá ao Logstash para executá-la a cada minuto. Você pode especificar sua própria string do cron se desejar coletar dados em diferentes intervalos.

      Há apenas uma saída, que aceita dados de três entradas. Todas elas enviam dados para o Elasticsearch, que está sendo executado localmente e pode ser acessado em http://localhost:9200. O parâmetro index define para qual índice do Elasticsearch ele enviará os dados e seu valor é passado no campo type da entrada.

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

      Você configurou o Logstash para reunir dados de várias tabelas estatísticas do PostgreSQL e enviá-los ao Elasticsearch para armazenamento e indexação. Em seguida, você executará o Logstash para testar a configuração.

      Passo 3 — Testando a Configuração do Logstash

      Nesta seção, você testará a configuração executando o Logstash para verificar se ele extrairá os dados corretamente. Em seguida, você executará essa configuração em segundo plano, configurando-a como um pipeline do Logstash.

      O Logstash suporta a execução de uma configuração específica, passando seu caminho de arquivo para o parâmetro -f. Execute o seguinte comando para testar sua nova configuração da último passo:

      • sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/postgresql.conf

      Pode levar algum tempo até que ele mostre qualquer saída, que será semelhante a esta:

      Output

      Thread.exclusive is deprecated, use Thread::Mutex WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console [WARN ] 2019-08-02 18:29:15.123 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified [INFO ] 2019-08-02 18:29:15.154 [LogStash::Runner] runner - Starting Logstash {"logstash.version"=>"7.3.0"} [INFO ] 2019-08-02 18:29:18.209 [Converge PipelineAction::Create<main>] Reflections - Reflections took 77 ms to scan 1 urls, producing 19 keys and 39 values [INFO ] 2019-08-02 18:29:20.195 [[main]-pipeline-manager] elasticsearch - Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}} [WARN ] 2019-08-02 18:29:20.667 [[main]-pipeline-manager] elasticsearch - Restored connection to ES instance {:url=>"http://localhost:9200/"} [INFO ] 2019-08-02 18:29:21.221 [[main]-pipeline-manager] elasticsearch - ES Output version determined {:es_version=>7} [WARN ] 2019-08-02 18:29:21.230 [[main]-pipeline-manager] elasticsearch - Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7} [INFO ] 2019-08-02 18:29:21.274 [[main]-pipeline-manager] elasticsearch - New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["http://localhost:9200"]} [INFO ] 2019-08-02 18:29:21.337 [[main]-pipeline-manager] elasticsearch - Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}} [WARN ] 2019-08-02 18:29:21.369 [[main]-pipeline-manager] elasticsearch - Restored connection to ES instance {:url=>"http://localhost:9200/"} [INFO ] 2019-08-02 18:29:21.386 [[main]-pipeline-manager] elasticsearch - ES Output version determined {:es_version=>7} [WARN ] 2019-08-02 18:29:21.386 [[main]-pipeline-manager] elasticsearch - Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7} [INFO ] 2019-08-02 18:29:21.409 [[main]-pipeline-manager] elasticsearch - New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["http://localhost:9200"]} [INFO ] 2019-08-02 18:29:21.430 [[main]-pipeline-manager] elasticsearch - Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}} [WARN ] 2019-08-02 18:29:21.444 [[main]-pipeline-manager] elasticsearch - Restored connection to ES instance {:url=>"http://localhost:9200/"} [INFO ] 2019-08-02 18:29:21.465 [[main]-pipeline-manager] elasticsearch - ES Output version determined {:es_version=>7} [WARN ] 2019-08-02 18:29:21.466 [[main]-pipeline-manager] elasticsearch - Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7} [INFO ] 2019-08-02 18:29:21.468 [Ruby-0-Thread-7: :1] elasticsearch - Using default mapping template [INFO ] 2019-08-02 18:29:21.538 [Ruby-0-Thread-5: :1] elasticsearch - Using default mapping template [INFO ] 2019-08-02 18:29:21.545 [[main]-pipeline-manager] elasticsearch - New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["http://localhost:9200"]} [INFO ] 2019-08-02 18:29:21.589 [Ruby-0-Thread-9: :1] elasticsearch - Using default mapping template [INFO ] 2019-08-02 18:29:21.696 [Ruby-0-Thread-5: :1] elasticsearch - Attempting to install template {:manage_template=>{"index_patterns"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s", "number_of_shards"=>1}, "mappings"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}} [INFO ] 2019-08-02 18:29:21.769 [Ruby-0-Thread-7: :1] elasticsearch - Attempting to install template {:manage_template=>{"index_patterns"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s", "number_of_shards"=>1}, "mappings"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}} [INFO ] 2019-08-02 18:29:21.771 [Ruby-0-Thread-9: :1] elasticsearch - Attempting to install template {:manage_template=>{"index_patterns"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s", "number_of_shards"=>1}, "mappings"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}} [WARN ] 2019-08-02 18:29:21.871 [[main]-pipeline-manager] LazyDelegatingGauge - A gauge metric of an unknown type (org.jruby.specialized.RubyArrayOneObject) has been create for key: cluster_uuids. This may result in invalid serialization. It is recommended to log an issue to the responsible developer/development team. [INFO ] 2019-08-02 18:29:21.878 [[main]-pipeline-manager] javapipeline - Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>125, :thread=>"#<Thread:0x470bf1ca run>"} [INFO ] 2019-08-02 18:29:22.351 [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"} [INFO ] 2019-08-02 18:29:22.721 [Ruby-0-Thread-1: /usr/share/logstash/lib/bootstrap/environment.rb:6] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} [INFO ] 2019-08-02 18:29:23.798 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600} /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/cronline.rb:77: warning: constant ::Fixnum is deprecated /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/cronline.rb:77: warning: constant ::Fixnum is deprecated /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/cronline.rb:77: warning: constant ::Fixnum is deprecated [INFO ] 2019-08-02 18:30:02.333 [Ruby-0-Thread-22: /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:284] jdbc - (0.042932s) SELECT * FROM pg_stat_user_indexes [INFO ] 2019-08-02 18:30:02.340 [Ruby-0-Thread-23: /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/rufus-scheduler-3.0.9/lib/rufus/scheduler/jobs.rb:331] jdbc - (0.043178s) SELECT * FROM pg_stat_user_tables [INFO ] 2019-08-02 18:30:02.340 [Ruby-0-Thread-24: :1] jdbc - (0.036469s) SELECT * FROM pg_stat_database ...

      Se o Logstash não mostrar nenhum erro e registrar com êxito as linhas Selecionadas (SELECT) dos três bancos de dados, suas métricas serão enviadas ao Elasticsearch. Se você obtiver um erro, verifique todos os valores no arquivo de configuração para garantir que a máquina na qual você está executando o Logstash possa se conectar ao banco de dados gerenciado.

      O Logstash continuará importando os dados em horários especificados. Você pode pará-lo com segurança pressionando CTRL+C.

      Como mencionado anteriormente, quando iniciado como um serviço, o Logstash executa automaticamente todos os arquivos de configuração encontrados em /etc/logstash/conf.d em segundo plano. Execute o seguinte comando para iniciá-lo como um serviço:

      • sudo systemctl start logstash

      Neste passo, você executou o Logstash para verificar se ele pode se conectar ao seu banco de dados e coletar dados. Em seguida, você visualizará e explorará alguns dos dados estatísticos no Kibana.

      Passo 4 — Explorando os Dados Importados no Kibana

      Nesta seção, você verá como você pode explorar os dados estatísticos que descrevem o desempenho do seu banco de dados no Kibana.

      No seu navegador, navegue até a instalação do Kibana que você configurou como pré-requisito. Você verá a página de boas-vindas padrão.

      Kibana - Default Welcome Page

      Para interagir com os índices do Elasticsearch no Kibana, você precisará criar um padrão de índice ou Index patterns. Index patterns especificam em quais índices o Kibana deve operar. Para criar um, pressione o último ícone (chave inglesa) na barra lateral vertical esquerda para abrir a página Management. Em seguida, no menu esquerdo, clique em Index Patterns abaixo de Kibana.. Você verá uma caixa de diálogo para criar um padrão de índice.

      Kibana - Add Index Pattern

      Aqui estão listados os três índices para os quais o Logstash está enviando estatísticas. Digite pg_stat_database na caixa de entrada Index Pattern e pressione Next step. Você será solicitado a selecionar um campo que armazene tempo, para poder restringir seus dados posteriormente por um intervalo de tempo. No menu suspenso, selecione @timestamp.

      Kibana - Index Pattern Timestamp Field

      Clique em Create index pattern para concluir a criação do padrão de índice. Agora você poderá explorá-lo usando o Kibana. Para criar uma visualização, clique no segundo ícone na barra lateral e, em seguida, em Create new visualization. Selecione a visualização Line quando o formulário aparecer e escolha o padrão de índice que você acabou de criar (pg_stat_database). Você verá uma visualização vazia.

      Kibana - Empty Visualisation

      Na parte central da tela está o gráfico resultante — o painel do lado esquerdo governa sua geração a partir da qual você pode definir os dados para os eixos X e Y. No lado superior direito da tela, está o seletor de período. A menos que você escolha especificamente outro intervalo ao configurar os dados, esse intervalo será mostrado no gráfico.

      Agora você visualizará o número médio de tuplas de dados inseridas (INSERT) em minutos no intervalo especificado. Clique em Y-Axis em Metrics no painel à esquerda para expandir. Selecione Average ou média como Aggregation e selecione tup_inserted como Field ou campo. Isso preencherá o eixo Y do gráfico com os valores médios.

      Em seguida, clique em X-Axis em Buckets. Para Aggregation, escolha Date Histogram. @timestamp deve ser selecionado automaticamente como o Field. Em seguida, pressione o botão play azul na parte superior do painel para gerar seu gráfico. Se o seu banco de dados for novo e não for usado, você não verá nada ainda. Em todos os casos, no entanto, você verá um retrato preciso do uso do banco de dados.

      O Kibana suporta muitas outras formas de visualização — você pode explorar outras formas na documentação do Kibana. Você também pode adicionar os dois índices restantes, mencionados no Passo 2 ao Kibana para poder visualizá-los também.

      Neste passo, você aprendeu como visualizar alguns dos dados estatísticos do PostgreSQL, usando o Kibana.

      Passo 5 — (Opcional) Fazendo Benchmark Usando pgbench

      Se você ainda não trabalhou no seu banco de dados fora deste tutorial, você pode concluir esta etapa para criar visualizações mais interessantes usando o pgbench para fazer benchmark do seu banco de dados. O pgbench executará os mesmos comandos SQL repetidamente, simulando o uso do banco de dados no mundo real por um cliente real.

      Você primeiro precisará instalar o pgbench executando o seguinte comando:

      • sudo apt install postgresql-contrib -y

      Como o pgbench irá inserir e atualizar dados de teste, você precisará criar um banco de dados separado para ele. Para fazer isso, vá para a guia Users & Databases no Painel de Controle do seu banco de dados gerenciado e role para baixo até a seção Databases. Digite pgbench como o nome do novo banco de dados e pressione Save. Você passará esse nome, bem como as informações de host, porta e nome de usuário para o pgbench.

      Accessing Databases section in DO control panel

      Antes de executar de fato o pgbench, você precisará executá-lo com a flag -i para inicializar seu banco de dados:

      • pgbench -h host -p port -U username -i pgbench

      Você precisará substituir host pelo seu endereço de host, port pela porta à qual você pode se conectar ao seu banco de dados e username com o nome do usuário do banco de dados. Você pode encontrar todos esses valores no painel de controle do seu banco de dados gerenciado.

      Observe que o pgbench não possui um argumento de senha; em vez disso, você será solicitado sempre que executá-lo.

      A saída terá a seguinte aparência:

      Output

      NOTICE: table "pgbench_history" does not exist, skipping NOTICE: table "pgbench_tellers" does not exist, skipping NOTICE: table "pgbench_accounts" does not exist, skipping NOTICE: table "pgbench_branches" does not exist, skipping creating tables... 100000 of 100000 tuples (100%) done (elapsed 0.16 s, remaining 0.00 s) vacuum... set primary keys... done.

      O pgbench criou quatro tabelas que serão usadas para o benchmarking e as preencheu com algumas linhas de exemplo. Agora você poderá executar benchmarks.

      Os dois argumentos mais importantes que limitam por quanto tempo o benchmark será executado são -t, que especifica o número de transações a serem concluídas, e -T, que define por quantos segundos o benchmark deve ser executado. Essas duas opções são mutuamente exclusivas. No final de cada benchmark, você receberá estatísticas, como o número de transações por segundo (tps).

      Agora, inicie um benchmark que durará 30 segundos executando o seguinte comando:

      • pgbench -h host -p port -U username pgbench -T 30

      A saída será semelhante a:

      Output

      starting vacuum...end. transaction type: <builtin: TPC-B (sort of)> scaling factor: 1 query mode: simple number of clients: 1 number of threads: 1 duration: 30 s number of transactions actually processed: 7602 latency average = 3.947 ms tps = 253.382298 (including connections establishing) tps = 253.535257 (excluding connections establishing)

      Nesta saída, você vê as informações gerais sobre o benchmark, como o número total de transações executadas. O efeito desses benchmarks é que as estatísticas enviadas pelo Logstash para o Elasticsearch refletirão esse número, o que tornará as visualizações no Kibana mais interessantes e mais próximas dos gráficos do mundo real. Você pode executar o comando anterior mais algumas vezes e talvez alterar a duração.

      Quando terminar, vá para o Kibana e clique em Refresh no canto superior direito. Agora você verá uma linha diferente da anterior, que mostra o número de INSERTs. Sinta-se à vontade para alterar o intervalo de tempo dos dados mostrados, alterando os valores no seletor posicionado acima do botão de atualização. Aqui está como o gráfico pode se apresentar após vários benchmarks de duração variável:

      Kibana - Visualization After Benchmarks

      Você usou o pgbench para fazer benchmark em seu banco de dados e avaliou os gráficos resultantes no Kibana.

      Conclusão

      Agora você tem a pilha Elastic instalada em seu servidor e configurada para coletar regularmente dados estatísticos do banco de dados PostgreSQL gerenciado. Você pode analisar e visualizar os dados usando o Kibana, ou algum outro software adequado, que o ajudará a reunir informações valiosas e correlações do mundo real sobre o desempenho do seu banco de dados.

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



      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