Obecnie buduję interfejs API i szukam narzędzia, które pozwoliłoby mi monitorować (w graficznym interfejsie użytkownika) i używać ograniczenia prędkości. Natknąłem się na kilka rozwiązań dla przedsiębiorstw, w tym:
Plan korporacyjny Apigee jest dokładnie tym, czego szukam, ale plany zaczynają się od 3000 $ / miesiąc, co jest poza moim zakresem cenowym. Pozostałe rozwiązania są albo zbyt drogie, albo nie zapewniają rozwiązania, którego szukam.
Doprowadziło mnie to do spojrzenia na niektóre opcje open source, w tym:
Lakier wydaje się dość kompletnym rozwiązaniem; musiałbym jednak zbudować GUI do wizualizacji danych.
Ostatnią opcją byłoby zbudowanie rozwiązania od zera przy użyciu EventMachine i ruby.
Jakakolwiek rada?
nginx
monitoring
proxy
ruby-on-rails
Mikrofon
źródło
źródło
Odpowiedzi:
Myślę, że przeceniasz, jak trudne to jest.
W swoim kodzie wystarczy mieć licznik z redis / memcached / mongodb (licznik 1/24 godziny lub licznik godzinny / dzienny w zależności od potrzeb) i zwrócić odpowiedni błąd, gdy limit zostanie osiągnięty. Możesz albo zwiększyć liczbę bezpośrednio tutaj, albo wykonać to asynchronicznie podczas przetwarzania dzienników.
Aby wyświetlić dane, wystarczy utworzyć prostą stronę internetową podsumowującą liczby w razie potrzeby.
Na nasz użytek nie musimy ograniczać rzeczy dokładnie, więc generalnie logujemy się po prostu przez naszą infrastrukturę logów, a jeden z procesorów logujących (w czasie rzeczywistym poprzez skrypt) podsumuje tego rodzaju rzeczy. Dane wyjściowe to prosta strona HTML z zajętymi adresami IP / klientami, niektóre strony, które nagios mogą monitorować, oraz niektóre adresy URL, z których pobiera dane, aby tworzyć wykresy.
źródło
Możesz używać naxsi z nginx. po prostu zastąp swoją / requestDenied lokalizację regułami limitów, których potrzebujesz:
odwzoruj parametry przekierowania naxsi na odpowiedni limit:
użyj limitów w lokalizacji:
źródło