Portál AbcLinuxu, 6. června 2024 05:50


Dotaz: Vzdálené logování z Mikrotiku na journald

20.8.2015 00:50 JanM | skóre: 28
Vzdálené logování z Mikrotiku na journald
Přečteno: 356×
Odpovědět | Admin
Zdravím,

rád bych zapisoval logy z Mikrotiku (buď čistý text, nebo BSD syslog) do journald (Arch Linux). Protože je to na RPi, kde toho už běží hafo, hledám relativně "lehké" řešení.

Má to pár ale:
$ cat /etc/syslog-ng/syslog-ng.conf
@version: 3.6                                                                                                                                                                                              
@include "scl.conf"                                                                                                                                                                                        
#                                                                                                                                                                                                          
# /etc/syslog-ng/syslog-ng.conf                                                                                                                                                                            
#                                                                                                                                                                                                          
                                                                                                                                                                                                           
options {                                                                                                                                                                                                  
  stats_freq (0);                                                                                                                                                                                          
  flush_lines (0);                                                                                                                                                                                         
  time_reopen (10);                                                                                                                                                                                        
  log_fifo_size (10000);                                                                                                                                                                                   
  chain_hostnames (off);                                                                                                                                                                                   
  use_dns (no);                                                                                                                                                                                            
  use_fqdn (no);                                                                                                                                                                                           
  create_dirs (no);                                                                                                                                                                                        
  keep_hostname (yes);                                                                                                                                                                                     
  perm(0640);                                                                                                                                                                                              
  group("log");                                                                                                                                                                                            
};                                                                                                                                                                                                         
                                                                                                                                                                                                           
source net {                                                                                                                                                                                               
  udp();                                                                                                                                                                                                   
};                                                                                                                                                                                                         
                                                                                                                                                                                                           
destination d_journald { program("/usr/local/bin/mk_syslog2journald.sh"); };                                                                                                                               
filter f_router { facility(local7); };                                                                                                                                                                     
log { source(net); filter(f_router); destination(d_journald); };                                                                                                                                           
Pomocný skript:
cat /usr/local/bin/mk_syslog2journald.sh
#!/bin/bash                                                                                                                                                                                                
read line                                                                                                                                                                                                  
echo $line | cut -d":" -f 4- | sed "s@ \(.*\)@MESSAGE=\"\1\"@" | xargs printf "%s\n%s\n%s\n" PRIORITY=7 SYSLOG_IDENTIFIER=router | logger --journald
Sice to funguje, ale zdá se mi to poněkud kostrbaté. Navíc nelze nastavit _HOSTNAME na původní stroj (mikrotik).

Namísto syslog-ng jsem zkoušel jednoduché "socat -u UDP-RECV:541 STDOUT" spouštěné jako systemd service, má to ale tu chybu, že bez EOL se zápis v journald neobjeví (tj. zabralo např. z terminálu paralelně poslat "echo blabla | nc -u localhost 514"). Pravda, nezkoušel jsem, zda by tak nastalo i samo nějaké době.

Nenapadá někoho lepší řešení jak logovat Mikrotik do journald?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (JanM (tazatel))
michich avatar 20.8.2015 09:13 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Vzdálené logování z Mikrotiku na journald
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím jak syslog-ng, ale rsyslog umí zapisovat do journalu pomocí modulu omjournal.
20.8.2015 10:11 JanM | skóre: 28
Rozbalit Rozbalit vše Re: Vzdálené logování z Mikrotiku na journald
Díky za link. Funguje skvěle a má 1/3 velikost instalace.

P.S. Původně jsem rsyslog zavrhnul, kvůli podivné konfiguraci a neznalosti zmíněného modulu...
20.8.2015 09:55 xxl | skóre: 25
Rozbalit Rozbalit vše Re: Vzdálené logování z Mikrotiku na journald
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyby ses neomezoval jenom na journald, tak vyloženě lehké řešení je socklog.

Loguje do textových souborů. Umí automaticky omezovat velikost zabraného prostoru na disku (rotace logů), kolik mu nastavíš, tolik to max zabere. Každý mikrotik ti to může logovat zvlášť. Na rozdíl od journald to zabírá minimum paměti.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.