Folosesc limitarea ratei cu haproxy18 și aș dori cumva să stoarc valorile din acesta pe baza adreselor IP, cine este aproape de limită sau cum ating limitele utilizatorii.
Aceasta este configurația mea legată de limitarea ratei:
...
tip stick-table dimensiune ip 1m expiră 10s magazin http_req_rate(10s)
tcp-request inspect-delay 10s
tcp-request content track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 5000 }
...
Momentan, ceea ce pot face este o soluție foarte prostească și nu-mi place, într-o buclă while ascult socket-ul și s-ar putea să redirecționez la un fișier rezultatul:
în timp ce dormi 0,5;do
printf 'afișează tabelul https\narată tabelul http\n' |nc -U /var/lib/haproxy/stats terminat
Aceasta este rezultatul timpului, ceea ce mă interesează este ip-ul și ultimul număr din linie:
0x561fd2fe50b0: cheie=10.118.171.119 use=6 exp=8726 http_req_rate(10000)=9
0x561fd31b0270: cheie=10.118.172.20 use=6 exp=9104 http_req_rate(10000)=10
0x561fd31d0ac0: cheie=10.118.172.192 use=34 exp=9999 http_req_rate(10000)=1736
Aș dori să știu dacă există vreo altă soluție mai elegantă, vă rog, sau cum pot converti aceasta într-o intrare de jurnal?
Mă gândeam să pun comanda date în felul acesta, dar ar trebui să atașez toate liniile din tabel, așa că trebuie să redirecționez această ieșire într-un fișier și să editez, apoi să las colectorul de metrici să preia, presupun că există o soluție mai frumoasă.
în timpul somnului 0.5;do data;printf 'afișează tabelul https\narată tabelul http\n' |nc -U /var/lib/haproxy/stats;terminat
Mulțumesc