Areca Tekram SNMP-HowTo
Da ich bei der Installation des Subagents für SNMP den einen oder anderen Stolperstein gesehen hatte, habe ich mich dazu entschieden ein kurzes HowTo dafür zu schreiben.
Der zu dem Controller gehörige Server wurde mit einem FreeBSD 6.2-Release installiert.
Als SNMP-Agent nehme ich den net-snmp aus den Ports (nach einem CVS-Update), der einfachheit halber einmal komplett installiert, um zu überprüfen das SNMP auch wirklich läuft.
Nach erfolgreicher Installation sollte man sich nun von der Areca Seite www.areca.com.tw im Support-Bereich bei “Drivers/Utility” innerhalb der Tabelle “PCI RAID HBAs/External PCI RAID HBAs/ SAS RAID HBAs” nun für FreeBSD (und dann über den FTP-Tree weiter navigieren über “SNMP” -> “V2.0″ -> “arcsnmp-v2.0.zip”) die zusätzlichen Dateien für den SNMP Subagent besorgen und auffindbar auf seiner Maschine entpacken.
Die Entwickler von Areca hatten den grandiosen Plan, den Subagent in C++ zuschreiben – nach meinen Infos, und auch dem zu urteilen was in der Readme des Subagents drin steht, ist das eigentlich net-snmp Paket aber purer C-Code. Entsprechend müssen nun einige Anpassungen durchgeführt werden.
1. Folgenden Ordner anlegen: /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/agent/mibgroup/areca und den Inhalt aus dem ZIP-Archiv in das erstellte Verzeichniss kopieren.
2. Ich empfehle, um späteren Lib-Problemen vorzubeugen, die Datei libarclib32.* bzw. libarclib64.* aus dem arcsnmp ZIP-File an einen allgemein gültigen Ort für Librarys zu hinterlegen. Zum Beispiel in /usr/local/lib/
3. Ins Verzeichniss /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/ wechseln, sich aus der Datei “config.log” die configure-Zeile kopieren, überprüfen ob man alle Anführungszeichen gesetzt hat (z.B. bei –with-mib-modules oder –with-libs) und das “./configure” starten.
4. Ins Verzeichniss /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/agent/mibgroup/areca wechseln und “make” ausführen.
Jetzt wirds eklig
5. Die Datei /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/agent/Makefile in einem beliebigen Editor öffnen und nach “LOCAL_LIBS” suchen. Vor allen anderen vorhandenden Einträgen folgendes setzen “/PATH/TO/libarclib32.so -lstdc++”
Weiter gehts mit “LMIBOBJS” wo an den anfang ein “mibgroup/areca/areca.lo” kommt.
Zum Schluss noch “MIBOBJS” anpassen wo an den anfang “mibgroup/areca/areca.o” kommt.
6. In der Datei /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/agent/mibgroup/mib_module_includes.h an erste Stelle das C-Statement “#include “mibgroup/areca/areca.h”” setzen.
7. In der Datei /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/agent/mibgroup/mib_module_inits.h an erster Stelle den C-Code if (should_init(“areca”)) init_areca(); setzen.
8. In der Datei /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/apps/Makefile nach “LOCAL_LIBS” suchen und folgens vor allen anderen einträgen einhängen “/PATH/TO/libarclib32.so -lstdc++”
9. Nun im Verzeichniss /usr/ports/net-mgmt/net-snmp/work/net-snmp-${VERSION}/ gmake && gmake install ausführen. Wenn man alles richtig gemacht hat, sollte es auch keine Fehler geben. (gmake statt make, weil make irgendwann mekert)
10. Zum schluss die Datei arcsnmp.conf suchen, anpassen (Community String muss der String sein der über die Controller Konfigurations-Oberfläche eingestellt wurde) und nach /usr/local/share/snmp/arcsnmp.conf kopieren.
11. SNMP-Deamon neustarten und schon ist der Subagent eingebunden.
Man könnte nun natürlich, wie man es auch mit anderen SNMP-OIDs tun würde, einen SNMP-Walk laufen lassen um sich ausgeben zu lassen was da so alles drin steckt – Leider gibt es aber ein Problem, welches bei Areca auch bekannt ist, bei dem der SNMP-Deamon abstürzt sobald der SNMP-Walk anfängt auf die Areca OIDs zu stoßen.
Es bietet sich also an, sich einen MIB-Browser anzuschaffen, mit dem man per SNMPGet langsam die OIDs durchklickern kann, oder wer Consolen-besessen ist, kann dies auch über die CLI per snmpget machen.
Zur einfachheit habe ich hier mal die für mich Wichtig erscheinenden OIDs niedergeschrieben:
HDD-Temperaturen in Celsius:
HDD1: .1.3.6.1.4.1.18928.1.1.2.14.1.2.1
HDD2: .1.3.6.1.4.1.18928.1.1.2.14.1.2.2
HDD3: .1.3.6.1.4.1.18928.1.1.2.14.1.2.3
HDD4: .1.3.6.1.4.1.18928.1.1.2.14.1.2.4
HDD5: .1.3.6.1.4.1.18928.1.1.2.14.1.2.5
HDD6: .1.3.6.1.4.1.18928.1.1.2.14.1.2.6
HDD7: .1.3.6.1.4.1.18928.1.1.2.14.1.2.7
HDD8: .1.3.6.1.4.1.18928.1.1.2.14.1.2.8
HDD Status (RaidMember/HotSpare/o.ä.):
HDD1: .1.3.6.1.4.1.18928.1.1.3.1.1.9.1
HDD2: .1.3.6.1.4.1.18928.1.1.3.1.1.9.2
HDD3: .1.3.6.1.4.1.18928.1.1.3.1.1.9.3
HDD4: .1.3.6.1.4.1.18928.1.1.3.1.1.9.4
HDD5: .1.3.6.1.4.1.18928.1.1.3.1.1.9.5
HDD6: .1.3.6.1.4.1.18928.1.1.3.1.1.9.6
HDD7: .1.3.6.1.4.1.18928.1.1.3.1.1.9.7
HDD8: .1.3.6.1.4.1.18928.1.1.3.1.1.9.8
Es lässt sich noch wesentlich mehr per SNMP auslesen, z.B. auch Firmware-Version des Controllers oder Produkt-Daten der Festplatten, jedoch sind das in meinen Augen unwichtige Informationen. Wirklich wichtig sind eher die Dinge wie RAID-Status bzw. HDD-Status sowie die Temperaturen für das Nagios-Monitoring.
Die grund OID für den Areca-Controller lautet .1.3.6.1.4.1.18928.1.1.1.1.0
Wie gesagt, mit einem MIB-Browser kann man locker ein SNMPWalk durchführen, mit dem net-snmp snmpwalk-Tool aber leider nicht.
Ich hoffe dieses Howto hilft einigen weiter und lässt euch nicht über andere Stolpersteine fallen. Bei gelegenheit werde ich auch noch versuchen entsprechende Cacti-Templates bereitzustellen um die Temperaturen aufzeichnen zu lassen, sowie ein Nagios-Schnippsel um die Festplatten-Stati zu überprüfen.

