Mit syslog-ng in Mysql DB loggen

Diskutiere Mit syslog-ng in Mysql DB loggen im Security Talk Forum im Bereich Netzwerke & Serverdienste; Hallo zusammen Das hier ist keine Anfrage sondern ein HowTo. Ich habe ein HowTo fuer dieses Thema gefunden, es funktionierte jedoch mit einem...

  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
    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. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    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!
     
  4. devilz

    devilz Pro*phet

    Dabei seit:
    01.05.2002
    Beiträge:
    12.244
    Zustimmungen:
    0
    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

    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...
  3. 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...
  4. Syslog-ng Cron nicht loggen

    Syslog-ng Cron nicht loggen: Hallo, Kann mir jemand verraten wie ich den syslog-ng auf einem Debian-Server dazu bewegen kann, die ganzen Chron-Einträge in eine andere Datei...
  5. syslog-ng: Automatisch alte Zeilen löschen

    syslog-ng: Automatisch alte Zeilen löschen: Hallo, ich logge automatisch die Nachrichten meines Routers mit syslog-ng mit. Alle Nachrichten des Routers kommen in die gleiche Datei. Mein...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden