Na Azion, estamos sempre em busca das maneiras mais eficazes e escaláveis para aumentar a observabilidade e o acesso dos nossos clientes a dados e análises da plataforma. Com isso em mente, temos o prazer de anunciar nossa API GraphQL, agora disponível para oferecer acesso aos mesmos conjuntos de dados que usamos internamente e potencializar nossas métricas em tempo real.
O que é GraphQL e por que ele é melhor do que as “típicas” APIs?
Graphic Query Language (GraphQL) é uma linguagem de código aberto para ser usada com APIs criada pelo Facebook, e funciona como uma alternativa às APIs REST, dando a possibilidade de trabalhar com dados de forma mais estruturada, orientada a objetos, e receber resultados em um formato JSON adequado.
O GraphQL busca informações de maneira diferente das APIs tradicionais, pois possibilita filtrar dados sem que você precise fazer muitas buscas, proporcionando melhor performance em comparação às APIs REST. Além disso, uma API GraphQL pode recuperar informações de diferentes conjuntos de dados em um endpoint, tornando-os mais fáceis de gerenciar e usar do que as APIs REST.
O que posso fazer com o GraphQL? Que tipos de dados posso recuperar?
A API GraphQL fornece acesso a uma variedade de usos de produtos, segurança, requisição/resposta e dados dos usuários. Ela pode fornecer dados agregados no formato JSON, legíveis por humanos em sua forma bruta ou conectados a uma ferramenta de análise como o Grafana, onde desenvolvedores e analistas podem personalizar suas próprias visualizações. Métricas agregadas podem ser recuperadas em diferentes períodos — por minutos, horas ou dias.
Quem não conhece o GraphQL mas tem alguma experiência com SQL vai encontrar algumas semelhanças na capacidade de filtrar, classificar, paginar ou limitar os resultados. Nossa documentação fornece todas as informações que você precisa para começar a explorar (consulte GraphQL API Overview e Aggregated Data with GraphQL.
Para quem já usa a API GraphQL, é possível explorar todos os dados disponíveis consultando seus metadados ([conforme descrito aqui. Você terá informações de esquema sobre os conjuntos de dados disponíveis (por exemplo, idnsQueriesMetrics, edgeFunctionsMetrics, etc.), além de dimensões e métricas disponíveis e seus tipos de dados (por exemplo, int, string, datetime, etc.).
Algumas das perguntas que nossa API GraphQL responde são:
Segurança: Quais são meus principais IPs e portas atacados ao longo do tempo? Que tipos de ataques podemos ver e de onde eles vêm?
Esse tipo de informação pode ser usados para aprimorar a política de segurança. Por exemplo, nosso módulo Network Layer Protection pode ser atualizado com essas informações de forma programada para limitar a taxa ou bloquear requisições por IP, geolocalização, ASN e muito mais.
Performance e economia de custos: Qual é a porcentagem de requisições que está atingindo o cache e qual é a largura de banda de acesso ao cache? Qual é o tempo de resposta da origem?
Esse tipo de informação informa quanto em largura de banda — ou seja, dinheiro — você está economizando com armazenamento em cache e também fornece informações sobre performance e comportamento do usuário para requisições que devem ir até a origem. Isso ajuda os desenvolvedores a otimizarem aplicações em termos de performance, economia de custos e experiência do usuário.
Existem muitos outros casos de uso, por isso, para que nossos clientes saibam mais sobre todas as possibilidades, sugerimos que entrem em contato com seus representantes de Customer Success (CS).
Como usar o GraphQL?
Usar a API GraphQL da Azion é simples. Basta fazer login em nosso painel do Real-Time Manager para gerar um token seguro para autenticar suas requisições de API. A partir disso, você pode consultar informações importantes usando plataformas populares de APIs, como Postman e Insomnia.
No exemplo a seguir, consultamos o número de requisições consideradas como ameaças em uma aplicação amostra ao longo de 1 hora:
query HttpCalculatedWAFThreatsAndRequests {
httpMetrics(
limit: 1000
filter: {
tsRange: {begin:"2023-03-06T12:00:00" end:"2023-03-06T13:00:00"}
}
groupBy: [ts]
orderBy: [ts_ASC]
)
{
ts
wafRequestsThreat
}
}
E aqui está um exemplo de como pode ser a resposta JSON para essa consulta:
{
"data": {
"httpMetrics": [
{
"ts": "2023-09-29T12:00:00Z",
"wafRequestsThreat": 94
},
{
"ts": "2023-09-29T12:01:00Z",
"wafRequestsThreat": 93
},
{
"ts": "2023-09-29T12:02:00Z",
"wafRequestsThreat": 124
},
{
"ts": "2023-09-29T12:03:00Z",
"wafRequestsThreat": 69
}
]
}
}
A resposta mostra o número de requisições consideradas como ameaças, minuto a minuto.
O que está por vir na observabilidade da Azion
Nosso foco são os nossos clientes e estamos constantemente buscando seu feedback para melhorar nossos produtos de observabilidade. No futuro, planejamos fornecer acesso a dados brutos de eventos (não apenas agregados), e também planejamos adicionar novas visualizações no nosso painel de métricas em tempo real, tendo como foco informações de segurança.
Tem algum feedback ou perguntas? É só postar na seção de comentários abaixo.