Mit syslog-ng in Mysql DB loggen

Dieses Thema: "Mit syslog-ng in Mysql DB loggen" im Forum "Security Talk" wurde erstellt von tr0nix, 13.09.2004.

  1. #1 tr0nix, 13.09.2004
    Zuletzt bearbeitet: 14.09.2004
    tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Hallo zusammen

    Das hier ist keine Anfrage sondern ein HowTo. Ich habe ein HowTo fuer dieses Thema gefunden, es funktionierte jedoch mit einem Fifo-File und hatte viele Nachteile und war fuer mich zu instabil.

    Vorraussetzungen:
    Software:
    mysql Client und einen Server
    syslog-ng

    Sonstiges:
    syslog Datenbank-User (inkl. INSERT Permissions auf das gewuenschte Table)
    mysqllog System-User (von Hand erstellen, Shell kann /bin/false sein)
    /var/log/mysqllog (Gehoert mysqllog-User, Permissions des Directories 700)
    /var/log/mysqllog/todo (Gehoert mysqllog-User, Permissions des Files 600)
    mysqllog Cronjob (kommt weiter unten)

    Ich gehe davon aus, ihr habt eine DB namens "syslog". Hier die Struktur des Tables "logs":
    Code:
    CREATE TABLE logs (
      host varchar(32) default NULL,
      facility varchar(10) default NULL,
      priority varchar(10) default NULL,
      level varchar(10) default NULL,
      tag varchar(10) default NULL,
      date date default NULL,
      time time default NULL,
      program varchar(15) default NULL,
      msg text,
      seq int(10) unsigned NOT NULL auto_increment,
      PRIMARY KEY  (seq),
      KEY host (host),
      KEY seq (seq),
      KEY program (program),
      KEY time (time),
      KEY date (date),
      KEY priority (priority),
      KEY facility (facility)
    ) TYPE=MyISAM;
    Hier die syslog-ng Konfiguration (einfach an bestehende attachen):
    Code:
    ## Log syslog-ng to mysql database
    destination d_mysql {
    file("/var/log/mysqllog/todo" owner("mysqllog") group("adm") perm(0600)
    template("[b]USE syslog[/b]; INSERT INTO logs (host, facility, priority, level, tag, date, time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
    };
    
    log { source(src); destination(d_mysql); };
    
    Anschliessend die Datei /usr/local/sbin/mysqllog.sh erstellen:
    Code:
    #!/bin/bash
    # Write log into database
    # 13.9.2004 - JW
    
    /usr/bin/mysql -h localhost -u syslog < /var/log/mysqllog/todo
    echo "" > /var/log/mysqllog/todo
    
    Optional koennt ihr noch den syslog-User Passwort schuetzen und das Script damit ergaenzen.

    Nun den Cronjob fuer den User mysqllog erstellen:
    Code:
    cronjob -u mysqllog -e
    Code:
    #Put logs into DB
    * * * * * /usr/local/sbin/mysqllog.sh
    Das Script laeuft schoen sauber unter einem technischen User und wer's ganz sicher will, schuetzt den syslog-DB User noch durch ein Passwort. So kann ein verteilter Serverpark an eine Zentrale Stelle loggen.

    Wer mag, kann das ganze noch ein wenig tunen, indem er statt
    echo "" > /var/log/mysqllog/todo
    dies macht:
    echo "use syslog;" > /var/log/mysqllog/todo
    und bei der syslog-ng.conf - Datei bei den Templates das "use syslog" rausnimmt.

    Ich bin dabei, noch Ueberpruefungen einzubauen, ob die DB da ist etc. aber so laeuft das ganze schonmal recht sauber!

    gruss
    Joel
     
  2. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Kleine Korrektur vorgenommen, an der syslog-ng Konfiguration. Ansonsten wird das File mit root-Permissions ueberschrieben bei einem restart von syslog-ng und mysqllog-User kann das File nicht neu nullen und auch nicht lesen!
     
  3. devilz

    devilz Pro*phet
    Administrator

    Dabei seit:
    01.05.2002
    Beiträge:
    12.244
    Zustimmungen:
    0
    Ort:
    Hessen
    Wie wärs wenn du das HowTo ins Wiki kopierst ?

    http://wiki.unixboard.de

    Ich hoffe das das Wiki bald an etwas mehr Aufmerksamkeit gewinnt :)
     
Thema:

Mit syslog-ng in Mysql DB loggen

Die Seite wird geladen...

Mit syslog-ng in Mysql DB loggen - Ähnliche Themen

  1. Probleme mit syslog-ng & Speichern in MySQL

    Probleme mit syslog-ng & Speichern in MySQL: Hallo Community, erstmal vorweg, ich bin UNIX-Einsteiger. Also ich habe ein OpenBSD 3.6 i386. Habe darauf einen Apache, php4, mysql4.0.20...
  2. Syslog-NG auf SLES11.2 compilen

    Syslog-NG auf SLES11.2 compilen: Hallo, ich versuche Syslog-NG auf SLES zu Kompilieren. Hat sich bei den ganzen Abhängigkeiten die es nicht gibt auch etwas hingezogen. Jetzt hab...
  3. Syslog-NG

    Syslog-NG: Hallo, Is es möglich das bestimmte Crons nicht an den Syslog-NG gesendet werden ? . Ich hab es mal mit einem Regulären ausdruck versucht aber...
  4. Debian 5 (syslog-ng + stunnel)

    Debian 5 (syslog-ng + stunnel): Hallo Allerseits, ich habe ein kleines Problem.... Hier eine kurze Erklärung was ich gemacht habe. Syslog-ng(client) läuft und wird auf...
  5. syslog-ng und iptables Problem

    syslog-ng und iptables Problem: Hallo Leute, probier ich es mal hier. In anderen Foren hab ich keine Antwort bekommen. Das Thema war bestimmt schon oft hier, ich habe folgendes...