Monitoramento de APIs

Escrito por: P. B.
 

Monitoramento de APIs



Objetivo

O que é?

  • Este documento tem como objetivo demonstrar como monitorar uma API. Há várias ferramentas para monitoramento de APIs em nosso ambiente, utilizaremos o Zabbix por ser uma solução consolidada, freeware e com vasta documentação disponível online.
Funcionalidade
  • Analisar o desempenho das APIs (disponibilidade, velocidade, tempo de resposta).
Operacionalização
 Requisitos

1- Servidor dedicado para monitoramento:

Sistema operacional:

  • Debian Buster 10 (stable) ou superior;

Recursos Mínimos:

  • Memória RAM: 2 GB
  • Disco: 20 GB

Recursos Recomendados:

  • Memória RAM: 4 GB
  • Disco: 40 GB

Voltar ao início

 Instalação

Para realizar a instalação do Zabbix, basta executar os comandos a seguir.

Importante: Execute todos os comandos com o usuário root.

Preparação do Ambiente

  • Instalação NGINX:
    apt install nginx


  • Instalação POSTGREE:

apt install postgresql postgresql-contrib

Torne-se o usuário postgres, para poder criar o banco de dados:
su – postgres

Execute para entrar no terminal de comandos do banco:
psql

Para definir a senha do usuário postgres e instalar o adminpack:
\password postgres
CREATE EXTENSION adminpack;

Ajustes no pg_hba.conf, assim toda alteração será necessária validação do postgres com a senha que acabou de definir:
vim /etc/postgresql/13/main/pg_hba.conf
Altere as seguintes linhas:
local   all             postgres                                peer
local   all             all                                          peer
Para: 

Reinicie o Postgree:
systemctl restart postgresql

Voltar ao início

  • Instalação PHP 7.4:
    apt install php php-{fpm,cli,mysql,pear,gd,gmp,bcmath,mbstring,curl,xml,zip,json,pgsql}

Voltar ao início

  • Integração do PHP com NGINX. 
    Mover arquivo default:
    mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original

Criar novo arquivo default: 
vim /etc/nginx/sites-available/default
inclua no seu arquivo as informações abaixo e salve.

Teste a configuração: 
nginx -t

Se não houver erro, realizar  restart dos serviços:
systemctl restart nginx php7.4-fpm

Voltar ao início

  • Instalação PHPPGADMIN:
    apt install phppgadmin

Ajuste no config.inc.php:
vim /usr/share/phppgadmin/conf/config.inc.php

Localize as linhas e ajuste:

$conf['extra_login_security'] = false;
$conf['owned_only'] = true;
Salve o arquivo.

Para torná-lo acessível, altere o arquivo de configuração do seu NGINX.
vim /etc/nginx/sites-available/default
Inclua o bloco destacado e salve o arquivo.

Reinicie o NGINX.

systemctl restart nginx

Voltar ao início

  • Instalação ZABBIX 6

Para instalação, vamos incluir o repositório do oficial do Zabbix:
cd /tmp
apt install wget

Voltar ao início

Repositório Debian 11:
wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-1+debian11_all.deb

apt install ./zabbix-release_6.0-1+debian11_all.deb

apt update; apt upgrade -y

apt install zabbix-server-pgsql zabbix-frontend-php php-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

Criar uma base de dados chamada "zabbix" e um usuário, com o mesmo nome, no PostgreSQL:

createuser --pwprompt zabbix (crie uma senha)

createdb -O zabbix zabbix

Importe o esquema inicial e os dados:
zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | psql -U zabbix -d zabbix &>/dev/null

Volte para o root:
Exit

Edite o arquivo zabbix_server.conf para informar os dados para conexão com do PostgreSQL.:
vim /etc/zabbix/zabbix_server.conf

Procure por # DBPassword=descomente e sete sua senha e salve o arquivo.


Ajuste o arquivo /etc/zabbix/php-fpm.conf, descomente e defina o fuso horário correto (timezone Sua região):
vim /etc/zabbix/php-fpm.conf

Adicione:  php_value[date.timezone] = America/Sao_Paulo
Salve o arquivo.

Inicie o servidor Zabbix e os processos do agente e configure-os para que sejam iniciados durante o boot do sistema:
systemctl enable zabbix-server zabbix-agent

vim /etc/php/7.4/fpm/php.ini

Localize max_execution_time e altere de 30 para 600:

Voltar ao início

Acesse em seu navegador http://ipdoservidorzabbix
Selecione o Idioma e clique em "Próximo passo".Se estiver tudo ok, clique novamente em "Próximo Passo".

Selecione PostgreSQL e informe a senha do usuário zabbix criada anteriormente, clique em "Próximo passo".

Crie um nome para seu servidor e clique em "Próximo Passo"

Se estiver tudo ok, clique mais uma vez em "Próximo Passo"

Instalação concluída.

Usuário: Admin
Senha: zabbix

Tela inicial do Zabbix:

Voltar ao início

 Configuração

Configuração de Host:

O monitoramento é feito a partir de um endereço http://IP:PORTA/statusapi (ip do servidor da API e a porta de comunicação seguido de uma chave para consulta de status); a partir desta “rota” o Zabbix consegue verificar o status, tempo de resposta entre outras métricas.

  • Criar ITEM
  1. Na tela inicial clique em "Configurações";
  2. Em seguida, em "Hosts";
  3. Clique em "Itens" para abrir a tela de criação;
  4. Clique em "Criar item".



Voltar ao início


  • Criar TRIGGER (passo 1):
  1. Na tela inicial clique em "Configurações";
  2. Em seguida, em "Hosts";
  3. Clique em "Trigger" para abrir a tela de criação;
  4. Clique em "Criar trigger".


  • Criar TRIGGER (passo 2):
  1. Crie um nome para identificar a Trigger posteriormente;
  2. Clique em "Adicionar" para abrir o assistente para criação da expressão regular que vai capturar a métrica;
  3. Informe a URL (esta foi criada para verificar o status para consulta do status da métrica: http://IP:PORTA/statusapi).


  • Configuração da Trigger
  1. Selecione o item que será monitorado pela Trigger;
  2. Selecione a função (Status, Tempo de resposta, Velocidade de download, Ping...);
  3. Informe a condição para o teste lógico.

Voltar ao início


  • Dashboard

O Dashboard no Zabbix ajuda muito na visualização das métricas, todavia não existe um padrão, ficando a critério do responsável pelo monitoramento a criação do modelo que melhor atenda ao seu cenário.

Na tela inicial da interface Zabbix, acesse o menu lateral:

  1. Expanda o menu "Monitoramento";
  2. Clique em "Dashboard";

E em "Criar Novo" (3).

  1. Mantenha o usuário adm do Zabbix;
  2. Crie um nome amigável para sua Dashboard;
  3. Clique em "Aplicar".
  4. Selecione o tipo de widget (Gráfico, Disponibilidade, Incidentes, Relógio...);
  5. Crie um nome amigável para o widget;
  6. Selecione o intervalo de atualização do widget;
  7. No exemplo da imagem acima foi selecionado o widget “Gráfico”, portanto é necessário indicar a origem dos dados que serão utilizados para exibição. Os demais também exigem a origem dos dados;
  8. Clique em "Adicionar".

Ao final das configurações é possível obter um resultado semelhante ao exemplo abaixo:

Voltar ao início

Atenção

Documentação elaborada com base na versão vigente do sistema.



Editado por: P. B.,