# Chwytacz loga

## Johnny_Bit

Szukam i albo za mało piwa/wiedzy...

Potrzebne mi coś takiego co stale będzie monitorować log systemowy (nie co godzine itp, tylko stale, coś jak tail), i tlko gdy się pojawi jakaś linijka zgodna z wyrażeniem regularnym to prog wykona ustaloną akcje, np. w logach pojawia się "diwo[007]: Prykc od diwa" a prog to łapie i wykonuje komende "/sbin/divo -c -P -d /home/prykc". Najleiej jeśli czas reakcji na to nie przekraczałby kilku sekund.

Zna ktoś taki prog?

----------

## yoshi314

moze wystarczy po prostu cron + jakis jezyk skryptowy?

----------

## Johnny_Bit

cron jadący co sekunda? a jedynym językiem skryptowym jaki znam jest php... może... szkoda że nie ma gotowych rozwiązań, te o są tylko maile potrafią słać, a bardziej by się przydało żeby słały sms-y i żeby były komórki z ssh

----------

## yoshi314

to by byla lekka przesada zeby co sekunde pilnowac. a z jezykow skryptowych myslalem raczej o bash, perl, python.

wydaje mi sie ze mozna to zrobic dlubiac w konfiguracji syslog-ng .

----------

## rzabcio

Też się właśnie nad tym zastanawiałem... Jeszcze nic nie wymyśliłem.

Póki co wrzuciłem i skonfigurowałem logwatcha i dodałem regułkę crona wykonującą logwatcha co 10 minut. Póki co wystarczy.

----------

## Johnny_Bit

może i logwatch dobry, ale mi potrzebna nie taka krowa, ale małe i szybkie cuś oby mogo reagować bardzo szybko. po 10 minutach reakcja jest "już po ptoku" bo kilka usług u mnie się opiera jedna na drugiej i jak jedna pójdzie to wszystkie zasyfiają loga i nieźle spowalniają system, dlatego zależy mi na możliwie najszybszej reakcji.

----------

## Aktyn

 *Johnny_Bit wrote:*   

>  dlatego zależy mi na możliwie najszybszej reakcji.

 

Myśle że byłbym w stanie w C napisac taki program, co będzie co 2 sek. przeglądał logi i reagował, jeśli zajdzie potrzeba.

Wprawdzie mam mase rzeczy do roboty, ale za motywatora mógłbym ją odłożyć.

Program wypadałoby uruchomić w wyższym priorytetem, jakby miało dojść do zwolnienia systemu.

Żeby był bardziej uniwersalny to opcje możnaby było wczytywać z plików. Ale to pochłania troszke pracy.

Albo napisz sobie skrypt za radą poprzedników. W sumie ja też w językach skryptowych za mocny nie jestem.

----------

## mrto

 *Johnny_Bit wrote:*   

> 
> 
> Potrzebne mi coś takiego co stale będzie monitorować log systemowy (nie co godzine itp, tylko stale, coś jak tail), i tlko gdy się pojawi jakaś linijka zgodna z wyrażeniem regularnym to prog wykona ustaloną akcje, np. w logach pojawia się "diwo[007]: Prykc od diwa" a prog to łapie i wykonuje komende "/sbin/divo -c -P -d /home/prykc". Najleiej jeśli czas reakcji na to nie przekraczałby kilku sekund.

 

Metalog ma taką funkcjonalnośc. Nie wiem jak z czasem reakcji, bo nigdy tego nie próbowałem.

----------

## Johnny_Bit

Aktyn da mi do myślenia i już wiem jak to zrobie. Po prostu uczepie się jak rzep C, basha itp, aż w końu zrobie co mi potrzeba, a co do motywatora to mi samemu by się przydał.

----------

## exodos

Myślę, że starczy coś takiego:

```
tail -f -n 0  /var/log/messages | ./logaction.pl
```

gdzie ./logaction.pl wygląda mniej więcej tak:

```

#!/usr/bin/env perl

use Switch;

while (<>) {

        switch () {

                case /Prykc od diwa/ { system("/sbin/divo -c -P -d /home/prykc") }

                case /regex/ { system("/usr/bin/foo arg1 arg2" }

        }

}

```

----------

## qermit

oczywiście że da się to zrobić w syslog-ng, ale też nie tak prosto. W samym syslogu można użyć regexp oraz wysyłania do odpowiednich soketów.

Należało by napisać demona (np w zsh), który nasłuchiwałby na interfejsie lo udp:localhost:jakiś_port i zajmował by się kolejnymi wpisami.

opcja z tail -f -n 0 jest fajna, ale przy dużych plikach logami pojawiają się pewne opóźnienia

----------

## sebas86

Może zamiast crona zastosować fam? Fam man page.

Nie próbowałem nigdy tego, ale sam opis raczej zachęca do bliższego zapoznania.

----------

## Aktyn

 *Johnny_Bit wrote:*   

> Aktyn da mi do myślenia ..., a co do motywatora to mi samemu by się przydał.

 

Taaaa... ja mam BIG motywator, ale mało wolnego czasu, ogólnie chyba już jestem przepracowany, bo spadła mi efektywność pracy ostatnio drastycznie   :Confused: 

W zasadzie to żeby sobie samemu coś na PC zrobić to "C" wystarcza, a w sumie moje możliwości pamięciowo-syntaktyczno-synaktyczne  :Wink:  przepastne nie są. Tak ze skrypty na razie to do prostego pliku make się ograniczają  :Wink:  albo do uruchomienia np beckapu. Bo nie chce mi sie klepać długiej komendy z tarem

W sumie bardzo fajnie też można kompresować (np filmiki) jak ma sie większą liczbę rzeczy powtarzalnych do zrobienia, pisząc skrypt dla make.

----------

