1 (edytowany przez andrut 2015-08-23 02:12:09)

Temat: syslog systemowy (logread) na TCP?

Hola!

Szukam sposobów na oszczędzenie flasha na mniejszych routerach, a mam centralny system logowania wszystkich sprzętów (zamiast każdego sysloga z osobna).
Czy jest sposób wymuszenia na standardowym logu, aby 'logował' na IP i port TCP, a nie UDP jak z defaultu?

Znam sposób w postaci zmiany loggera systemowego, ale to nie rozwiązuje problemu oszczędzania miejsca...

-- EDIT

Odpowiem sobie sam, a gdyby ktoś szukał to na pewno się przyda.
Wystarczy do /etc/config/system dopisać w sekcji system dopisać jak poniżej:

config system
[...]
        option log_proto 'tcp'

Defaultowo jest to 'udp', ale nigdzie nie jest to napisane.

-- EDIT2

To pytanie brzmi teraz: jak spowodować, by log który trafia na zdalną maszynę nie był opisany jako 'localhost.localdomain' tylko fizycznym hostem routera? (który jest ustawiony)

-- EDIT3

Znowuż odpowiem sobie sam...
W /etc/init.d/log należy dodać pogrubiony poniżej parametr -h nazwa_hosta:

start_service_file()
{
[...]
        procd_open_instance
        procd_set_param command "$PROG" -f -h nazwa_hosta -F "$log_file" -p "$pid_file"
[...]
}

start_service_remote()
{
[...]
        procd_open_instance
        procd_set_param command "$PROG" -f -h nazwa_hosta -r "$log_ip" "${log_port}" -p "$pid_file"
        case "${log_proto}" in
[...]
}

Dlaczego w configu nie można tego ustawić, ani się nie zaciąga?
Zagadka bez odpowiedzi.

2 (edytowany przez build000 2015-08-23 21:05:07)

Odp: syslog systemowy (logread) na TCP?

Też postaraj sobie odpowiedzieć sam:
1) Czy "procd_set_param" obsługuje wywołanie/zmienną/opcję -h ?
2) Jakie opcje obsługuje procd ?

3

Odp: syslog systemowy (logread) na TCP?

A dlaczego procd set_param skoro masz obok command, pod $PROG podstawiany jest logread, który obsługuje -h?
Po 2 - sprawdziłem, działa, problem rozwiązałem i widzę ułomność skryptu, który zamiast zaciągnąć zmienną hostname uparcie trzyma się localhost.localdomain.

4

Odp: syslog systemowy (logread) na TCP?

Zgłoś to, niech obsługują nazwę hosta domyślnie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: syslog systemowy (logread) na TCP?

Poszło jako ticket, nie mam niestety środowiska do zestawienia patcha, a to pewnie najszybszy sposób na wprowadzenie zmian 'dla wszystkich'.

Ponadto zgłosiłem do dev'ów LuCI ticketa, aby umożliwione było ustawianie tcp/udp przez WWW, dla mniej 'grzebiących'.

Szkoda, że w większości teraz jest to ograne sugerowaniem zmiany loggera systemowego, skoro ten ma wszystko czego potrzeba.
Przy update'ach w terenie będę o tym pamiętał. :-)

6

Odp: syslog systemowy (logread) na TCP?

andrut napisał/a:

A dlaczego procd set_param skoro masz obok command, pod $PROG podstawiany jest logread, który obsługuje -h?
Po 2 - sprawdziłem, działa, problem rozwiązałem i widzę ułomność skryptu, który zamiast zaciągnąć zmienną hostname uparcie trzyma się localhost.localdomain.

Prawidłowo powinno być to zrobione tak, że hostname jest zaciągany z ustawień systemowych. Jest nawet info na Wiki, że tego brakuje, oznaczone "FIXME" (http://wiki.openwrt.org/doc/uci/system):

OpenWrt Wiki napisał/a:

If you want to change 'hostname' instead of localhost.localdomain in remote syslog, you have to add -h <hostname> parameter in /etc/init.d/log start parameters. It should be read from system config, but it's not (yet) - remove after fix.

Do poprawki w pakiecie ubox: https://dev.openwrt.org/browser/trunk/p … s/log.init
Przydałaby się prosta weryfikacja pustej wartości.

Zrób, przetestuj, wyślij łatkę smile

7

Odp: syslog systemowy (logread) na TCP?

FIXME dopisałem ja, dla potomnych i w przyszłości szukających. :-)
A nie mam środowiska do zrobienia prawidłowego pliku 'patch'.

Weryfikacja pustej wartości mogłaby się przydać o ile możliwe jest ustawienie pustego hosta, gdyż obecnie z defaultu ta zmienna przyjmuje wartość 'OpenWRT' :-)