기본 프로세스(gwd)는 vc_process_monitor에서 모니터링하는 메모리를 사용하여 사용 가능한 메모리의 75% 이상을 소비하지 않도록 보장합니다. 결과적으로 총 시스템 메모리에 대한 모니터링은 주의 임계값 80%, 위험 임계값 90%로 수행됩니다.
서비스에 영향을 미치기 전에 잠재적인 문제를 나타내는 주의 또는 위험 상태를 제공하는 임계값을 나타내는 터널 수를 모니터링할 수 있습니다. 다음 표에는 임계값 및 권장 작업이 나열되어 있습니다.
임계값 상태 | 임계값 | 권장되는 수정 조치 |
---|---|---|
주의 | 80% | 메모리가 주의 임계값을 초과할 경우:
지속적으로 모니터링하고 활용률이 증가하는지 확인합니다. |
위험 | 90% | 메모리가 주의 임계값을 초과할 경우 다음 작업을 수행합니다.
문제가 다시 발견될 경우 다음 작업을 수행합니다.
참고: 게이트웨이를 재조정하기 전에 용량 메트릭이 권장 제한 내에 있는지 확인합니다. 용량 메트릭에 대한 자세한 내용은
게이트웨이 구성 요소의 용량을 참조하십시오.
|
다음은 메모리 사용량을 모니터링하기 위한 예제 Python 스크립트입니다.
참고: Telegraf를 사용하여 메모리 사용량을 모니터링할 수도 있습니다. 자세한 내용은
Telegraf를 사용하여 게이트웨이 모니터링를 참조하십시오.
#!/usr/bin/env python from optparse import OptionParser import sys # Parse commandline options: parser = OptionParser(usage="%prog -w <warning threshold>% -c <critical threshold>% [ -h ]") parser.add_option("-w", "--warning", action="store", type="string", dest="warn_threshold", help="Warning threshold in absolute(MB) or percentage") parser.add_option("-c", "--critical", action="store", type="string", dest="crit_threshold", help="Critical threshold in ansolute(MB) or percentage") (options, args) = parser.parse_args() def read_meminfo(): meminfo = {} for line in open('/proc/meminfo'): if not line: continue (name, value) = line.split()[0:2] meminfo[name.strip().rstrip(':')] = int(value) return meminfo if __name__ == '__main__': if not options.crit_threshold: print "UNKNOWN: Missing critical threshold value." sys.exit(3) if not options.warn_threshold: print "UNKNOWN: Missing warning threshold value." sys.exit(3) is_warn_pct = options.warn_threshold.endswith('%') if is_warn_pct: warn_threshold = int(options.warn_threshold[0:-1]) else: warn_threshold = int(options.warn_threshold) is_crit_pct = options.crit_threshold.endswith('%') if is_crit_pct: crit_threshold = int(options.crit_threshold[0:-1]) else: crit_threshold = int(options.crit_threshold) if crit_threshold >= warn_threshold: print "UNKNOWN: Critical percentage can't be equal to or bigger than warning percentage." sys.exit(3) meminfo = read_meminfo() memTotal = meminfo["MemTotal"] memFree = meminfo["MemFree"] + meminfo["Buffers"] + meminfo["Cached"] memFreePct = 100.0*memFree/memTotal if (is_crit_pct and memFreePct <= crit_threshold) or (not is_crit_pct and memFree/1024<=crit_threshold): print "CRITICAL: Free memory is at %2.0f %% ( %d MB free our of %d MB total)" % (memFreePct, memFree/1024, memTotal/1024) sys.exit(2) if (is_warn_pct and memFreePct <= warn_threshold) or (not is_warn_pct and memFree/1024<=warn_threshold): print "WARNING: Free memory is at %2.0f %% ( %d MB free our of %d MB total)" % (memFreePct, memFree/1024, memTotal/1024) sys.exit(1) else: print "OK: Free memory is at %2.0f %% ( %d MB free our of %d MB total)" % (memFreePct, memFree/1024, memTotal/1024) sys.exit(0)