Pela plataforma do API Manager temos algumas ferramentas que podem nos ajudar a identificar alguns problemas, o primeiro que vamos destacar é utilizando o Trace.
O trace da plataforma é um recurso importante para a checagem e monitoração de calls que são realizadas pelas Apps às APIs e que são gerenciadas pelo Manager. Nesta página é possível visualizar uma lista com todas as chamadas já realizadas.
Estas chamadas podem ser inspecionados para obter maiores detalhes, clicando em sua URI, algumas das informações são:
- Status code
- Tempo de cada step
- Endereço do chamador (IP)
- Fluxo completo da chamada passado pelo gateway
- APP
- Access Token
Neste primeiro exemplo criamos uma API e inserimos o interceptor de Oauth no fluxo da requisição, realizamos a chamada e não informamos o client_id no header portanto a chamada não obteve sucesso, retornando um status 401 Client Error.
Vamos visualizar o passo a passo dessa requisição no gateway trace.
- A primeira linha destacada é o endereço onde foi definido para o destino da chamada por exemplo o backend definido, após verificar a rota e o destination o gateway irá executar todos os interceptors que existem no fluxo da requisição, ao executar o interceptor de Oauth apresentará um erro informando que não foi encontrado o client_id e access_token na requisição da chamada retornando o status 401 como esperado.
- No segundo exemplo realizamos a mesma chamada onde o client_id e access_token(obrigatórios no fluxo Oauth) foram passados nos Headers, sendo assim a requisição não irá interromper no interceptor Oauth e também inserimos um interceptor importante para realizar análise da chamada o Interceptor de LOG, com ele podemos ver todas as informações passadas na chamada até mesmo o body, veja a imagem abaixo:
O ícone à direita da tela traz todas as informações que foi passado ao realizar a chamada como: uri, headers e payloads.
obs: o tamanho máximo para exibição dos payloads armazenados é de 700kb.
Na imagem abaixo mostra um exemplo de como funciona a execução e regras da chamada.
API: A primeira etapa é execução dos interceptors do fluxo request da API.
APP Plan: A segunda etapa é a execução do Plano vinculado a APP da chamada, onde são executados os interceptors do fluxo do Plano.
ACCESS PLAN: A terceira etapa é a execução do Plano vinculado ao access token, onde são executados os interceptors do fluxo do Plano.
Esta regra é considerada tanto no request como no response da chamada.
Outra informação importante na visualização da chamada no trace é a latency (o tempo total da chamada).
Na tela principal é mostrado o tempo total, mas nos detalhes do gateway trace é possível visualizar o tempo que ocorreu em cada step da chamada. Dando uma ênfase sempre para o Forwarding request (chamada ao backend), se o tempo de resposta for maior 60s (tempo default), o gateway retornará um timeout cortando a conexão com o backend retornando uma mensagem de timeout.
Na aba Custom Search é possível realizar buscas de chamadas de maneira personalizada com a passagem de parâmetros especiais, visando buscar chamados mais específicos na listagem do trace.
O Custom Search utiliza sintaxe e índices do Lucene para realizar as pesquisas. Para saber quais são os parâmetros aceitos, consultar o dicionário de dados Kibana presente nesta documentação.
https://help.v3.apisuite.sensedia.com/pt-br/kibana/dicionario_de_dados_kibana.html
Alguns exemplos de uso são:
1 - Retornar todas as chamadas que tiveram o status code 401:
resultStatus: 401
2 - Retornar todas as chamadas em que o tempo de resposta foi entre 1 a 10s:
durationMillis: [100 TO 900]
3 - Retorna as chamadas onde contenham dados iguais a string pesquisada (o * utilizado é uma mascara que considera todos os caracteres imediatamente antes da string pesquisada):
trace.fulltextsearch: "*/users"
Kibana
Kibana é uma ferramenta extremamente importante para a análise do comportamento das APIs e auxilia no troubleshooting de um problema. Se tiver dúvidas na criação dos gráficos pode consultar nosso outro artigo Dashboards Kibana onde mostramos alguns exemplos.
Alguns exemplos dos benefícios que o Kibana pode trazer são:
- Média da duração em Milissegundos
- Total de chamadas por API
- Total de chamadas por operação de cada API
- Recursos mais consultados nas últimas 3 horas
- Chamadas com menor tempo (Latência mínima)
- Latência média
- Latência máxima
- Tamanho do payload
Na imagem abaixo criamos um dashboard filtrando os erro mais comuns como: 2xx - Success, 3xx - Redirects, 4xx Client Error, 5xx - Server Error, sendo útil para identificar o erro que está acontecendo no momento. Ao lado esquerdo temos o total de requisições filtrado naquele período de tempo e também o gráfico de latência de cada API, sendo possível visualizar o tempo de resposta de cada uma.
Outro exemplo podemos visualizar o tempo de resposta de todas as APIs, isso ajuda para identificar a saúde delas. O tempo filtrado foi menor que 1s, entre 1s e 2s e maior que 2s.
O importante é correlacionar as informações obtidas por meio do dashboard do Kibana com as informações do detalhamento das chamadas no Trace para tirar conclusões do fluxo de toda a chamada.
Comentários
0 comentário
Por favor, entre para comentar.