โมดูล Nginx sysguard
เอกสารนี้อธิบาย nginx-module-sysguard v0.1.0
ที่เผยแพร่เมื่อวันที่ 23 กุมภาพันธ์ 2017
เวอร์ชันก่อนหน้าไม่ได้รับการทดสอบ
shell> git clone git://github.com/vozlt/nginx-module-sysguard.git
--add-module=/path/to/nginx-module-sysguard
สร้างไบนารี nginx
ติดตั้งไบนารี nginx
http {
...
server {
...
sysguard on;
sysguard_mode or;
sysguard_load load=10.5 action=/loadlimit;
sysguard_mem swapratio=20% action=/swaplimit;
sysguard_mem free=100M action=/freelimit;
sysguard_rt rt=0.01 period=5s method=AMM:10 action=/rtlimit;
location /loadlimit {
return 503 ;
}
location /swaplimit {
return 503 ;
}
location /freelimit {
return 503 ;
}
location /rtlimit {
return 503 ;
}
}
...
server {
...
location /api {
sysguard on;
sysguard_mode or;
sysguard_load load=20 action=/limit;
sysguard_mem swapratio=10% action=/limit;
sysguard_rt rt=2.01 period=5s method=WMA:10 action=/limit;
...
}
location /images {
sysguard on;
sysguard_mode and;
sysguard_load load=20 action=/limit;
sysguard_mem swapratio=10% action=/limit;
sysguard_rt rt=2.01 period=5s method=WMA:10 action=/limit;
...
}
location /limit {
return 503 ;
}
}
}
โมดูลนี้สามารถใช้เพื่อปกป้องเซิร์ฟเวอร์ของคุณในกรณีที่ระบบโหลด การใช้หน่วยความจำสูงเกินไป หรือคำขอได้รับการตอบกลับช้าเกินไป นี่เป็นเวอร์ชันการย้ายระบบของ sysguard ใน tengine ไปยัง NGINX ล้วนๆ เพื่อรองรับคุณสมบัติเดียวกัน
Caveats:
โปรดทราบว่าโมดูลนี้ต้องการการเรียกระบบ sysinfo(2) หรือฟังก์ชัน getloadavg(3) ใน glibc นอกจากนี้ยังต้องการระบบไฟล์ /proc เพื่อรับข้อมูลหน่วยความจำ
มีการจัดเตรียมตัวแปรฝังตัวต่อไปนี้:
$sysguard_load
คือ 100 ดังนั้นโหลดจะเป็น 0.1(100/1000) (/มิลลิวินาที)$sysguard_rt
คือ 100 ดังนั้นเวลาตอบสนองจะเป็น 0.1 วินาที (100/1000) (/มิลลิวินาที)- | - |
---|---|
ไวยากรณ์ | ซิสการ์ด <เปิด|ปิด> |
ค่าเริ่มต้น | ปิด |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
เปิดหรือปิดการทำงานของโมดูล
- | - |
---|---|
ไวยากรณ์ | โหลด sysguard_load = หมายเลข [การกระทำ= /url ] |
ค่าเริ่มต้น | - |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
ระบุเกณฑ์การโหลด เมื่อโหลดของระบบเกินเกณฑ์นี้ คำขอที่ตามมาทั้งหมดจะถูกเปลี่ยนเส้นทางไปยัง URL ที่ระบุโดยพารามิเตอร์ 'การกระทำ' มันจะส่งคืน 503 หากไม่มีการกำหนด URL 'การกระทำ' คำสั่งนี้ยังรองรับการใช้ ncpuratio แทนเกณฑ์คงที่ 'ncpu' หมายถึงจำนวนคอร์ของ cpu คุณสามารถใช้คำสั่งนี้ได้ดังนี้: load=ncpu1.5
- | - |
---|---|
ไวยากรณ์ | sysguard_mem swapratio= อัตราส่วน % ฟรี= ขนาด [action= /url ] |
ค่าเริ่มต้น | - |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
ระบุหน่วยความจำสลับที่ใช้หรือขีดจำกัดหน่วยความจำว่าง เมื่ออัตราส่วนการใช้หน่วยความจำสลับเกินเกณฑ์นี้หรือหน่วยความจำว่างน้อยกว่าขนาด คำขอที่ตามมาทั้งหมดจะถูกเปลี่ยนเส้นทางไปยัง URL ที่ระบุโดยพารามิเตอร์ 'การกระทำ' มันจะส่งคืน 503 หากไม่มี URL 'การกระทำ' Sysguard ใช้กลยุทธ์นี้เพื่อคำนวณหน่วยความจำว่าง: "memfree = free + buffered + cached"
- | - |
---|---|
ไวยากรณ์ | sysguard_rt rt= ช่วง ที่สอง = เวลา [method= |
ค่าเริ่มต้น | - |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
ระบุเกณฑ์เวลาตอบสนอง พารามิเตอร์ rt ใช้เพื่อกำหนดขีดจำกัดของเวลาตอบสนองโดยเฉลี่ยในหน่วยวินาที ระยะเวลาพารามิเตอร์ใช้เพื่อระบุระยะเวลาของรอบสถิติ หากเวลาตอบสนองโดยเฉลี่ยของระบบเกินเกณฑ์ที่ระบุโดยผู้ใช้ คำขอที่เข้ามาจะถูกเปลี่ยนเส้นทางไปยัง URL ที่ระบุซึ่งกำหนดโดยพารามิเตอร์ 'การกระทำ' หากไม่มีการแสดง 'การดำเนินการ' คำขอจะได้รับการตอบกลับด้วยข้อผิดพลาด 503 โดยตรง method
นี้เป็นสูตรที่คำนวณค่าเฉลี่ยของเวลาในการประมวลผลการตอบสนอง number
ในวิธีคือจำนวนตัวอย่างที่จะคำนวณค่าเฉลี่ย วิธีการเริ่มต้นถูกตั้งค่าเป็น method=AMM:period
- | - |
---|---|
ไวยากรณ์ | sysguard_mode <และ|หรือ> |
ค่าเริ่มต้น | หรือ |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
หากมีจอภาพมากกว่าหนึ่งประเภท คำสั่งนี้จะใช้เพื่อระบุความสัมพันธ์ระหว่างจอภาพทั้งหมดซึ่งได้แก่: 'และ' สำหรับการจับคู่ทั้งหมด และ 'หรือ' สำหรับการจับคู่ใดๆ
- | - |
---|---|
ไวยากรณ์ | sysguard_ช่วง เวลา |
ค่าเริ่มต้น | 1 วินาที |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
ระบุช่วงเวลาเพื่ออัพเดตข้อมูลระบบของคุณ ค่าเริ่มต้นคือหนึ่งวินาที ซึ่งหมายความว่า sysguard จะอัปเดตสถานะเซิร์ฟเวอร์วินาทีละครั้ง
- | - |
---|---|
ไวยากรณ์ | sysguard_log_level <ข้อมูล | ประกาศ | เตือน | ข้อผิดพลาด> |
ค่าเริ่มต้น | ข้อผิดพลาด |
บริบท | http, เซิร์ฟเวอร์, ที่ตั้ง |
Description:
ระบุระดับบันทึกของ sysguard