One place for hosting & domains

      Como instalar e configurar o Ansible no Ubuntu 18.04


      Introdução

      Sistemas de gerenciamento de configuração são projetados para facilitar o controle de um grande número de servidores aos administradores e equipes de operações. Isso permite que você controle sistemas diferentes de forma automática a partir de um local central.

      Embora existam sistemas de gerenciamento de configuração populares disponíveis para sistemas Linux, como o Chef and Puppet, eles acabam sendo mais complexos do que aquilo que os usuários querem ou precisam. O Ansible é uma boa alternativa diante de tantas opções. Isso porque ele é muito mais barato para se começar.

      Neste guia, falamos sobre como instalar o Ansible em um servidor Ubuntu 18.04 e sobre alguns dos princípios básicos do software.

      Como o Ansible funciona?

      O Ansible configura máquinas de clientes a partir de um computador que tenha componentes do Ansible instalados e configurados.

      Ele se comunica por canais SSH normais para recuperar informações de máquinas remotas,executa comandos e copia arquivos. Por isso, o sistema Ansible não exige que nenhum software adicional seja instalado nos computadores do cliente.

      É por isso que o Ansible simplifica a administração de servidores. Qualquer servidor que tenha uma porta SSH aberta pode ser gerenciado pela configuração do Ansible, independentemente do estágio do ciclo de vida. Isso quer dizer que qualquer computador que seja gerenciado por SSH também pode ser gerenciado pelo Ansible.

      O Ansible usa uma abordagem modular, o que torna fácil a extensão do uso de funcionalidades do sistema principal para processar cenários específicos. Os módulos podem ser escritos em qualquer linguagem e se comunicam em JSON padrão.

      Os arquivos de configuração são, em geral, escritos no formato de serialização de dados YAML devido à facilidade de uso e similaridade com outras linguagens de marcação conhecidas. O Ansible interage com hosts tanto por ferramentas de linha de comando como por scripts de configuração, conhecidos como Playbooks.

      Pré-requisitos

      Para seguir este tutorial, você precisará de:

      • Dois ou mais servidores Ubuntu 18.04. Um deles será usado como servidor Ansible, e o outro como hosts do Ansible. Cada um deles precisará ter um usuário sem root com privilégios sudo e um firewall básico configurado. É possível configurar esses detalhes com o nosso Guia de configuração inicial de servidor para Ubuntu 18.04. Os exemplos neste guia especificam três hosts do Ansible, mas os comandos e configurações aqui presentes podem ser usados para qualquer número de clientes.

      • Chaves SSH geradas para o usuário sem root no seu servidor do Ansible. Para fazer isso, siga o passo 1 do nosso guia Como configurar chaves SSH no Ubuntu 18.04. Para os fins deste tutorial, é possível salvar o par de chaves no local padrão (~/.ssh/id_rsa) e não é necessário protegê-lo com senha.

      Passo 1 — Como instalar o Ansible

      Para começar a usar o Ansible como gerenciador de vários servidores, é necessário instalar o software do Ansible em pelo menos uma máquina.

      Para obter a versão mais recente do Ansible para Ubuntu, adicione o PPA (personal package archive) do projeto no seu sistema. No entanto, antes de fazer isso, verifique se você tem o pacote software-properties-common instalado. Esse software facilita o gerenciamento deste e de outros repositórios de software independentes.

      • sudo apt update
      • sudo apt install software-properties-common

      Em seguida, adicione o PPA do Ansible com o comando a seguir:

      • sudo apt-add-repository ppa:ansible/ansible

      Pressione ENTER para aceitar.

      A seguir, atualize o índice de pacotes do sistema. Desse modo, você garante que todos os pacotes estejam disponíveis no PPA.

      Após atualizar, instale o software do Ansible.

      Seu servidor Ansible agora possui o software necessário para gerenciar hosts.

      Passo 2 — Como configurar o acesso SSH aos hosts do Ansible

      Como já mencionado, o Ansible se comunica principalmente com os computadores dos clientes por SSH. Ainda que ele possa processar uma autenticação SSH baseada em senhas, usar chaves SSH torna tudo mais simples.

      No seu servidor Ansible, use o comando cat para imprimir o conteúdo do arquivo de chave pública SSH do usuário no terminal de saída.

      Copie o resultado da saída, abra um novo terminal e conecte-se a um dos seus hosts do Ansible usando SSH.

      • ssh sammy@ansible_host_ip

      Altere o usuário para o root da máquina do cliente.

      Como usuário root, abra authorized_keys na pasta ~/.ssh:

      • nano ~/.ssh/authorized_keys

      Agora no arquivo, cole a chave SSH do cliente do seu servidor Ansible. Em seguida, salve o arquivo e feche o editor (pressione CTRL + X, Y e ENTER). Execute o comando exit para retornar como usuário sem root do host.

      Uma vez que o Ansible usa um interpretador de Python localizado em /usr/bin/python para executar seus respectivos módulos, será necessário instalar o Python 2 no host para que o Ansible consiga se comunicar com ele. Execute os comandos a seguir para atualizar o índice de pacotes do host e instalar o pacote python.

      • sudo apt update
      • sudo apt install python

      Em seguida, execute novamente o comando exit para encerrar a conexão com o cliente:

      Repita o processo para cada servidor que você deseja controlar com seu servidor Ansible. A seguir, vamos configurar um servidor Ansible que se conecte a esses hosts usando o arquivo de hosts do Ansible.

      Passo 3 — Como configurar os hosts do Ansible

      O Ansible controla todos os servidores conhecidos por meio de um arquivo de hosts. Precisamos primeiro configurar o arquivo antes de começar a comunicação com outros computadores.

      Abra o arquivo com privilégios sudo, desta forma:

      • sudo nano /etc/ansible/hosts

      Agora no arquivo, haverá configurações de exemplo comentadas (com um #antes de cada linha). Os exemplos não funcionarão no nosso caso porque os hosts listados aqui são inventados. No entanto, manteremos os exemplos no arquivo para nos ajudar na configuração, caso queiramos implementar cenários mais complexos posteriormente.

      O arquivo hosts é bastante flexível, uma vez que pode ser configurado de várias maneiras. Porém, a sintaxe que usaremos será assim:

      [group_name]
      alias ansible_host=your_server_ip
      

      Nota: Com o lançamento do Ansible 2.0, a variável de configuraçãoansible_host foi substituída pela variável original ansible_ssh_host. Se você estiver usando uma versão mais antiga do Ansible, será necessário usar a variável mais antiga e mais longa.

      Neste exemplo, group_nameé uma tag organizacional que permite que você se refira a qualquer servidor listado abaixo dela com uma palavra, enquanto que aliasé apenas o nome para o qual se referir, no caso de um servidor específico.

      Desse modo, no cenário criado, imaginamos ter três servidores controláveis com o Ansible. A partir daqui, tais servidores estarão acessíveis do Ansible. Para acessá-los, basta digitar:

      Você não precisará entrar uma senha se tiver configurado tudo corretamente. Para efeitos de demonstração, suponhamos que os endereços IP de nossos hosts sejam 203.0.113.1, 203.0.113.2 e 203.0.113. Vamos configurá-los de modo que possamos nos referir a eles individualmente como host1, host2 e host3, ou como um grupo com o nome dos servidores.

      Este é o bloco que devemos adicionar no nosso arquivo de hosts para fazer isso:

      /etc/ansible/hosts

      [servers]
      host1 ansible_host=203.0.113.1
      host2 ansible_host=203.0.113.2
      host3 ansible_host=203.0.113.3
      

      Os hosts podem estar em vários grupos e os grupos podem configurar parâmetros para todos os membros deles. Agora, vamos fazer um teste.

      Com a configuração atual, caso tentemos nos conectar a qualquer um desses hosts com o Ansible, o comando para isso falhará (supondo que você não esteja usando um usuário root). Isso acontece porque sua chave SSH está incorporada no usuário root nos sistemas remotos e o Ansible tentará se conectar com o usuário atual por padrão. Uma tentativa de conexão gerará este erro:

      Output

      host1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }

      No servidor Ansible, estamos usando um usuário chamado sammy. O Ansible tentará se conectar a cada host com ssh sammy@server. Isso não funcionará se o usuário sammy não estiver também em um sistema remoto.

      Podemos criar um arquivos que informe a todos os servidores no grupo “servers” para se conectarem ao usuário root.

      Para isso, criaremos uma pasta na estrutura de configuração do Ansible chamada group_vars. Dentro dessa pasta, criamos arquivos formatados em YAML para cada grupo que queremos configurar.

      • sudo mkdir /etc/ansible/group_vars
      • sudo nano /etc/ansible/group_vars/servers

      Arquivos YAML devem começar com “—”. Não esqueça de começá-los assim.

      /etc/ansible/group_vars/servers

      ---
      ansible_user: root
      

      Nota: Similar à variável ansible_host, ansible_user substituiu ansible_ssh_user no lançamento da versão 2.0. Se você estiver usando uma versão mais antiga do que o Ansible 2.0, certifique-se de usar a variável mais antiga e mais longa.

      Salve e feche o arquivo quando você terminar.

      Se você quiser especificar os detalhes de configuração para cada servidor, independentemente da associação de grupo, insira esses detalhes em um arquivo em /etc/ansible/group_vars/all. Hosts individuais podem ser configurados a partir de arquivos com o nome de seu respectivo alias dentro de uma pasta em /etc/ansible/host_vars.

      Passo 4 — Como usar comandos simples do Ansible

      Agora que temos nossos hosts prontos e informações de configuração suficientes para que nos conectemos a nossos hosts, podemos tentar usar nosso primeiro comando.

      Faça um teste de ping em todos os servidores que você configurou. Digite:

      Ping output

      host1 | SUCCESS => {
          "changed": false,
          "ping": "pong"
      }
      
      host3 | SUCCESS => {
          "changed": false,
          "ping": "pong"
      }
      
      host2 | SUCCESS => {
          "changed": false,
          "ping": "pong"
      }
      

      Trata-se de um teste básico para verificar se o Ansible possui uma conexão com todos os hosts dele.

      A parte do comando que diz all quer dizer todos os hosts. Podemos também especificar um grupo facilmente:

      Ou então especificar um host individual:

      Podemos especificar vários hosts separando-os com dois-pontos:

      • ansible -m ping host1:host2

      A parte do comando que diz -m ping é uma instrução para que o Ansible use o módulo “ping”. Basicamente, são esses os comandos que você pode executar nos seus hosts remotos. O módulo ping funciona de maneira similar ao utilitário de ping padrão do Linux. A diferença é que, diferente deste, aquele verifica a conectividade do Ansible.

      O módulo ping não recebe nenhum argumento, mas podemos usar outro comando para ver como isso funciona. Passamos argumentos para um script digitando -a.

      O módulo “shell” permite que enviemos um comando de terminal para o host remoto e que recuperemos os resultados. Por exemplo, para conferir o uso de memória da nossa máquina host1, podemos usar:

      • ansible -m shell -a 'free -m' host1

      Shell output

      host1 | SUCCESS | rc=0 >>
                   total       used       free     shared    buffers     cached
      Mem:          3954        227       3726          0         14         93
      -/+ buffers/cache:        119       3834
      Swap:            0          0          0
      

      Com isso, seu servidor Ansible está configurado. Com ele, você poderá se comunicar e controlar seus hosts com sucesso.

      Conclusão

      Neste tutorial, configuramos o Ansible e vimos como ele pode se comunicar com cada host. Usamos também o comando ansible para executar tarefas simples de modo remoto.

      Embora isso seja útil, não cobrimos os recursos mais poderosos neste artigo: os Playbooks. Os Playbooks do Ansible são maneiras simples e poderosas de se gerenciar a configuração de servidores e implantações de várias máquinas. Para uma introdução sobre os Playbooks, confira esteguia. Além disso, recomendamos que você confira a documentação oficial do Ansible. Desse modo, você saberá mais sobre a ferramenta.



      Source link

      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