MRTG-Alternative? (Daten sammeln + anzeigen mit rrdtool und collectd)

Hallo Markus,
Danke für deinen Praxistipp. Ich habe beim Sourcecode (nicht Teil von ds26-15.2) collectd so gepatched, dass die Archive auch 5050-kompatibel werden, indem ich die min/max nicht abspeichere, die rra optimiere (1h, 30h, 30d, 400d) und die Auflösung mit 600 Punkten etwas gröber halte. Jeder erfasste Messwert beansprucht so noch einige 100kbyte, was auch bei einem Dutzend noch ramfs-verträglich ist. Da wir die Version 4.x von collectd haben, braucht's den Patch im Code gar nicht mehr und der gleiche Effekt müsste mit einem entsprechenden Eintrag im conf-file erziehlt werden können.

Auf diese Art würden die Archive für alle Messwerte immer erstellt. Im GUI wird nur gewählt, was zur Anzeige kommt, evtl. mit welcher Zeitachse. Für die Hard-Core-Messfreaks bleiben das collectd.conf (aus dem Flash) sowie die Skripts der cronjobs, um zusätzliche Messwerte abzulegen, die dann per GUI zur Anzeige selektiert werden können, wenn die rrds im gleichen Verzeichnis (typ. /var/lib/collectd) abgelegt werden.

Zum Ablegen auf einem USB-Stick oder smbfs hab ich mir noch keine Gedanken bezüglich GUI gemacht.

Gruss Trick
 
Wie sind die ADSL-Messwerte abrufbar?

Hat jemand schon einen direkten Zugang zu den ADSL-Performace-Daten (noise marging, signal to noise ratio, ATM, etc.) gefunden? Ich könnte die Daten aus via http://fritz.box/cgi-bin/webcm?getpage= per sed und awk extrahieren, aber das wäre wirklich die letzte Zuflucht. Den Code vom CGI webcm durchgehen und gleich als C Plugin bei collectd einpflegen, wäre sicher die beste Lösung, aber beim Rumprobieren stünde ein shell script höher in meiner Gunst. Auf der 7170 bekomm' ich gerade noch
Code:
/ $ cat /proc/avalanche/avsar_modem_stats
[General]
        Trained Mode:   3
        Status:         5
        Annex:          2
        AVM firmware:   1
        US Connection Rate:   608       DS Connection Rate:  5632
/ $
während sich andere Systeme (auch mit dem TI Chipset) geradezu in Geschwätzigkeit üben (siehe File). Einige Werte, wie den Rauschabstand (SNR), könnte ich aus den Einzelwerten der Subcarrier berechnen, aber die Sache riecht nach Zyklenverschwendung. Die Sache ist nicht furchtbar wichtig und schon gar nicht dringend, da ich eh noch mit der viel rudimentäreren Einbettung von collectd und rrdtool ins Web-GUI kämpfe. Trick
 

Anhänge

  • NetgearDG834.txt
    1.8 KB · Aufrufe: 12
Unter /proc/avalanche gibt es ja noch mehr abrufbare Informationen, die Du auswerten kannst, aber ich nehme an, dort hast Du alles abgegrast. Es bleibt immer die Möglichkeit, webcm direkt zu fragen, wie es der Webserver eben auch macht. Wie findest Du heraus, wonach Du fragen mußt?

Schritt 1: die Stelle finden, wo in den Web-Templates die gesuchte Info abgefragt wird. Dazu bemühst Du grep, entweder direkt auf der Box oder unter build/modified/filesystem. Im Beispiel mache ich es mal auf der Box:
Code:
# Wo ist die Zeichenkette?
[B]$ find /usr/www -type f | xargs grep "Signal/Rauschtoleranz"[/B]
/usr/www/all/html/de/internet/[COLOR="Red"]adsl.inc[/COLOR]:<? setvariable var:[COLOR="Blue"]Text21[/COLOR] 'Signal/Rauschtoleranz' ?>

# Wo wird die Zeichenkette verwendet?
[B]$ find /usr/www -type f | xargs grep "[COLOR="red"]adsl.inc[/COLOR]"[/B]
/usr/www/all/html/de/internet/adsl.html:<? include ../html/$var:lang/internet/adsl.inc ?>

