Logare mesaje server DHCP în baza de date MySQL

Pentru serviciul DHCP folosesc în freeBSD portul isc-dhcpd-server.
În mod implicit, fără nici o configurare mesajele sunt scrise în fișierul /var/log/messages.
Folosind syslog-ul nativ cu care vine sistemul de operare putem să îl configurăm ca mesajele să fie scrise se exemplu în fișierul /var/log/dhcpd.log, în 4 pași ușori:

  • ađaugăm în fîșierul de configurare /etc/syslog.conf liniile:
    !dhcpd
    *.*                                             /var/log/dhcpd.log
  • creem pe disc fișierul /var/log/dhcpd.log și îi dăm drepturile necesare (de exemplu 777):
    touch /var/log/dhcpd.log
    chmod 777 /var/log/dhcpd.log
  • restartăm serviciul syslog:
    /etc/rc.d/syslogd restart
  • restartăm serviciul dhcp:
    /usr/local/etc/rc.d/isc-dhcpd restart

În acest moment toate mesajele generate de către serviciul dhcp sunt scrise în fișierul /var/log/dhcpd.log.

Dacă dorim ca aceste mesaje să fie scrise într-o bază de date MySQL, lucrurile se complică. În mod nativ nici serviciul dhcp și nici serviciul syslog nu beneficiază de această opțiune.
Una dintre solutii este înlocuirea serviciului syslog cu un alt software care să facă același lucru, dar să stie să lucreze cu baze de date MySQL. Am testat în această seara rsyslog. Software-ul se găsește și în porturi. Instalarea facilă, ca la orice port:

cd /usr/ports/sysutils/rsyslog5
make
make install
make clean

A fost necesară și instalarea extensiei pentru a putea funcționa cu baze de date MySQL:

cd /usr/ports/sysutils/rsyslog5-mysql/
make && make install && make clean

Am adăugat apoi în rc.conf liniile următoare pentru a nu folosi serviciul syslog implicit ci pe cel proaspăt instalat:
syslogd_enable=”NO”
rsyslogd_enable=”YES”
rsyslogd_flags=”-c5″

Vom configura apoi serviciul nou adăugând opțiunile necesare în fișierul /usr/local/etc/rsyslog.conf.
În primul rând trebuie să adăugam opțiunea:
$ModLoad ommysql # load MySQL functionality
ce permite funcționarea acestui software cu baze de date MySQL.
Definim un template cu interogarea care o va efectua pentru inserarea informațiilor:
$template bdsql,”insert into dhcp_log(data,mesaj) values(‘%timegenerated%’,’%msg%’)”,SQL
Redirectăm apoi mesajele care conțin șirul „DHC” către baza de date, folosind date de autentificare adecvate (utilizator, parola, serverSQL):
:msg, contains, „DHC”        :ommysql:server_sql,nume_baza_date,nume_utilizator,parola_utilizator;bdsql
Bineînțeles că trebuie să creem baza de date (nume_baza_date) și tabelul (dhcp_log) cu câmpurile necesare precum și utilizatorul care să aiba dreptul de a scrie informațiile.
Pornim apoi serviciul cu comanda:
/usr/local/etc/rc.d/rsyslogd start
În acest moment ar trebui sa vedem îregistrări noi în baza de date dacă există mesaje de la serviciul dhcp. Folosind acest exemplu se loghează doar mesajele de tipul DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK, etc, dar nu și alte mesaje de stare ( duplicate lease, etc).

http://www.isc.org/software/dhcp

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.