기본 프로세스(gwd)는 vc_process_monitor에서 모니터링하는 메모리를 사용하여 사용 가능한 메모리의 75% 이상을 소비하지 않도록 보장합니다. 결과적으로 총 시스템 메모리에 대한 모니터링은 주의 임계값 80%, 위험 임계값 90%로 수행됩니다.

서비스에 영향을 미치기 전에 잠재적인 문제를 나타내는 주의 또는 위험 상태를 제공하는 임계값을 나타내는 터널 수를 모니터링할 수 있습니다. 다음 표에는 임계값 및 권장 작업이 나열되어 있습니다.

임계값 상태 임계값 권장되는 수정 조치
주의 80%

메모리가 주의 임계값을 초과할 경우:

  • 게이트웨이 진단 번들을 수집합니다.
  • 프로세스별 메모리 사용량 확인

지속적으로 모니터링하고 활용률이 증가하는지 확인합니다.

위험 90%

메모리가 주의 임계값을 초과할 경우 다음 작업을 수행합니다.

  • 용량 초과를 나타낼 수 있는 가능한 위험 패킷 삭제를 모니터링합니다.

문제가 다시 발견될 경우 다음 작업을 수행합니다.

  • 5분 간격으로 용량 초과가 발견되면 게이트웨이 용량을 추가하고 재조정하여 용량 관련 서비스 영향을 방지합니다.
참고: 게이트웨이를 재조정하기 전에 용량 메트릭이 권장 제한 내에 있는지 확인합니다. 용량 메트릭에 대한 자세한 내용은 게이트웨이 구성 요소의 용량을 참조하십시오.
다음은 메모리 사용량을 모니터링하기 위한 예제 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)