Monitoramento de APIs
- Solus (Unlicensed)
Escrito por: P. B.
Monitoramento de APIs
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.
- Analisar o desempenho das APIs (disponibilidade, velocidade, tempo de resposta).
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
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
- Instalação PHP 7.4:
apt install php php-{fpm,cli,mysql,pear,gd,gmp,bcmath,mbstring,curl,xml,zip,json,pgsql}
- 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
- 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
- Instalação ZABBIX 6
Para instalação, vamos incluir o repositório do oficial do Zabbix:
cd /tmp
apt install wget
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:
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:
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
- Na tela inicial clique em "Configurações";
- Em seguida, em "Hosts";
- Clique em "Itens" para abrir a tela de criação;
- Clique em "Criar item".
- Criar TRIGGER (passo 1):
- Na tela inicial clique em "Configurações";
- Em seguida, em "Hosts";
- Clique em "Trigger" para abrir a tela de criação;
- Clique em "Criar trigger".
- Criar TRIGGER (passo 2):
- Crie um nome para identificar a Trigger posteriormente;
- Clique em "Adicionar" para abrir o assistente para criação da expressão regular que vai capturar a métrica;
- 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
- Selecione o item que será monitorado pela Trigger;
- Selecione a função (Status, Tempo de resposta, Velocidade de download, Ping...);
- Informe a condição para o teste lógico.
- 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:
- Expanda o menu "Monitoramento";
- Clique em "Dashboard";
E em "Criar Novo" (3).
- Mantenha o usuário adm do Zabbix;
- Crie um nome amigável para sua Dashboard;
- Clique em "Aplicar".
- Selecione o tipo de widget (Gráfico, Disponibilidade, Incidentes, Relógio...);
- Crie um nome amigável para o widget;
- Selecione o intervalo de atualização do widget;
- 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;
- Clique em "Adicionar".
Ao final das configurações é possível obter um resultado semelhante ao exemplo abaixo:
Atenção