SNMP RPi2

Download as odt, pdf, or txt
Download as odt, pdf, or txt
You are on page 1of 6

Nueva Gorgona, 24 Sep 2013

Eu gostaria de monitorar o Raspi - carga da CPU, temperatura, # processos,


memória, tráfego de rede, etc. Este projeto descreve uma abordagem bastante
simples, que eu (ou você) pode jogar com e personalizar como desejado:

1. O usuário exibe uma página da Web a partir do servidor web Raspi.


Javascript na página inicia automaticamente uma sondagem CGI no Raspi.

2. O CGI chama um programa C que recolhe os contadores no Raspi - alguns


de SNMP e alguns de chamadas para comando de linha de ferramentas - e
devolve-los para o navegador.

3. A página da Web exibe-los em parcelas de séries temporais.

Há apenas 6 arquivos envolvidos por isso é bastante fácil de ver como ele
funciona e modificar como quiser - digo para adicionar algo que você gostaria
de monitorar em seu Raspi.

Aqui está uma imagem de amostra da versão atual:

1. Esta foi a amostragem em intervalos de 1 minuto. Se você selecionar um


intervalo de amostra mais a partir da lista drop-down, deve diminuir a
sobrecarga esta monitor de lugares na Raspi. Atualmente, a intervalos de
amostragem de 1 minuto, é cerca de 10% e incorrer uma carga insignificante
na rede local.
2. Não parece ser um vazamento de memória (a cada vez menor "memória
livre"). Embora isso possa ser a coleta de lixo preguiçoso pelo Raspi. Parece a
se estabilizar em torno de 150MB.
3. O "Tempo de Resposta" é o tempo de resposta que esta IU vê-lo a partir de
solicitações ao Raspi para uma nova amostra. A linha verde é o tempo que o
servidor levou. Mais uma vez, o programa CGI chama um programa que C:
amostras do relógio quando invocado (T0)
recolhe as contagens atuais de SNMP e ferramentas de linha de comando
amostras novamente o relógio (t1) pouco antes de retornar os resultados para
o código Javascript em execução no navegador
Ele retorna t1-t0 para a interface do usuário, que é representada como a linha
verde. A linha vermelha é o tempo total que o código Javascript (em execução
no navegador) vê. Ele inclui o atraso da rede. Assim, a diferença entre este e o
atraso do servidor (t1-t0), na maior parte é provavelmente o atraso da rede.
Aqui à direita, eu estava navegando na web do meu laptop e é isso que
provavelmente causado muitos dos os picos de atraso da rede aparente visto
por este monitor. Tanto o meu laptop e este monitor compartilhavam a mesma
rede Wi-Fi.
4. Você pode ver a temperatura subir e descer como você exercer o Raspi. :-)
Nueva Gorgona, 24 de setembro de 2013
Aconteceu de eu tentar exibir este monitor num toque de iPod 5G (que tem a
tela Retina). Ele foi surpreendentemente legível - melhor do que esta foto
indica.
Isto foi tomado após o Raspi tinha sido executado por cerca de 8 horas. Os gráficos mostram 300
amostras. Ou seja, eles são 300 amostras de largura. Estes eram de 1 minuto cada intervalo de amostra
assim 300 minutos ou 5 horas de amostras são mostrados.

Eu entrei na Raspi do meu laptop e usado Geany um pouco para criar alguma atividade nas parcelas.
Note que o contador na parte inferior (a exibir "..." aqui) é uma contagem decrescente (em segundos)
para a próxima vez que este monitor vai fazer um pedido para a Raspi para o próximo conjunto de
contagens. Em seguida, o contador (em geral) mostra "..." enquanto ele está esperando até que as
contagens foram devolvidos. Portanto, se esse contador ou é a contagem regressiva ou mostrar "..." por
períodos curtos (ver o tempo "geral" de resposta em seu enredo "Tempo de Resposta"), então as coisas
estão provavelmente funcionando normalmente.
 
Eu me pergunto por que a temperatura subiu um pouco à direita. Um mistério.

Setup
Para configurar o Raspi, eu instalei primeiro SNMP e snmpd sobre ele como se
segue. Eu achei que eu precisava usar --fixmissing no snmpd instalar:
sudo apt-get update
sudo apt-get install snmpd --fixmissing
sudo apt-get install snmp
/etc/init.d/snmpd restart
Man-O-War Cay, 9 Jan 2015

Dale escreve para dizer que ele precisava também instalarl “snmp-mibs-downloader” para evitar
mensagens de erro durante a instalação. Graças Dale.

Em seguida, em /etc/snmp/snmpd.conf, Eu uncommented da linha:


#rocommunity public localhost

para se tornar bem ..:


rocommunity public localhost

Se você deseja instalar os MIBs mais amigáveis para usar com SNMP, esta
nota foi útil. Para os meus propósitos, porém, a lista de OIDs encontrado nesta
nota e especialmente este onewere muito útil. Há também referência
impressionante da Cisco.

Então, para tentar o cliente SNMP no Raspi, em uma janela de linha de


comando no Raspi:
snmpget -v 1 -c public localhost .1.3.6.1.4.1.2021.4.11.0

que deve retornar algo como:


UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 150412 kB

Para o mapeamento, eu usei Flot.


