Il PiKVM, una soluzione open-source per la gestione remota dei server basata su Raspberry Pi, offre una vasta gamma di funzionalità per l’amministrazione dei sistemi. Tra queste, l’integrazione con il protocollo SNMP (Simple Network Management Protocol) è fondamentale per monitorare e gestire le risorse del dispositivo in modo centralizzato e scalabile.
In questa guida, ti mostreremo come installare e configurare il demone SNMP su un Raspberry Pi 4 configurato come PiKVM. Scoprirai come sfruttare questo protocollo per raccogliere dati di sistema, monitorare lo stato dell’hardware e integrare PiKVM con sistemi di monitoraggio avanzati come LibreNMS, Zabbix o Nagios. Seguendo i passaggi descritti, sarai in grado di abilitare il supporto SNMP in modo rapido ed efficiente.
PREREQUISITI
ABILITAZIONE SCRITTURA DEL FILESYSTEM
Abilitare la scrittura del filesystem con il comando:
0 |
rw |
Dovremmo visualizzare il seguente output:
0
1
2
3
|
+ mount -o remount,rw /
+ mount -o remount,rw /boot
+ set +x
=== PiKVM is in Read-Write mode ===
|
INSTALLAZIONE LIBRERIA PCRE
Installare la libreria PCRE con il comando:
0 |
pacman -S pcre
|
INSTALLAZIONE DEL DEMONE SNMPD
Installare net-snmp e nano con il comando:
0 |
pacman -S net-snmp nano
|
Dovremmo visualizzare il seguente output:
P
0
1
2
3
4
5
6
|
ackages (3) lm_sensors-1:3.6.0.r41.g31d1f125-3 nano-8.2-1 net-snmp-5.9.4-5
Total Download Size: 1.69 MiB
Total Installed Size: 10.27 MiB
Net Upgrade Size: 7.71 MiB
:: Proceed with installation? [Y/n]
|
Premere Y per proseguire con l’installazione
A questo punto creare il file di configurazione snmpd.conf con il comando:
0 |
nano /etc/snmp/snmpd.conf
|
Quindi incollare all’interno del file il seguente listato:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#Listen on all interfaces, IPv4 only
agentAddress udp:161
#ACCESS CONTROL
view all included .1.3.6.1.2.1.1
view all included .1.3.6.1.2.1.25.1
#SNMP v2 (Read only) with community "public" restricted to Network
#Please change IP 192.168.1.0/24 to your Network.
rocommunity public 192.168.1.0/24
sysLocation YourCity
sysContact YourName
#Run as root
agentuser root
#Add commands
pass .1.3.6.1.2.1.25.1.8 /bin/sh /opt/snmp-cpu-temp.sh
|
ATTENZIONE: modificare public con la propria community SNMP, al posto di 192.168.1.0/24 inserire la propria rete, al posto di YourCity inserire la propria città e al posto di YourName inserire il contatto.
Salvare e chiudere il file di configurazione
Editare il file snmp-cpu-temp.sh con il comando:
0 |
nano /opt/snmp-cpu-temp.sh
|
Quindi incollare all’interno del file il seguente listato:
0
1
2
3
4
5
6
7
|
#!/bin/bash
if [ "$1" = "-g" ]
then
echo .1.3.6.1.2.1.25.1.8
echo gauge
echo `cat /sys/class/thermal/thermal_zone0/temp | sed 's/\(.\)..$/.\1/'`
fi
exit 0
|
Salvare e chiudere il file di configurazione.
Rendere eseguibile il file snmp-cpu-temp.sh con il comando:
0 |
chmod +x /opt/snmp-cpu-temp.sh
|
Poiché PiKVM funziona in modalità di sola lettura, lo script fallirà. Collegare il file di cache alla cartella tmp con i seguenti comandi:
0 |
rm /var/net-snmp/.snmp-exec-cache
|
ATTENZIONE: non è detto che questo file esista quindi il comando potrebbe andare in errore
Quindi eseguire il comando:
0 |
ln -s /tmp/.snmp-exec-cache /var/net-snmp/.snmp-exec-cache
|
MODIFICA DEL DEMONE SNMPD
A questo punto editare il demone snmpd.service con il comando:
0 |
vi /etc/systemd/system/snmpd.service
|
Cancellare tutto il contenuto quindi inserire il seguente listato:
0
1
2
3
4
5
6
7
8
9
10
|
[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon
After=network.target
[Service]
PIDFile=/run/snmpd.pid
ExecStart=/usr/bin/snmpd -C -c /etc/snmp/snmpd.conf -p /run/snmpd.pid -L
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
|
Salvare e chiudere il file di configurazione
ABILITAZIONE E AVVIO DEL SERVIZIO SNMP
Fare un reload con il comando:
0 |
systemctl daemon-reload
|
Avviare il demone SNMPD con il comando:
0 |
systemctl start snmpd.service
|
Abilitare il demone SNMPD con il comando:
0 |
systemctl enable snmpd.service
|
Dovremmo visualizzare il seguente output:
0 |
Created symlink '/etc/systemd/system/multi-user.target.wants/snmpd.service' -> '/usr/lib/systemd/system/snmpd.service'.
|
CHECK DELLO STATO DEL SERVIZIO SNMP
Verificare lo stato del servizio SNMPD con il comando:
0 |
systemctl status snmpd.service
|
Se è tutto OK dovremmo visualizzare il seguente output:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
* snmpd.service - Simple Network Management Protocol (SNMP) Daemon
Loaded: loaded (/etc/systemd/system/snmpd.service; enabled; preset: disabled)
Active: active (running) since Mon 2025-01-27 16:04:29 UTC; 9s ago
Invocation: e95164f8d80b43aeb9df4c8eda8b1484
Process: 2508 ExecStart=/usr/bin/snmpd -C -c /etc/snmp/snmpd.conf -p /run/snmpd.pid -L (code=exited, status=0/SUC>
Main PID: 2510 (snmpd)
Tasks: 1 (limit: 4915)
CPU: 103ms
CGroup: /system.slice/snmpd.service
`-2510 /usr/bin/snmpd -C -c /etc/snmp/snmpd.conf -p /run/snmpd.pid -L
Jan 27 16:04:28 pikvm systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon...
Jan 27 16:04:29 pikvm systemd[1]: snmpd.service: Supervising process 2510 which is not our child. We'll most likely n>
Jan 27 16:04:29 pikvm systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon.
Jan 27 16:04:29 pikvm snmpd[2510]: NET-SNMP version 5.9.4.pre2
log file: ystemctl status snmpd.service
|
Verificare se il servizio è in ascolto sulla porta corretta con il comando:
0 |
ss -lnup
|
Se è tutto OK dovremmo visualizzare all’interno del output la seguente riga:
0 |
UNCONN 0 0 0.0.0.0:161 0.0.0.0:* users:(("snmpd",pid=2510,fd=6))
|
Abilitare il read only mode in PiKVM con il comando:
0 |
ro |
A questo punto sarà possibile monitorare il PiKVM tramite SNMP con un qualsiasi tool di monitoraggio.
0 commenti