Nginx sysguard 모듈
이 문서에서는 2017년 2월 23일에 출시된 nginx-module-sysguard v0.1.0
에 대해 설명합니다.
이전 버전은 테스트되지 않았습니다.
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 ;
}
}
}
이 모듈은 시스템 로드, 메모리 사용량이 너무 높거나 요청 응답이 너무 느린 경우 서버를 보호하는 데 사용할 수 있습니다. 이는 동일한 기능을 지원하기 위해 tengine의 sysguard를 순수 NGINX로 포팅한 버전입니다.
Caveats:
이 모듈에는 sysinfo(2) 시스템 호출 또는 glibc의 getloadavg(3) 함수가 필요합니다. 또한 메모리 정보를 얻으려면 /proc 파일 시스템이 필요합니다.
다음과 같은 내장 변수가 제공됩니다.
$sysguard_load
값이 100이면 로드는 0.1(100/1000)입니다. (/밀리초)$sysguard_rt
값이 100이면 응답 시간은 0.1초(100/1000)입니다. (/밀리초)- | - |
---|---|
통사론 | sysguard |
기본 | 끄다 |
문맥 | http, 서버, 위치 |
Description:
모듈 작동을 활성화하거나 비활성화합니다.
- | - |
---|---|
통사론 | sysguard_load 로드= 숫자 [action= /url ] |
기본 | - |
문맥 | http, 서버, 위치 |
Description:
로드 임계값을 지정합니다. 시스템 로드가 이 임계값을 초과하면 모든 후속 요청이 'action' 매개변수에 지정된 URL로 리디렉션됩니다. 정의된 '작업' URL이 없으면 503을 반환합니다. 이 지시문은 고정 임계값 대신 ncpuratio 사용을 지원합니다. 'ncpu'는 CPU 코어 수를 의미합니다. 다음과 같이 이 지시문을 사용할 수 있습니다: load=ncpu1.5
- | - |
---|---|
통사론 | sysguard_mem swapratio= 비율 % free= 크기 [action= /url ] |
기본 | - |
문맥 | http, 서버, 위치 |
Description:
사용된 스왑 메모리 또는 여유 메모리 임계값을 지정합니다. 스왑 메모리 사용 비율이 이 임계값을 초과하거나 메모리 여유 공간이 크기보다 작을 경우 모든 후속 요청은 'action' 매개변수에 지정된 URL로 리디렉션됩니다. '작업' URL이 없으면 503을 반환합니다. Sysguard는 여유 메모리를 계산하기 위해 다음 전략을 사용합니다. "memfree = free + buffered + cached"
- | - |
---|---|
통사론 | sysguard_rt rt= 초 기간= 시간 [method= |
기본 | - |
문맥 | http, 서버, 위치 |
Description:
응답 시간 임계값을 지정합니다. 매개변수 rt는 평균 응답 시간의 임계값(초)을 설정하는 데 사용됩니다. 매개변수 period는 통계 주기의 주기를 지정하는 데 사용됩니다. 시스템의 평균 응답 시간이 사용자가 지정한 임계값을 초과하는 경우 들어오는 요청은 'action' 매개변수로 정의된 지정된 URL로 리디렉션됩니다. '작업'이 표시되지 않으면 요청은 503 오류로 직접 응답됩니다. 이 method
응답 처리 시간의 평균을 계산하는 공식입니다. 방법의 number
평균을 계산하기 위한 샘플 수입니다. 기본 방법은 method=AMM:period
으로 설정됩니다.
- | - |
---|---|
통사론 | sysguard_mode <및|또는> |
기본 | 또는 |
문맥 | http, 서버, 위치 |
Description:
모니터 유형이 두 개 이상인 경우 이 지시문은 모든 일치에 대해 'and' 및 모든 일치에 대해 'or'와 같은 모든 모니터 간의 관계를 지정하는 데 사용됩니다.
- | - |
---|---|
통사론 | sysguard_interval 시간 |
기본 | 1초 |
문맥 | http, 서버, 위치 |
Description:
시스템 정보를 업데이트하는 시간 간격을 지정합니다. 기본값은 1초입니다. 이는 sysguard가 1초에 한 번씩 서버 상태를 업데이트한다는 의미입니다.
- | - |
---|---|
통사론 | sysguard_log_level <정보|알림|경고|오류> |
기본 | 오류 |
문맥 | http, 서버, 위치 |
Description:
sysguard의 로그 수준을 지정합니다.