Monitoramento do arquivo de paginação do Windows com o Nagios

3

Eu tenho uma verificação NAGIOS que monitora a memória virtual em uma máquina windows, essa verificação retorna toda a memória virtual usada (físico + tamanho máximo do arquivo de paginação).

Isto não é o que eu quero, eu tentei procurar por algumas verificações que apenas monitoram o uso do arquivo de paginação em uma máquina windows, mas eu não encontrei nada intersting.

Você está ciente de alguma verificação SNMP que monitora se o arquivo de paginação é usado ou não pelo Windows?

    
por obo 13.01.2015 / 17:50

5 respostas

5

WMI

Você pode acessar os parâmetros WMI diretamente com o cliente WMI instalado na máquina Linux:

Compile e instale o wmi-client manualmente ou use pacotes compilados de www.orvant.com ele parece funcionar com versões mais novas do Ubuntu também (14.04 64 bits).

Aqui está um exemplo de uso do wmic na linha de comando:

wmic -Uuser%pass //192.168.0.2 "SELECT FileSize FROM Win32_PageFile WHERE Path=c:\"

Agora crie o Nagios Plugin. Exemplos de uso do wmic estão aqui . Aqui está guia de como criar seu próprio plugin Nagios , mude para o trabalho com o wmic. Você terá algo assim:

if [ "$1" = "-w" ] && [ "$2" -gt "0" ] && \
[ "$3" = "-c" ] && [ "$4" -gt "0" ] && [ "$5" = "-h" ] && [ "$6" != "" ] && [ "$7" = "-u" ] && [ "$8" != "" ] && [ "$9" = "-p" ]; then

memPfSize='wmic -U$8%$10 //$6 "SELECT FileSize FROM Win32_PageFile WHERE Path=c:\" | grep AllocatedBaseSize | awk -F'=' '{print $2}''

if [ "$memPfSize" -ge "$4" ]; then
  echo "Memory: CRITICAL Pagefile: $memPfSize MB - RES: $memPfSize= MB used!|VIRT=$(($memPfSize*1024*1024));;;; RES=$(($memPfSize=*1024*1024));;;;"
$(exit 2)
elif [ "$memPfSize" -ge "$2" ]; then
  echo "Memory: WARNING Pagefile: $memPfSize MB - RES: $memPfSize= MB used!|VIRT=$(($memPfSize*1024*1024));;;; RES=$(($memPfSize=*1024*1024));;;;"
$(exit 1)
else
  echo "Memory: OK Pagefile: $memPfSize MB - RES: $memPfSize= MB used!|VIRT=$(($memPfSize*1024*1024));;;; RES=$(($memPfSize=*1024*1024));;;;"
$(exit 0)
fi
else
  echo "check_memPfSize v1.0"
  echo "check_memPfSize -w Warning -c Critical -h Host -u Win-User -p Password"
  echo "example of usage:"
  echo "check_memPfSize -w 1024 -c 2048 -h 192.168.0.2 -u Administrator -p adminpassword"
exit
fi

Você pode acessar o WMI via Python do Linux .

SNMP

Se preferir o SNMP, é necessário instalar o gateway WMI-para-SNMP, como Informante SNMP - Avançado em sua máquina Windows para poder coletar informações do sistema, incluindo memória e troca. Essencialmente, essa ferramenta fornece SNMP MIBs para a instrumentação WMI em nível de sistema, que por sua vez permite que os dados WMI sejam consultado por qualquer estação de gerenciamento SNMP. É suportado em servidores Windows XP / Vista / 2000/2003 e 2008 e permite-lhe aceder a dados de todos (mais de 2000) dos contadores.

NSClient

Use o NSClient ++ no Windows para monitorar o tamanho do pagefile.sys . Você precisa instalar o NSClient ++ como um serviço. Com este plugin para máquinas Windows você pode monitorar todos os outros parâmetros também. Por exemplo, você pode monitorar a memória livre. Não há necessidade de adaptações de prefeito no arquivo de configuração NSC.ini na máquina Windows.

Verifique o tamanho do pagefile.sys e certifique-se de que ele permaneça acima de 1 gigabyte. Comando de Amostra:

CheckFileSize ShowAll MinWarn=1G  MinCrit=512M File=c:/pagefile.sys

Configuração do Nagios:

define command {
  command_name <<CheckFileSize>>
  command_line check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckFileSize -a ShowAll MinWarn=$ARG2$  MinCrit=$ARG1$ File=c:/pagefile.sys
}

Da linha de comando (com NRPE):

check_nrpe -H IP -p 5666 -c CheckFileSize -a ShowAll MinWarn=1G  MinCrit=512M File=c:/pagefile.sys

Ou com o plugin check_paging_file no lado do host com NSClient ++.

    
por 24.01.2015 / 21:12
4

Sim, infelizmente, acho que você vai acabar instalando o nsclient ++.

Meu primeiro pensamento foi apenas escrever um script vbscript ou powershell para verificar o tamanho do arquivo de paginação, mas minhas primeiras tentativas retornaram resultados nulos porque o Windows está gerenciando meu arquivo de paginação. Aparentemente, isso é uma coisa comum.

No entanto, este plugin parece funcionar. Também é muito mais abrangente do que o rabisco rápido que tentei. Talvez isso resolva seu problema.

    
por 23.01.2015 / 20:58
1

Você não indica qual plug-in está usando, mas não há motivo para não usar o SNMP para verificar o uso da "Memória Virtual". Por exemplo, quando você percorre essa árvore ( 1.3.6.1.2.1.25.2 ) em um servidor Windows 2008 com SNMP, verá uma saída que inclui algo assim:

HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Physical Memory
<snip>
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 449485
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 392141
<snip>
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 85263
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 104233

Parece que talvez o plug-in que você está usando combina os valores physical memory e virtual memory em uma única verificação?

Talvez você só precise de um plug-in SNMP diferente . Há uma categoria de memória inteira no Nagios Exchange , incluindo alguns que listam explicitamente o uso do Windows. Compre ao redor.

Se você não consegue encontrar um plugin SNMP que faz o que você quer, existem outras opções ...

Como você afirma que não é possível usar um agente do Nagios (nsclient ++), um método melhor seria usar o WMI. A Microsoft implementa apenas o mínimo de suporte SNMP, mas você pode verificar literalmente tudo sobre um servidor Windows via WMI. Eles têm um objeto WMI inteiro para uso de arquivo de paginação, por exemplo .

Há muitas verificações WMI disponíveis no Nagios Exchange (ou no Monitoring Exchange) , como checkwmiplus , check_wmic , ou (se você estiver lidando com muitas caixas do Windows) talvez nagios-wsc .

E aqui está algumas informações sobre como configurar o WMI corretamente para acesso remoto.

Você pode querer dar uma leitura a essa pergunta ; parece que os números que você recebe do SNMP podem não ser precisos neste caso.

    
por 13.01.2015 / 18:55
0

Tudo bem para você?

Comando:

define command{
    command_name    check_win_memusage
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c checkMem -a MaxWarn=$ARG1$ MaxCrit=$ARG2$ ShowAll type=$ARG3$
    }

Serviço:

check_win_memusage!90%!95%!paged
    
por 21.01.2015 / 11:08
0

NSClient ++ 0.4.3 foi construído em check_pagefile que pode ser usado para monitorar a utilização de arquivos de página.

    
por 02.02.2015 / 09:28