Sie sind nicht angemeldet.

1

27.10.2004, 11:57

[syslog-ng] Logeinträge empfangen

Hi!

Ich hab es mal hier eingetragen, da es was mit Netzwerk zu tun hat.

Also, ich hab mein syslog-ng so konfiguriert, das ich per Netzwerk die Logs diverser Rechner und Router empfangen kann, zwecks zentraler Auswertung. Jetzt möcht ich noch eine Webcam einbinden. Hier ist jetzt das Problem: Während die anderen Komponenten ihre Logs an UDP 514 (standart syslog) senden, kann die Webcam nur an TCP senden. Eigentlich kein Problem, halt schnell eine Quelle gemacht:

Zitat

source cam { tcp( ip("0.0.0.0") port(5555) max-connections(10));};


Da müsste ja jetzt eigentlich was ankommen, aber die einzigsten Log-Meldungen die ich bekomme ist:

Zitat

AF_INET client connected


und ein

Zitat

AF_INET client dropped connection


Wenn ich den Netzverkehr mit ethereal mitschneide, sehe ich den Textstrem, den ich mitversende. Aber er wird im Logfile halt nicht eingetragen.
Hat da jemand schon erfahrung gemacht?

Danke schonmal für die Hilfe!

Bitspyer
Der Weg zur Dunklen Seite... Schneller er ist, verführerischer, leichter.

This is a linux country. On a quiet night, you can hear windows reboot...

2

27.10.2004, 12:18

Na ja, die Angabe der source alleine reicht nicht aus. Das was Du siehst ist nur die Verbindungsbestätigung. Mit der Angabe einer Log-Regel wird syslog-ng auch zu Dir loggen, z.B. mit:

[code:1]filter warning { level(warn, err, crit); };
destination console_warning { file("/dev/tty11"); };
log { source(cam); filter(warning); destination(console_warning); };[/code:1]
Damit kommen alle Warnungen, Errors und Criticals, die über Port 5555 hereinkommen, auf /dev/pty11 heraus.

Viel Spaß

3

27.10.2004, 12:23

OK, war etwas verkürzt, was ich da wiedergegeben habe.

Wichtig ist allerdings, das die Webcam ein Standalonegerät ist und wohl auch keine syslog-ng besitzt! Es ist eine Überwachungskamera, die u.a. per TCP auch Nachrichten versenden kann.
Sie hat einen kleinen Webserver, über dem man ein Livebild betrachten kann.
Ich möchte halt jetzt gern eine Message an den Syslog Rechner senden um entsprechende Einträge zu erzeugen, wenn zB. jemand den Raum betritt, den die Cam überwacht.

Wie gesagt, die CAM kann nur per TCP nachrichten versenden.

Bitspyer
Der Weg zur Dunklen Seite... Schneller er ist, verführerischer, leichter.

This is a linux country. On a quiet night, you can hear windows reboot...

4

27.10.2004, 13:45

