Modul sysguard Nginx
Dokumen ini menjelaskan nginx-module-sysguard v0.1.0
yang dirilis pada 23 Februari 2017.
Versi sebelumnya tidak diuji.
shell> git clone git://github.com/vozlt/nginx-module-sysguard.git
--add-module=/path/to/nginx-module-sysguard
Bangun biner nginx.
Instal biner 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 ;
}
}
}
Modul ini dapat digunakan untuk melindungi server Anda jika beban sistem, penggunaan memori terlalu tinggi, atau permintaan ditanggapi terlalu lambat. Ini adalah versi porting sysguard di tengine ke NGINX murni untuk mendukung fitur yang sama.
Caveats:
Perhatikan bahwa modul ini memerlukan panggilan sistem sysinfo(2), atau fungsi getloadavg(3) di glibc. Ini juga memerlukan sistem file /proc untuk mendapatkan informasi memori.
Variabel tertanam berikut disediakan:
$sysguard_load
adalah 100, maka load adalah 0,1(100/1000). (/mdetik)$sysguard_rt
adalah 100, maka waktu respons adalah 0,1 detik (100/1000). (/mdetik)- | - |
---|---|
Sintaksis | sysguard |
Bawaan | mati |
Konteks | http, server, lokasi |
Description:
Mengaktifkan atau menonaktifkan kerja modul.
- | - |
---|---|
Sintaksis | sysguard_load load= nomor [aksi= /url ] |
Bawaan | - |
Konteks | http, server, lokasi |
Description:
Tentukan ambang batas beban. Ketika beban sistem melebihi ambang batas ini, semua permintaan berikutnya akan dialihkan ke URL yang ditentukan oleh parameter 'tindakan'. Ini akan mengembalikan 503 jika tidak ada URL 'tindakan' yang ditentukan. Arahan ini juga mendukung penggunaan ncpuratio alih-alih ambang batas tetap, 'ncpu' berarti jumlah inti cpu, Anda dapat menggunakan arahan ini seperti ini: load=ncpu1.5
- | - |
---|---|
Sintaksis | sysguard_mem swapratio= rasio % gratis= ukuran [aksi= /url ] |
Bawaan | - |
Konteks | http, server, lokasi |
Description:
Tentukan batas memori swap yang digunakan atau memori bebas. Ketika rasio penggunaan memori swap melebihi ambang batas ini atau memori bebas kurang dari ukurannya, semua permintaan berikutnya akan dialihkan ke URL yang ditentukan oleh parameter 'tindakan'. Ini akan mengembalikan 503 jika tidak ada URL 'tindakan'. Sysguard menggunakan strategi ini untuk menghitung memori bebas: "memfree = free + buffered + cached"
- | - |
---|---|
Sintaksis | sysguard_rt rt= periode kedua = waktu [metode= |
Bawaan | - |
Konteks | http, server, lokasi |
Description:
Tentukan ambang waktu respons. Parameter rt digunakan untuk menetapkan ambang batas waktu respons rata-rata, dalam satuan detik. Periode parameter digunakan untuk menentukan periode siklus statistik. Jika waktu respons rata-rata sistem melebihi ambang batas yang ditentukan oleh pengguna, permintaan masuk akan dialihkan ke url tertentu yang ditentukan oleh parameter 'aksi'. Jika tidak ada 'tindakan' yang ditampilkan, permintaan akan langsung ditanggapi dengan kesalahan 503. method
merupakan rumus yang menghitung rata-rata waktu pemrosesan respon. number
dalam metode adalah jumlah sampel untuk dihitung rata-ratanya. Metode default diatur menjadi method=AMM:period
.
- | - |
---|---|
Sintaksis | sysguard_mode |
Bawaan | atau |
Konteks | http, server, lokasi |
Description:
Jika ada lebih dari satu jenis monitor, arahan ini digunakan untuk menentukan hubungan di antara semua monitor yaitu: 'dan' untuk semua pencocokan dan 'atau' untuk pencocokan apa pun.
- | - |
---|---|
Sintaksis | waktu sysguard_interval |
Bawaan | 1 detik |
Konteks | http, server, lokasi |
Description:
Tentukan interval waktu untuk memperbarui informasi sistem Anda. Nilai defaultnya adalah satu detik, yang berarti sysguard memperbarui status server sekali dalam satu detik.
- | - |
---|---|
Sintaksis | sysguard_log_level |
Bawaan | kesalahan |
Konteks | http, server, lokasi |
Description:
Tentukan level log sysguard.