Der Hauptprozess (gwd) lässt seinen Speicher durch vc_process_monitor überwachen, wodurch sichergestellt wird, dass nie mehr als 75 % des verfügbaren Speichers verbraucht werden. Folglich erfolgt die Überwachung des gesamten Systemspeichers mit einem Warnungsschwellenwert von 80 % und einem kritischen Schwellenwert von 90 %.

Sie können ein Gateway mit Schwellenwerten überwachen, die Warnungen oder kritische Statuszustände bereitstellen und vor der Beeinträchtigung der Dienste auf potenzielle Probleme hinweisen. In der folgenden Tabelle sind die Schwellenwerte und empfohlenen Aktionen aufgeführt.

Status des Schwellenwerts Schwellenwert Empfohlene fehlerbehebende Aktion
Warnung 80 %

Wenn der Arbeitsspeicher den Warnungsschwellenwert überschreitet:

  • Erfassen des Gateway-Diagnosepakets.
  • Überprüfung der Arbeitsspeichernutzung pro Prozess

Fortsetzung der aktiven Überwachung und Überprüfung auf Zunahme der Nutzung.

Kritisch 90 %

Wenn der Arbeitsspeicher den kritischen Schwellenwert überschreitet:

  • Überwachung auf einen möglichen kritischen Paketverlust, der auf eine Überkapazität hinweisen kann.

Wenn das Problem erneut auftritt:

  • Wenn in einem 5-Minuten-Intervall eine Überkapazität festgestellt wird, fügen Sie die Gateway-Kapazität hinzu und führen Sie eine Neuverteilung durch, um kapazitätsbezogene Auswirkungen auf den Dienst zu vermeiden.
Hinweis: Stellen Sie vor der Neuverteilung des Gateways sicher, dass die Kapazitätsmetriken innerhalb des empfohlenen Grenzwerts liegen. Weitere Informationen zu Kapazitätsmetriken finden Sie unter Kapazität von Gateway-Komponenten.
Im Folgenden finden Sie ein Python-Beispielskript zur Überwachung der Arbeitsspeicherauslastung:
Hinweis: Sie können auch Telegraf verwenden, um die Arbeitsspeichernutzung zu überwachen. Weitere Informationen finden Sie unter Überwachen von Gateways über 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)