ฉันกำลังใช้การจำกัดอัตรากับ haproxy18 ของฉัน และฉันต้องการบีบเมตริกออกจากมันโดยอิงจากที่อยู่ IP ผู้ที่ใกล้จะถึงขีดจำกัด หรือวิธีที่ผู้ใช้ถึงขีดจำกัด
นี่คือการกำหนดค่าของฉันที่เกี่ยวข้องกับการจำกัดอัตรา:
...
ชนิดตารางติด ขนาด ip 1m หมดอายุ 10s store http_req_rate(10s)
tcp-request ตรวจสอบ-delay 10 วินาที
tcp-request เนื้อหา track-sc0 src
http-request ปฏิเสธการปฏิเสธสถานะ 429 ถ้า { sc_http_req_rate(0) gt 5000 }
...
ในขณะนี้ สิ่งที่ฉันทำได้เป็นวิธีแก้ปัญหาที่งี่เง่ามาก และฉันไม่ชอบ ในขณะที่ฉันกำลังฟังซ็อกเก็ตอยู่ครู่หนึ่ง และฉันอาจเปลี่ยนเส้นทางไปยังไฟล์เอาต์พุต:
ขณะหลับ 0.5;do
printf 'แสดงตาราง https\nแสดงตาราง http\n' |nc -U /var/lib/haproxy/stats เสร็จแล้ว
นี่คือผลลัพธ์ของ while สิ่งที่ฉันสนใจคือ ip และหมายเลขสุดท้ายในบรรทัด:
0x561fd2fe50b0: key=10.118.171.119 use=6 exp=8726 http_req_rate(10000)=9
0x561fd31b0270: key=10.118.172.20 use=6 exp=9104 http_req_rate(10000)=10
0x561fd31d0ac0: key=10.118.172.192 use=34 exp=9999 http_req_rate(10000)=1736
ฉันต้องการทราบว่ามีวิธีแก้ปัญหาที่สวยงามกว่านี้ไหม หรือฉันจะแปลงเป็นรายการบันทึกได้อย่างไร
ฉันกำลังคิดที่จะใส่คำสั่ง date แบบนี้ แต่ฉันควรต่อท้ายทุกบรรทัดในตาราง ดังนั้นฉันจึงต้องเปลี่ยนเส้นทางเอาต์พุตนี้ไปยังไฟล์และแก้ไข จากนั้นให้ตัวรวบรวมเมตริกเลือก ฉันถือว่ามีวิธีแก้ปัญหาที่ดีกว่า
ขณะนอนหลับ 0.5;do date;printf 'แสดงตาราง https\nแสดงตาราง http\n' |nc -U /var/lib/haproxy/stats;done
ขอขอบคุณ