Einträge (RSS)
Hi, ich bekomme beim make folgende fehlermeldung :
making all in /root/install/net-snmp-5.4.1/snmplib
make[1]: Entering directory `/root/install/net-snmp-5.4.1/snmplib’
make[1]: Leaving directory `/root/install/net-snmp-5.4.1/snmplib’
making all in /root/install/net-snmp-5.4.1/agent
make[1]: Entering directory `/root/install/net-snmp-5.4.1/agent’
making all in /root/install/net-snmp-5.4.1/agent/helpers
make[2]: Entering directory `/root/install/net-snmp-5.4.1/agent/helpers’
make[2]: Leaving directory `/root/install/net-snmp-5.4.1/agent/helpers’
making all in /root/install/net-snmp-5.4.1/agent/mibgroup
make[2]: Entering directory `/root/install/net-snmp-5.4.1/agent/mibgroup’
make[2]: Leaving directory `/root/install/net-snmp-5.4.1/agent/mibgroup’
/bin/sh ../libtool –mode=link gcc -g -O2 -Ulinux -Dlinux=linux -o snmpd snmpd.lo /usr/local/lib/libarclib32.so -lstdc++ -L../snmplib/.libs -L../snmplib -L./.libs -L./helpers/.libs -L./helpers libnetsnmpagent.la helpers/libnetsnmphelpers.la libnetsnmpmibs.la ../snmplib/libnetsnmp.la -Wl,-E -L/usr/local/lib /usr/lib/perl/5.8/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl/5.8/CORE -lperl -ldl -lm -lpthread -lc -lcrypt
gcc -g -O2 -Ulinux -Dlinux=linux -o .libs/snmpd .libs/snmpd.o /usr/local/lib/libarclib32.so -Wl,-E -L/root/install/net-snmp-5.4.1/agent/.libs -L/root/install/net-snmp-5.4.1/agent/helpers/.libs -L/root/install/net-snmp-5.4.1/snmplib/.libs -lstdc++ -L/root/install/net-snmp-5.4.1/snmplib -L/root/install/net-snmp-5.4.1/agent/helpers ./.libs/libnetsnmpagent.so helpers/.libs/libnetsnmphelpers.so ./.libs/libnetsnmpmibs.so /root/install/net-snmp-5.4.1/agent/helpers/.libs/libnetsnmphelpers.so /root/install/net-snmp-5.4.1/agent/.libs/libnetsnmpagent.so /root/install/net-snmp-5.4.1/snmplib/.libs/libnetsnmp.so ../snmplib/.libs/libnetsnmp.so -L/usr/local/lib /usr/lib/perl/5.8/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl/5.8/CORE -lperl -ldl -lm -lpthread -lc -lcrypt
/usr/bin/ld: cannot find -lperl
collect2: ld returned 1 exit status
make[1]: *** [snmpd] Error 1
make[1]: Leaving directory `/root/install/net-snmp-5.4.1/agent’
make: *** [subdirs] Error 1
Ich versuche das ganze auf einem ubuntu system
Gruß
Markus
Hallo Markus,
leider bin ich mit Ubuntu an sich nicht sehr vertraut…
Aber es scheint als wenn deinem System die Perl-Librarys fehlt.
Schau mal im Paket-Manager ob du Perl bzw. Perl-Development Pakete nachinstallieren kannst.
>
> /usr/bin/ld: cannot find -lperl
>
Nachdem du Perl bzw. Perl-Development installiert hast, sollte diese Fehlermeldung nicht mehr auftauchen.
Gruß
Money