# Verwendung der Zeichenkette inkl. Kontext anschauen
[B]$ grep -C 5 "[COLOR="blue"]Text21[/COLOR]" /usr/www/all/html/de/internet/adsl.html[/B]
    <td class="c2"></td>
    <td class="c3"></td>
    <td class="c3"></td>
</tr>
<tr>
    <td class="c1"><? echo $var:Text21 ?></td>
    <td class="c2"><? echo $var:Text22 ?></td>
    <td class="c3"><? query sar:status/ds_margin ?></td>
    <td class="c3"><? query sar:status/us_margin ?></td>
</tr>
<tr>

Wir wissen nun also, daß wir webcm nach sar:status/ds_margin fragen müssen, wenn wir die Signal/Rauschtoleranz für den Downstream wissen wollen. Das ist leicht mit wget hinzukriegen, man kann z.B. abgucken bei meinem Skript /usr/bin/get_ip oder in anderen Quellen hier im Forum:
Code:
# Web-Paßwort herausfinden, wir brauchen es zum Login, falls aktiv
local pw=$(
    /bin/allcfgconv -C ar7 -c -o - \
        | sed -ne '/^webui[[:space:]]*{/,/^}/{/=/{s/[[:space:]]*=[[:space:]]*/=/;s/^[[:space:]]*//;p}}' \
        | grep '^password=' \
        | cut -d '"' -f2
)

# Danach wollen wir fragen
local request="sar:status/ds_margin"

# Information abfragen
export POST_DATA="getpage=/usr/www/all/html/query.txt&login:command/password=$pw&var:cnt=1&var:n0=$request"
result=$(
    echo -n "$POST_DATA" | \
        REQUEST_METHOD="POST" \
        REMOTE_ADDR="127.0.0.1" \
        CONTENT_TYPE="application/x-www-form-urlencoded" \
        CONTENT_LENGTH=${#POST_DATA} \
        /usr/www/html/cgi-bin/webcm | sed -e '1,/^$/d;$d'
)

# Ergebnis testweise ausgeben
echo $result

Das Ganze sieht ohne Login (wenn das Web-PW deaktiviert wurde) viel einfacher aus, und manchmal klappt es auch mit einem GET statt einem POST, aber bei mir nicht 100% zuverlässig, daher lieber etwas aufwendiger, dafür sicherer, genau wie in get_ip. Daraus kannst Du Dir jetzt Dein eigenes Skript basteln.
 
Zuletzt bearbeitet:
libart und libpng

wie N!ghtY am 14.08.2007 schon bemerkt hat, haben wir bei den libs zwei Probleme:
Die libpng produziert einen nicht referenzierten Link
Code:
/usr/lib $ ls -l libpng*
lrwxrwxrwx    1 root     root           11 Sep  1 14:25 libpng.so -> libpng12.so
lrwxrwxrwx    1 root     root           16 Sep  1 14:25 libpng.so.3 -> libpng.so.3.10.0
-rwxr-xr-x    1 root     root       233242 Sep  1 12:09 libpng.so.3.10.0
und die libart glänzt durch Abwesenheit
Code:
/usr/lib $ ls -l libart*
ls: libart*: No such file or directory
.
<OT>Ich bin erst gestern dazu gekommen, die ds26-15.2 in vivo auszutesten, da ich unter vmware die letzten zwei Wochen nur Images erzeugt habe, die beim Upload mit "Prüfsummenfehler (Kernel)" stoppten. Sieben Recovery-Durchläufe später :bluescre: arbeite ich wieder native auf meinem uralt Debian-System und alles funzt.</OT>.
Vom Config.in her ist die libart drin und wird auch brav erstellt
Code:
# ls -l /ds26-15.2/root/usr/lib libart*
lrwxrwxrwx 1 nn user     23 2007-09-01 12:14 libart_lgpl_2.so -> libart_lgpl_2.so.2.3.19
lrwxrwxrwx 1 nn user     23 2007-09-01 12:14 libart_lgpl_2.so.2 -> libart_lgpl_2.so.2.3.19
-rwxr-xr-x 1 nn user 141208 2007-09-01 12:14 libart_lgpl_2.so.2.3.19
Bin ich der einzige, dem die libart im Image fehlt? Wie sieht es bei euch aus?
Das Problem mit libpng verfolgt mich seit jeher. Der Grund blieb mir schleierhaft, doch ein kleiner chirurgischer Eingriff, ein händisches Umbenennen, löst das Problem. Falls niemand den Ursache erkennt, wäre ein kleiner Patch für das Paket angesagt. Trick

@kriegaex: Wow! Ohne Deinen Hinweis hätte ich einen groben Murks veranstaltet und jede Menge Extrarunden gedreht; falls ich's je geschafft hätte. Dann hoffe ich auf schlechtes Wetter, damit die Sache bei mir vorwärts kommt. Thx
 
Code:
--- trunk/make/libs/Makefile.in	2007/08/03 21:37:05	951
+++ trunk/make/libs/Makefile.in	2007/08/15 08:01:17	983
@@ -69,11 +69,11 @@
 LIBS+=usb
 endif
 
-ifeq ($(strip $(DS_LIB_libpng)),y)
+ifeq ($(strip $(DS_LIB_libpng12)),y)
 LIBS+=libpng
 endif
 
-ifeq ($(strip $(DS_LIB_libart)),y)
+ifeq ($(strip $(DS_LIB_libart_lgpl_2)),y)
 LIBS+=libart
 endif
Code:
--- trunk/make/libs/Config.in	2007/08/03 21:37:05	951
+++ trunk/make/libs/Config.in	2007/08/15 08:01:17	983
@@ -394,7 +394,7 @@
 
 		In DS-Mod, e.g ltrace depends on libelf.
 
-config DS_LIB_libpng
+config DS_LIB_libpng12
 	bool "libpng (libpng.so)"
 	select DS_LIB_libz
 	default n
@@ -408,7 +408,7 @@
 		
 		In DS-Mod, rrdtool depends on libpng.
 
-config DS_LIB_libart
+config DS_LIB_libart_lgpl_2
 	bool "libart (libart.so)"
 	default n
Besser?

MfG Oliver
help
 
hat leider wieder ein Weilchen gedauert, bis ich den Tipp überprüfen konnte. Wenn ich die beiden Files anpasse, kommt nach "make menuconfig"
Code:
cp: cannot stat `.defconfig': No such file or directory
make: [tools/config/mconf] Error 1 (ignored)
make/rrdtool/Config.in:4:warning: 'select' used by config symbol 'DS_PACKAGE_RRDTOOL' refer to undefined symbol 'DS_LIB_libpng'
make/rrdtool/Config.in:5:warning: 'select' used by config symbol 'DS_PACKAGE_RRDTOOL' refer to undefined symbol 'DS_LIB_libart'
Müssen die *.so/*.o den gleichen Namen tragen, wie die Symbole? Danke für ein paar erleuchtende Tipps von den Gurus. Thx Trick
 
Okay.
Weiter gehts. ;-)
Code:
--- trunk/make/rrdtool/Config.in    2007/07/22 18:38:11    891
+++ trunk/make/rrdtool/Config.in    2007/08/15 08:01:17    983
@@ -1,8 +1,8 @@
 config DS_PACKAGE_RRDTOOL
     bool "RRDtool 1.2.23"
     select DS_LIB_libfreetype
-    select DS_LIB_libpng
-    select DS_LIB_libart
+    select DS_LIB_libpng12
+    select DS_LIB_libart_lgpl_2
     select DS_LIB_libz
     default n
     help
MfG Oliver
 
RRD zeichnet ADSL-Traffic auf!

Danke Oliver. Erste Hürde ohne Motzen vom System überstanden. Das Kompilieren braucht jetzt ein paar Stunden auf dem PII.

---- Stunden später:

Cool, es funzt!:rock: Das Timing mit dem neuen *.39-Image war nicht gerade hilfreich. Herzlichen Dank :rosen: den Helfern!

Also für alle grossen Buben (wie mich), die nicht warten können, bis collectd die Daten brav sammelt, kommt die ultimative "quick 'n dirty" Variante:

RRD generieren
Code:
#!/bin/ash
/usr/bin/rrdtool create /var/traffic.rrd --step 10 \
 DS:in:DERIVE:600:0:4294967295 \
 DS:out:DERIVE:600:0:4294967295 \
 RRA:AVERAGE:0.5:1:1200 \
 RRA:AVERAGE:0.5:12:1200
RRD updaten
Code:
#!/bin/ash
   IN=`/sbin/ifconfig dsl | /bin/grep bytes | /usr/bin/cut -d":" -f2 | /usr/bin/cut -d" " -f1`
OUT=`/sbin/ifconfig dsl | /bin/grep bytes | /usr/bin/cut -d":" -f3 | /usr/bin/cut -d" " -f1`
/usr/bin/rrdtool update /var/traffic.rrd -t in:out N:$IN:$OUT
... alle paar Sekunden wiederholen, und das ein paar Minuten lang ...
Grafik erzeugen
Code:
#!/bin/ash
 /usr/bin/rrdtool graph /var/traffic.png \
  --start -3600s \
  DEF:in=/var/traffic.rrd:in:AVERAGE \
  DEF:out=/var/traffic.rrd:out:AVERAGE \
  CDEF:out_neg=out,-1,* \
  AREA:in#7aafff:incoming \
  AREA:out_neg#4169E1:outgoing
Grafik bestaunen!
 

Anhänge

  • traffic.png
    traffic.png
    12.1 KB · Aufrufe: 101
Zuletzt bearbeitet:
Hi,
es kann sein, dass es irgendwann bei den Angaben im ifconfig es zu einem Überlauf kommt (sprich wieder von 0 beginnt). Dies könnte dann nicht nur ein Peak in der Grafik ergeben, was ja noch verschmerzlich wäre, sondern durch Skalierung oder Mittlung könnte die gesamte Grafik darunter leiden. Dies nur als Hinweis.
Gruß Markus
 
Hallo Markus,

bei Verwendung von DERIVE (in DS:in: DERIVE:600:0:4294967295) sollte die Gefahr völlig gebannt sein. Wenn du beobachtest, dass ein Peak alle 4GB auftritt, wäre COUNTER (in DS:in:COUNTER:600:0:4294967295) angesagt.

Dein Punkt mit der Skalierung ist in jedem Fall wertvoll. Ich begrenze meist die Werte auf ein sinnvolles Maximum (z.B. 5Mbyte/s für ADSL). Nichts Ärgerliches, als ein falscher Messpunkt in der Jahresgrafik, der die Autoskalierung versaut. Gruss Trick
 
Zuletzt bearbeitet:
schön wäre wenn snmpd laufen würde, dann könnte man die Fritzbox direkt mit in die Netzwerküberwachung nehemen, z.B. mti Cacti
 
Von der Grösse und Rechenpower her liesse sich snmpd gut portieren. Es braucht halt auch ein wenig Handarbeit, die speziellen Messwerte (wie Rauschabstand) in OIDs der privaten MIB einzucodieren. Ich benutze im Moment cacti mit einen ssh-Skript. Allerdings habe ich auch schon inspiriertere Lösungen mit UPnP gesehen.

Wenn wir hier etwas weiter sind, lassen sich die Skripte for snmpd verwenden. Gruss Trick
 
Ich möchte nur dezent anmerken, dass ein snmp-Daemon für die Fritzbox im dsmod bereits verfügbar ist. Es gibt zwar im Bereich der Traffic-Auswertung der DSL-Strecke "Messfehler", aber alle sonstigen aufrufbaren Daten erscheinen plausibel.
 
@derheimi

danke werd ich mal probieren

@Trick
Cacti hab ich auch im Einsatz, ich werd mal schauen was die FB so rausrückt :D
 
Ich hab' rrdtool soweit auf der Box, dass es (vermutlich) läuft, jedenfalls lässt es sich ohne Fehler aufrufen.
Trick schrieb:
Grafik bestaunen!
Schön! :D

Aber: :?: In welchem Verzeichnis muss ich die Grafik erzeugen, um sie dann im Browser über den Webserver der FB aufrufen zu können? Welcher URL wäre das dann?

Hier noch ein paar Links, die mir geholfen haben, mich in das Thema RRD und Generierung der Statistiken über schripte einzulesen:
http://martybugs.net/linux/rrdtool/traffic.cgi
http://dingetje.homeip.net/rrdtool/howto.html

Udo
 
@Udo: Die Einbindung in das Webinterface ist noch am Tun. Ich benütze dnsmasq als Vorlage, allerdings mit minimaler User-Konfiguration.

Aber: Ich möchte nicht alle Messwerte per Shell-Skript einlesen, da dieser Prozess Resourcen verschwendet und kurzzeitige Maximima (v.a. bei CPU und Speicherauslastung) nicht vernünftig erfassen kann. Nur für die spezifischen FbF-Parameter bereite ich Skipte vor. Diese Werte (z.B. ADSL-Verbingungsgeschwindigkeit und Rauschabstände) sind aber eh nicht so zeitkritisch und das Skript könnte durchaus nur im 5-Minuten-Intervall laufen. Collectd ist eigentlich eine feine Sache für die Erfassung "heisser" Daten im 10-Sekunden-Takt. Seit 2 Wochen versuche ich collectd dazu zu bringen, Daten zu schreiben. Bisher weigert sich das Programm, Dateien jedwelcher Art zu erzeugen. Nicht mal ein müdes Log-File liegt drin (mit beigefügtem minimalem collectd.conf). Wenn ich mit collectd am Ziel bin, kommt das Web-Interface dran.
Gruss Trick
 

Anhänge

  • collectd.conf.txt
    1.9 KB · Aufrufe: 19
Endlich hab' ich auch rrdtool und collectd auf der Box. Mit rrdtool und scripten kann ich graphen erzeugen, nur collectd tut absolut nix.:confused:

Ich muss mal gucken, wie strace geht ...

Udo
 
Ok, strace zu finden dauerte etwas, ich hab's von hier:
wget http://www.spblinux.de/fbox/26/strace

und das kommt dabei raus:

Code:
$ [B]strace collectd -f -C /var/mod/etc/collectd.conf[/B]
execve("/usr/bin/collectd", ["collectd", "-f", "-C", "/var/mod/etc/collectd.conf"], [/* 119 vars */]) = 0
svr4_syscall()                          = -1 ERRNO_4090 (Unknown error 4090)
stat("/etc/ld.so.cache", 0x7fcfff68)    = -1 ENOENT (No such file or directory)
open("/mod/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libpthread.so.0", O_RDONLY)  = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0P3\0\000"..., 4096) = 4096
old_mmap(NULL, 143360, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabd000
old_mmap(0x2aabd000, 50404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabd000
old_mmap(0x2aad9000, 19328, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xc000) = 0x2aad9000
old_mmap(0x2aade000, 7792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2aade000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
open("/mod/lib/libdl.so.0", O_RDONLY)   = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.0", O_RDONLY)       = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\200\7"..., 4096) = 4096
old_mmap(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aae0000
old_mmap(0x2aae0000, 6336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aae0000
old_mmap(0x2aaf1000, 2408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1000) = 0x2aaf1000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
open("/mod/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\320\30"..., 4096) = 4096
old_mmap(NULL, 122880, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaf2000
old_mmap(0x2aaf2000, 53940, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aaf2000
old_mmap(0x2ab0f000, 1084, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd000) = 0x2ab0f000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0 \266\0"..., 4096) = 4096
old_mmap(NULL, 446464, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab10000
old_mmap(0x2ab10000, 354532, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ab10000
old_mmap(0x2ab77000, 4384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x57000) = 0x2ab77000
old_mmap(0x2ab79000, 15016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab79000
close(3)                                = 0
mprotect(0x2ab10000, 354532, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
munmap(0x2aaae000, 4096)                = 0
mprotect(0x2ab10000, 354532, PROT_READ|PROT_EXEC) = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
getpid()                                = 3371
getrlimit(RLIMIT_STACK, {rlim_cur=2040*1024, rlim_max=1073741823}) = 0
rt_sigaction(SIGRT_0, {SIG_DFL}, NULL, 16) = 0
rt_sigaction(SIGRT_1, {SIG_DFL}, NULL, 16) = 0
rt_sigaction(SIGRT_2, {SIG_DFL}, NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, [RT_0], NULL, 16) = 0
rt_sigprocmask(SIG_UNBLOCK, [RT_1], NULL, 16) = 0
brk(0)                                  = 0x425000
brk(0x426000)                           = 0x426000
open("/var/mod/etc/collectd.conf", O_RDONLY) = 3
ioctl(3, TIOCNXCL, 0x7fcfea50)          = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x427000)                           = 0x427000
brk(0x42b000)                           = 0x42b000
ioctl(3, TIOCNXCL, 0x7fcfd4e0)          = -1 ENOTTY (Inappropriate ioctl for device)
read(3, "Mode Local\n\nInterval 10\n\nLoadPlu"..., 8192) = 280
read(3, "", 7912)                       = 0
ioctl(3, TIOCNXCL, 0x7fcfd4e0)          = -1 ENOTTY (Inappropriate ioctl for device)
close(3)                                = 0
stat("/usr/lib/collectd", 0x7fcfe0d0)   = -1 ENOENT (No such file or directory)
stat("/usr/lib/collectd", 0x7fcfe0d0)   = -1 ENOENT (No such file or directory)
stat("/usr/lib/collectd", 0x7fcfe0d0)   = -1 ENOENT (No such file or directory)
stat("/usr/lib/collectd", 0x7fcfe0d0)   = -1 ENOENT (No such file or directory)
stat("/usr/lib/collectd", 0x7fcfe0d0)   = -1 ENOENT (No such file or directory)
chdir("/var/lib/collectd")              = 0
uname({sys="Linux", node="fritz.local", ...}) = 0
rt_sigaction(SIGCHLD, {SIG_DFL}, NULL, 16) = 0
rt_sigaction(SIGINT, {SIG_DFL}, NULL, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL}, NULL, 16) = 0
open("/usr/lib/collectd/types.db", O_RDONLY) = -1 ENOENT (No such file or directory)
gettimeofday({1191618580, 987168}, NULL) = 0
gettimeofday({1191618580, 989699}, NULL) = 0
nanosleep({9, 997469000}, {9, 997469000}) = 0
gettimeofday({1191618590, 996342}, NULL) = 0
gettimeofday({1191618590, 999123}, NULL) = 0
nanosleep({9, 997219000}, {9, 997219000}) = 0
gettimeofday({1191618601, 7429}, NULL)  = 0
gettimeofday({1191618601, 9122}, NULL)  = 0
nanosleep({9, 998307000},  <unfinished ...>
(das geht dann immer so weiter, alle 10 Sek.)

Auf meinem Debian, wo ich collectd als Paket isntalliert habe und es problemlos läuft, liegen in /usr/lib/collectd die Plugins.

Kann es sein das die hier einfach fehlen?

Udo
 
Nebenbei: Du weißt schon, daß strace ein normales ds26-Paket ist (unter "Debug Helpers")? ;-) Dort gibt es auch lsof, ltrace, ... Wichtig bei strace ist allerdings, daß es Forks nur verfolgen kann, wenn auch "Replace Kernel" ausgewählt ist, sonst fehlen die Infos zu abhängigeen Prozessen im Log.
 
Ich habe jetzt noch folgendes versucht:
  1. Datei types.db aus den collectd-Sourcen eingebunden.
    Resultat: collectd liest den Inhalt der Datei ein. Danach geht's aber auch nicht anders weiter als bisher: Schleife alle 10 Sek. in der Nix passiert.
  2. Plugins aus dem collectd-mipsel-Paket (http://collectd.org/files/ipkg/collectd_4.1.0-1_mipsel.ipk) eingebunden.
    Resultat: In der Schleife finden nun tatsächlich Aktionen statt, ich kann aber nicht erkennen, dass er versucht, rrd-Dateien anzulegen.
Ich will jetzt die langen strace-Ausgaben hier nicht posten, kann sie aber gerne auf Anfrage mailen.

Meine Vermutungen:
  • Das Mipsel-Paket von der collectd-Seite ist wahrscheinlich für den 2.6-er Kernel (weil das collectd selber mit der ulibC-Fehlermeldung scheitert).
  • Die Plugins werden offenbar in irgendeiner Form benötigt.
  • Das rrd-Plugin kann nicht angesprochen werden.
Eine strace-Meldung wiederholt sich immer wieder:
ioctl(3, TIOCNXCL, 0x7........) = -1 ENOTTY (Inappropriate ioctl for device)

Mir fehlen die Kenntnisse (und im Moment auch die Zeit) um noch tiefer in die Materie einzudringen. Ich warte erstmal auf Rückmeldung der Entwickler hier im Forum.

Udo
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.