A memória do processo principal (gwd) é monitorizada por vc_process_monitor, que garante que este nunca consome mais do que 75% da memória disponível. Como resultado, a monitorização da memória total do sistema é feita com um limiar de aviso de 80% e um limiar crítico de 90%.

Pode monitorizar um gateway com limiares que fornecem estados de alerta ou críticos que indicam potenciais problemas antes de os serviços serem afetados. A tabela que se segue lista os valores de limiar e as ações recomendadas.

Estado de limiar Valor de limiar Ação corretiva recomendada
Aviso 80%

Se a memória exceder o limiar de aviso:

  • Recolha o pacote de diagnóstico do gateway.
  • Verifique a utilização da memória por processos.

Continue a monitorizar ativamente e verifique se há uma utilização crescente.

Crítico 90%

Se a memória exceder o limiar crítico:

  • Monitorize uma possível falha na obtenção de um pacote crítico, o que pode significar sobrecarga.

Se o problema for observado outra vez:

  • Se a sobrecarga for observada ao longo de um intervalo de 5 minutos, adicione capacidade ao gateway e reequilibre para evitar o impacto no serviço relacionado com a capacidade.
Nota: Antes de reequilibrar o gateway, confirme que as métricas de capacidade estão dentro do limite recomendado. Para obter mais informações sobre as métricas, consulte Capacidade dos componentes do gateway.
Segue-se um exemplo de um script Python para monitorizar a utilização da memória:
Nota: Também pode utilizar o Telegraf para monitorizar a utilização da memória. Para obter mais informações, consulte Monitorizar os Gateways utilizando o 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)