Wir wissen, dass Cacti SNMP verwendet, um Daten abzufragen und zu sammeln. Soweit ich weiß, verwendet der SNMP-Manager die Objekt-ID (OID), um ein bestimmtes Objekt abzufragen und die Antwort von einem SNMP-Agenten bezüglich dieser OID zu erhalten.
Was mich verwirrt, ist, wie Cacti beispielsweise perl
oder python
Skripte zum Sammeln von Daten verwendet. Verwendet es dann SNMP? Wenn ja, wie funktioniert das Protokoll dann?
Antwort1
Mit Cacti
sind Sie nicht nur auf SNMP-Abfragen beschränkt.
Sie können jedes beliebige Skript als Dateneingabemethode ausführen. Es kann Perl
, PHP
, Python
, Bash
oder was auch immer sein. Wählen Sie einfach den Eingabetyp Skript/Befehl :
Ihr Skript muss mindestens einen Wert ausgeben. Dieser Wert wird an ein Ausgabefeld innerhalb des Skripts angehängt Cacti
und später zum Erstellen des endgültigen Diagramms verwendet.
Wenn Sie nur ein Ausgabefeld benötigen, drucken Sie den Wert einfach so wie er ist (z. B. 12
), ohne alles andere (z . B. ms
, %
):
#!/bin/sh
ping -c1 host | grep rtt | cut -d"=" -f2 | cut -d"/" -f2
Falls Sie mehrere Werte abrufen müssen, muss das Ausgabeformat folgendes sein:
field1:value1 field2:value2 field3:value3
Dann wird jedem Feld ein Ausgabefeld zugeordnet.
#!/bin/sh
result=$(ping -c1 host | grep rtt | cut -d"=" -f2)
min=$(echo $result | cut -d"/" -f1)
avg=$(echo $result | cut -d"/" -f2)
max=$(echo $result | cut -d"/" -f3)
echo "min:$min avg:$avg max:$max"
Weitere Erläuterungen und Beispiele finden Sie hier:
- http://www.cacti.net/downloads/docs/html/making_scripts_work_with_cacti.html
- http://forums.cacti.net/viewtopic.php?t=11288(wird vom Autor nicht mehr gepflegt, ist aber noch immer nicht veraltet).