Iremos utilizar o
lm-sensors para a captura das informações dos sensores que seu hardware possua, o lm-sensors utiliza módulos habilitados no kernel
Linux, e através destes módulos, conseguiremos obter as informações de sensores de temperatura e de rotação de coolers disponíveis em seu servidor.
Começaremos com a instalação do lm-sensors:
# apt-get install lm-sensors
Agora iremos detectar os sensores existentes em nosso hardware:
# sensors-detect
Qualquer pergunta, apenas dê ENTER. Repare que ele criará listas dos sensores já encontrados. Veremos agora se deu tudo certo, listando os sensores existentes:
# sensors
Opaa, deu tudo certo! Sensores 'Core 0' e demais 'Core 1, 2, 3' foram encontrados perfeitamente (lembrando que cada core é um núcleo de seu processador, caso este seja multicore), além disso, minhas memórias também possuem sensores de temperatura 'temp1, 2, 3'. Ebaa, tudo funcionando!! Só que em muitos casos não é bem por aí.
Dependendo do kernel que seu servidor está utilizando, alguns módulos podem estar desabilitados, ou simplesmente, não existem por padrão. Caso seja seu caso meu caro, como foi o meu, começaremos por tentar habilitar estes módulos, que por Deus, já estão contidos no seu Kernel (comece a rezar agora!):
# modprobe coretemp
Nenhuma mensagem de erro? Nada? Então diga aleluia irmão, e veja se o milagre se concretizou verificando os sensores novamente:
# sensors
E aí, tudo certo? Sensor de temperatura do processador reconhecido! Ee, maravilha! Mas será que conseguimos melhorar isso? Tente habilitar os módulos i2c e verificar se o seu hardware ainda possui algum sensor escondido. Para mais detalhes sobre os módulos i2c, por favor, consulte o tio Google ("i2c devices"):
# modprobe i2c-dev
# modprobe i2c-i801
Tudo certo? Sem erros? Então maravilha! Caso ocorra algum erro, não se preocupe tanto assim, você pode sobreviver sem estes sensores, ou talvez eles nem existam. Mas, e se algum erro ocorreu em algum comando "modprobe" e o resultado for algo como:
...: No such device
Bom meu amigo, isso muito possivelmente quer dizer que seu kernel não possui este módulo em questão, como é o caso do Kernel 2.6.35-22, que não possui o módulo Coretemp, para resolver tal problema, você precisará atualizar seu kernel. Em sistemas
Ubuntu, podemos resolver isso facilmente com o comando:
# apt-get dist-upgrade
Mas lembre-se de que isso poderá trazer complicações, como ter de reinstalar drivers de rede, vídeo etc.
Sensores detectados, agora vamos para o sensacional plugin que fará a leitura destes sensores e disponibilizará estas informações ao nosso poderoso Nagios. Comece efetuando o download do plugin, infelizmente não consegui efetuar este através do
Wget. Acabei tendo de fazer a gambiarra de baixá-lo num host Windows e depois transferi-lo através do PSCP para o servidor
GNU/Linux.
Aqui està o link do
check_lm_sensors:
Feito o download, transfira ele para o servidor GNU/Linux (tio Google pra quem está em dúvida sobre como fazer isso) e descompacte este:
# tar xzf check_lm_sensors-3.1.1.tar.gz
# cd check_lm_sensors-3.1.1
Começaremos agora a instalação do plugin, indicaremos a ele o diretório padrão do Nagios Core 3.2, caso seu diretório seja diferente, altere a primeira linha:
# perl Makefile.PL INSTALLSITESCRIPT=/usr/local/nagios/libexec/
# make
# make install
Ok, lindo, sem erros, vamos agora testá-lo já verificando os sensores disponíveis:
# /usr/local/nagios/libexec/./check_lm_sensors --list
Todos foram listados? Não? Não se preocupe, ele conseguirá efetuar a leitura mesmo assim, basta você pegar o Index do sensor, que nada mais é do que o 'Core 1', 'temp1', 'Core 2' etc que o comando "sensors" te traz.
Verifique agora, especificamente, um sensor, veremos o sensor de um dos core do processador:
# /usr/local/nagios/libexec/./check_lm_sensors --nodrives --high 'Core 0'=58,62
Explicando basicamente o comando:
- Opção "--nodrives" → Faz com que mensagens indesejadas não sejam exibidas, isso normalmente acontece quando não se tem alguns sensores externos instalados ou ativos, como é o caso do hddtemp.
- Opção "--high" → Indica que gostaríamos de monitorar quando o processador atingir temperaturas acima da por nós estipulada, como neste caso seria 58ºC, ele se encontraria em nível crítico, e 60ºC ele se encontraria em nível Alarmante, mas conhecido como "Deu me**a!".
- 'Core 0' → Indica apenas o Index do sensor, como disse acima, verifique este com o comando "sensors".
Conselho do tio, procure informações a respeito do funcionamento de seus processadores, memórias, para que você possa colocar corretamente as temperaturas de Critical e Warning, afinal, um
Celeron 430 não trabalha na mesma temperatura de um
Xeon da vida.