Ach so, ja dann mußt Du natürlich noch das BSD-syslog Format nach RFC3164 einhalten (Details siehe http://www.rfc-editor.org/rfcsearch.html)

Du kannst Das ganze ja 'mal lokal tracen mit:
[code:1]source src { unix-stram("/dev/log"); internal(); pipe("/proc/kmsg"); };
source jeordi { udp( ip("0.0.0.0") port(1999)); };

destination jeordi { udp("127.0.0.1" port(1999) localport(999)); };
destination mymessages { file("/var/log/mymessages"); };

log { source(msg); destination(jeordi); };
log { source(jeordi); destination(mymessages)[/code:1]
Damit werden alle Kernel-Messages über das lo-Device umgelenkt und landen in /var/log/mymessages. Mit ethereal kannst Du jetzt das lo-Device tracen und die Syslog-Messages en detail ansehen. Insbesondere das PRI-Feld (s. RFC 3164) muß eben vorhanden sein. Sonst kann der syslog nichts mit der Message anfangen.

Ach ja, jeordi ist der Name meines lokalen Hosts.

Wenn die Kamera den TCP-String nicht um ein "<38> <date+timestamp>" oder ähnlich erweitern kann, dann kannst Du ja immer noch einen kleinen Daemon schreiben, der die TCP-Verbindung bedient und jede hereinkommende Message mit einem Aufruf von syslog() weitergibt.

Ciao

5

27.10.2004, 14:33

Ach du grosse Neune!
Was 'en gefrickel! Aber da wird mir ja jetzt einiges klarer...

Dennoch eine kleine Rückfrage: Wie schon geschrieben, lass ich ja am TCP Port 5510 lauschen. Hab jetzt mal paar Filter gesetzt und dann ein Telnet auf den Port gemacht.
So, alles was ich dann per Tastatur reinhacke und mit <return> wegschicke, landet auch schön brav im logfile (hab mal ein eigenes erstellt, sonst müllt ja mein eigentliches Logfile zu :wink: ). Ich hab sogar mal den Webbrowser auf den Port losgelassen und es ist alles brav im Logfile gelandet. Nur die Textmessage der Webcam will da nicht landen!

OK, kann ja daran liegen, das das Format nicht stimmt, aber warum werden dann telnet & co geloggt?

Nachtrag: ach ja, ich hab auch mal netcat lauschen lassen, und da wird der Textstring direkt ausgegeben.

See ya
Bitspyer
Der Weg zur Dunklen Seite... Schneller er ist, verführerischer, leichter.

This is a linux country. On a quiet night, you can hear windows reboot...

6

27.10.2004, 15:49

Zitat

Original von Bitspyer

OK, kann ja daran liegen, das das Format nicht stimmt, aber warum werden dann telnet & co geloggt?

Könnte vielleicht daran liegen, daß die RFC3164-Vorgaben nur für das Filtern etc. notwendig sind, aber syslog-ng einfach alles was auf dem jeweiligen Port hereinkommt weiterleitet (unbesehen irgendwelcher Formatierungen). Müßte man in der Source weiter untersuchen.

Aber daß die Nachrichten der CAM nicht weitergeleitet werden. Seltsam. Daß es da einen Unterschied zwischen Port 5555 (siehe erster Eintrag von Dir) und 5510 gibt, ist klar? Nicht daß die CAM an die falsche Adresse sendet.
Kannst Du denn mit ethereal (oder tcpdump) den TCP-Verbindungsaufbau auf dem Port beobachten (SYN, SYN/ACK, ACK-Pakete)? Also wird überhaupt eine TCP-Verbindung etabliert? Und zu welchem Port?

Ciao

7

28.10.2004, 07:27

Mit Port 5555 hatte ich anfangs getippelt, weil es einfacher war. Der Richtige Port ist 5510.
Ist auch so im config-File.

Ja, ob überhaupt was ankommt habe ich mit Ethereal überprüft und es sieht gut aus. Bei der Option "Follow TCP-Stream" spuckt er mir dann auch den Textstring aus. Auch wenn ich netcat auf den Port lauschen lasse, wird der String ausgegeben. Nur´der *!$?&§@ syslog will nix eintragen bis auf "AF_INET client connected" bei Verbindungsaufbau und "AF_INET dropped connection" bei Verbindungsabbau.

Da bekommt man wirklich ne glaubenskrise!
Im Notfall muss ich halt Deinen Vorschlag mit dem eigenen Daemon verfolgen, der auf dem Port lauscht und dann einen entsprechenden Eintrag vornimmt. :cry:
Der Weg zur Dunklen Seite... Schneller er ist, verführerischer, leichter.

This is a linux country. On a quiet night, you can hear windows reboot...

8

28.10.2004, 13:25

So jetzt bin ich wieder bei mir im Büro, meine syslog-ng.conf auf dem "Sammelrechner", der also die ganzen syslog-Messages sammelt, sieht wie folgt aus:
[code:1]
options &#123;
long_hostnames&#40;off&#41;;
sync&#40;0&#41;;
stats&#40;43200&#41;;
&#125;;

source src &#123; unix-stream&#40;"/dev/log"&#41;; internal&#40;&#41;; pipe&#40;"/proc/kmsg"&#41;; &#125;;
source s_udp &#123; udp&#40;ip&#40;192.168.100.30&#41; port&#40;1999&#41;&#41;; &#125;;

destination messages &#123; file&#40;"/var/log/messages"&#41;; &#125;;

filter warning &#123; level&#40;warn,err,crit&#41;; &#125;;

# By default messages are logged to tty12...
destination console_all &#123; file&#40;"/dev/tty12"&#41;; &#125;;
destination console_warning &#123; file&#40;"/dev/tty11"&#41;; &#125;;

# ...if you intend to use /dev/console for programs like xconsole
# you can comment out the destination line above that references dev/tty12
# and uncomment the line below.
#destination console_all &#123; file&#40;"/dev/console"&#41;; &#125;;

log &#123; source&#40;src&#41;; destination&#40;messages&#41;; &#125;;
log &#123; source&#40;s_udp&#41;; destination&#40;messages&#41;; &#125;;

log &#123; source&#40;src&#41;; destination&#40;console_all&#41;; &#125;;
log &#123; source&#40;s_udp&#41;; destination&#40;console_all&#41;; &#125;;

log &#123; source&#40;src&#41;; filter&#40;warning&#41;; destination&#40;console_warning&#41;; &#125;;
log &#123; source&#40;s_udp&#41;; filter&#40;warning&#41;; destination&#40;console_warning&#41;; &#125;;
[/code:1]
Auf einem der client-Rechner sieht's dann so aus:
[code:1]options &#123;
long_hostnames&#40;off&#41;;
sync&#40;0&#41;;
stats&#40;43200&#41;;
&#125;;

source src &#123; unix-stream&#40;"/dev/log"&#41;; internal&#40;&#41;; pipe&#40;"/proc/kmsg"&#41;; &#125;;
#source jeordi &#123; udp&#40;ip&#40;"0.0.0.0"&#41; port&#40;1999&#41;&#41;; &#125;;

destination messages &#123; file&#40;"/var/log/messages"&#41;; &#125;;
#destination mymessages &#123; file&#40;"/var/log/mymessages"&#41;; &#125;;
destination gkar &#123; udp&#40;"192.168.100.30" port&#40;1999&#41; localport&#40;998&#41;&#41;; &#125;;
#destination jeordi &#123; udp&#40;"127.0.0.1" port&#40;1999&#41; localport&#40;999&#41;&#41;; &#125;;

filter warning &#123; level&#40;warn,err,crit&#41;; &#125;;

# By default messages are logged to tty12...
destination console_all &#123; file&#40;"/dev/tty12"&#41;; &#125;;
destination console_warning &#123; file&#40;"/dev/tty11"&#41;; &#125;;

log &#123; source&#40;src&#41;; destination&#40;messages&#41;; &#125;;
log &#123; source&#40;src&#41;; destination&#40;console_all&#41;; &#125;;
log &#123; source&#40;src&#41;; destination&#40;gkar&#41;; &#125;;
#log &#123; source&#40;src&#41;; destination&#40;jeordi&#41;; &#125;;
#log &#123; source&#40;jeordi&#41;; destination&#40;mymessages&#41;; &#125;;
log &#123; source&#40;src&#41;; filter&#40;warning&#41;; destination&#40;console_warning&#41;; &#125;;
[/code:1]
Und eine syslog-message zum Sammelrechner sieht so aus:
[code:1]
13&#58;08&#58;02.642477 jeordi.oehningen-local.de.998 > gkar.oehningen-local.de.1999&#58; udp 91 &#40;DF&#41;
0x0000 4500 0077 c00b 4000 4011 30b5 c0a8 6446 E..w..@.@.0...dF
0x0010 c0a8 641e 03e6 07cf 0063 7c94 3c33 383e ..d......c|.<38>
0x0020 4f63 7420 3238 2031 333a 3038 3a30 3120 Oct.28.13&#58;08&#58;01.
0x0030 6a65 6f72 6469 2073 7528 7061 6d5f 756e jeordi.su&#40;pam_un
0x0040 6978 295b 3130 3930 325d 3a20 7365 7373 ix&#41;&#91;10902&#93;&#58;.sess
0x0050 696f 6e20 6f70 656e 6564 2066 6f72 2075 ion.opened.for.u
0x0060 7365 7220 726f 6f74 2062 7920 2875 6964 ser.root.by.&#40;uid
0x0070 3d31 3030 3029 0a =1000&#41;.
[/code:1]

Insbesondere das "<38>" wird wohl verwendet, um die Message als syslog-message kenntlich zu machen.

Ciao

9

29.10.2004, 12:20

Das mit den Markierungen <[zahl]> hab ich mir mal in den RFCs und in der syslog.h angeschaut.

Aber ich glaube, das es nicht daran liegt!

Wenn ich mir meine Ethereal-snifs anschaue, dann werden die Daten mit einem PSH,ACK an einem Stück geschickt.

Desweiteren kann es ja eigentlich auch nicht am SourcePort liegen.
Irgendwas bereitet syslog-ng Bauchschmerzen, das es sich weigert den Text anzuzeigen!
Wie gesagt, telnet, netcat auf den Port machen keine Probleme!

Mannmannmannmann......

Bitspyer
Der Weg zur Dunklen Seite... Schneller er ist, verführerischer, leichter.

This is a linux country. On a quiet night, you can hear windows reboot...