Se você estiver interessado em programá-lo, sua atualizações em tempo real
exemplo era útil para a compreensão de sua API. Botão direito do mouse sobre
a página e "Ver página Source". Além disso, aqui é a sua descrição decente da
API.
A sua biblioteca está incluído no meu arquivo zip. Do meu arquivo zip, copie o
diretório flot (contendo jquery.flot.min.js and jquery.min.js) para / var / www
em seu Raspi e, em seguida, definir as permissões:
sudo chmod +x /var/www/flot
chmod +r /var/www/flot/*

My code
My code is still something of "a work in progress"...
Here is my current version: raspi-mon-28Sep2013.zip.
 
Here are the components - either in that zip file or compiled from them:
What Named Where they go on the RasPi
1. The web page that calls the CGI on the mikesmon.html /var/www/mikesmon.html
RasPi and presents the results to the user mikesmon-favicon.png /var/www/mikesmon-favicon.png
2. The CGI that calls a C program to
mikesmon.cgi /usr/lib/cgi-bin/mikesmon.cgi
collect the counts
3. The source code for the C program that mikesmon.c
You can put these anywhere, let's say in a folder called mon in
collects the counts from SNMP and myutils.h
your home directory on the RasPi
command-line programs OIDs.h
4. The executable from compiling the
source code in #3 ("gcc -o mikesmon mikesmon /usr/bin/mikesmon
mikesmon.c")
jquery.min.js /var/www/flot/jquery.min.js
5. The chart-drawing libraries
jquery.flot.min.js /var/www/flot/jquery.flot.min.js

To install and run my code:

1.Copy the files from the zip file to their locations on the RasPi as
indicated above.  Set the permissions as necessary, e.g.
sudo chmod +x /usr/lib/cgi-bin/mikesmon.cgi

2.Change the IP address in /var/www/mikesmon.html (around line 66) to that


of your RasPi.  You can use:
ifconfig

on your RasPi to find out it's IP address.


3.Say you have created a folder in your home directory called mon, and
copied the 3 files, mikesmon.c, myutils.h, and OIDs.h, to it.  Then to compile
and test the C program:
cd ~/mon
gcc -o mikesmon mikesmon.c
./mikesmon (to test it)

You should see something like:


H,raspberrypi,T,43312,CRU,7567,CRN,0,CRS,4582,CRI,1160245,TRF,377540,SP,80,NIO3,
448556,NOO3,390299,NIE3,0,NOE3,0,RT,5575,
Man-O-War Cay, 9 Jan 2015

Dale writes, making the point that if you are using (and want to monitor) an Ethernet network
(I was using a WiFi network), you should change the OIDs referencing the network counters in
the C code to have .2 as the last character, instead of .3 .  So, that's:
    "1.3.6.1.2.1.2.2.1.10.2" in place of "1.3.6.1.2.1.2.2.1.10.3"
    "1.3.6.1.2.1.2.2.1.14.2" in place of "1.3.6.1.2.1.2.2.1.14.3"
    "1.3.6.1.2.1.2.2.1.16.2" in place of "1.3.6.1.2.1.2.2.1.16.3"
    "1.3.6.1.2.1.2.2.1.20.2" in place of "1.3.6.1.2.1.2.2.1.20.3"
Try
    snmpwalk -v 1 -c public localhost 1.3.6.1.2.1.31.1.1.1
on your RasPi console to see your network interfaces and check the last character to use on the
network counters you are interested in.  On my RasPi (in Sep, 2013), the RasPi's response was:
    IF-MIB::ifName.1 = STRING: lo
    IF-MIB::ifName.2 = STRING: eth0
    IF-MIB::ifName.3 = STRING: wlan0
lo stands for loopback - ie. the RasPi, eth0 is the Ethernet network, and wlan0 is the WiFi network. 
Your results may vary depending on your network configuration (say, you have other network
adapters plugged in).  Thanks Dale.

4.Then move the executable to /usr/bin:


sudo mv mikesmon /usr/bin/
chmod +x /usr/bin/mikesmon

To test it from the CGI, invoke it using a browser (from anywhere on


your LAN with the RasPi on it):
http://192.168.0.103/cgi-bin/mikesmon.cgi (substituting the IP address of your
RasPi)

Again, you should see something like the following, now in your browser
window:
H,raspberrypi,T,44388,CRU,6268,CRN,0,CRS,4118,CRI,1009417,TRF,377276,SP,80,NIO3,
412078,NOO3,384715,NIE3,0,NOE3,0,RT,5747,

If you don't, look at the RasPi's web server logs in /var/log/apache2/.


5.Finally, invoke the UI from your browser:
http://192.168.0.103/mikesmon.html (substituting the IP address of your RasPi)

You should see something like the screen shot shown above.  If not, look
at the RasPi's web server logs in /var/log/apache2/.

To do
1.Make the HTTP request to the server asynchronous.  Right now, the UI
locks up while the Javascript code is making the request to the RasPi for
the next sample.  So, it is not able to respond to user input for several
seconds every sample interval - if the user clicks on the Start/Pause
button or tries to change the "Sample interval" from the drop-down list. 
There is an asynchronous way of making the request.. I just need to
implement it.
2.Shrink the size of the HTML file.  Probably can be done be redoing the
switch statements.

-- FIN --

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy