Soluções de gerenciamento de API [fechado]


9

No momento, estou construindo uma API e estou procurando uma ferramenta que permita monitorar (em uma GUI) e o uso de limite de taxa. Encontrei algumas soluções empresariais, incluindo:

O plano corporativo Apigee é exatamente o que estou procurando, mas os planos começam em US $ 3000 / mês, que está fora da minha faixa de preço. As outras soluções são caras demais ou não fornecem a solução que estou procurando.

Isso me levou a examinar algumas opções de código aberto, incluindo:

O verniz parece uma solução bastante completa; no entanto, eu precisaria criar uma GUI para visualizar os dados.

Minha opção final seria criar uma solução do zero usando o EventMachine e o ruby.

Algum conselho?


1
Mike. Eu sou o desenvolvedor do Api Axle. Não há visualização de estatísticas, mas o Axle vem com uma API que deve facilitar a criação de uma. Faça ping me, se você acha que posso ajudar.
Phil Jackson

2
Eu não testei, mas o que sobre o uso nginx com Redis e implementar este tipo de algoritmo chris6f.com/rate-limiting-with-redis
hellvinz

Respostas:


3

Eu acho que você superestima o quão difícil isso é.

No seu código, basta ter um contador com redis / memcached / mongodb (contador de 1/24 horas ou contador horário / diário, dependendo das suas necessidades) e retornar o erro apropriado quando o limite for atingido. Você pode incrementar as contagens ali mesmo, ou fazer isso de forma assíncrona ao processar seus logs.

Para mostrar os dados, basta fazer uma página da Web simples resumindo as contagens, conforme necessário.

Para nosso uso, não precisamos limitar as coisas exatamente; portanto, geralmente apenas registramos nossa infraestrutura de log e um dos processadores de registro (em tempo real através do scribe) resumirá esse tipo de coisa. A saída é uma página HTML simples com os IPs / clientes ocupados, alguma página que os Nagios podem monitorar e alguns URLs que os munin extraem dados para criar gráficos.


1

Você pode usar naxsi com nginx. substitua seu local / requestDenied pelas regras de limite necessárias:

mapeie os parâmetros de redirecionamento naxsi para o limite correspondente:

map $arg_uri $limit_uri {
  123.php   limit_zone1;
  234.php   limit_zone2;
default limit_default;
}

use limites no local:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.