Zentraler Logserver mit Syslog-NG, MariaDB und lggr.io Webinterface

lggr.io ist ein schnelles und einfaches Webinterface für syslog-ng. Wer keinen ELK-Stack mit Java benötigt findet mit lggr.io eine gute Alternative.
Läuft bei mir in einer Debian 10 VM mit 2 GB RAM und ca. 15 loggenden hosts (Server, Router, Switche) ohne Probleme.

08.03.2020 – Anleitung aktualisiert (falscher Pfad in der /etc/cron.d/lggr)
07.03.2020 – Server Setup: Debian 10.3 / Apache 2.4 / MariaDB 10.3 / PHP 7.3 / syslog-ng 3.19
10.01.2020 – Anleitung aktualisiert (08logger.conf, flush* option is deprecated)
04.12.2019 – Anleitung aktualisiert
30.04.2019 – Anleitung aktualisiert (Fehler beim Datenbanknamen in der db.conf)
15.07.2018 – Anleitung aktualisiert
28.06.2018 – Server Setup: Debian 9.4 / Apache 2.4 / MariaDB 10.1 / PHP 7.0 / syslog-ng 3.8

benötigte Software:

  • Apache, MariaDB, PHP, Redis, Syslog-NG

In der Anleitung der lggr.io howto wird noch stunnel installiert. Kommt bei mir aber nicht zum Einsatz.

Apache

$ apt install -y apache2

Die Apache Module headers und expires werden benötigt.

$ a2enmod headers expires

Apache neu starten.

$ systemctl restart apache2

PHP

$ apt install -y php7.3 php7.3-mysql

PHP Zeitzone setzen.

$ vi /etc/php/7.3/apache2/php.ini
$ vi /etc/php/7.3/cli/php.ini
date.timezone = Europe/Berlin

Redis

$ apt install -y php-redis redis-server

Redis Server Status überprüfen.

$ systemctl status redis-server
● redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-03-12 16:58:41 CET; 10min ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2834 ExecStopPost=/bin/run-parts --verbose /etc/redis/redis-server.post-down.d (code=exited, status=0/SUCCESS)
  Process: 2831 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
---SNIP---

Bug (fixed) – Beim Aufruf des lggr.io Webinterfaces erscheint eventuell eine Redis Fehlermeldung.

Redis server went away

Bug (fixed) – Wenn es mit dem Redis Server Probleme gibt, können wir in der  lggr_class.php LggrCacheRedis auf File ändern.

$ vi /var/www/html/logger/inc/lggr_class.php
// $this->cache = new LggrCacheRedis();
$this->cache = new LggrCacheFile();

lggr.io Webinterface

$ cd /var/www/html
$ apt install -y git
$ git clone https://github.com/kkretsch/lggr.git logger

Das lggr Webinterface benutzt mehrere 3rd party libraries, wie jquery und bootstrap.
Die Pakete sind in den GIT Quellen nicht enthalten und müssen separat heruntergeladen werden.

$ wget https://lggr.io/wp-content/uploads/2015/06/lggr_contrib.tar.gz
$ tar xvfz lggr_contrib.tar.gz -C /var/www/html/logger

In der inc/config_class.php wird auf den Ordner contrib verwiesen. Ggf. die Pfade anpassen.

/* local storage */
$this->setUrlBootstrap('/logger/contrib/bootstrap/');
$this->setUrlJquery('/logger/contrib/jquery/');
$this->setUrlJqueryui('/logger/contrib/jqueryui/');
$this->setUrlJAtimepicker('/logger/contrib/timepicker/');
$this->setUrlChartjs('/logger/contrib/chartjs/');
$this->setUrlJQCloud('/logger/contrib/jqcloud/');

Der Zugriff auf das Webinterface wird mit der basic authentication geschützt.
In der .htaccess Datei ist das authfile /var/www/webuser angegeben. Wir erstellen die Datei und legen den Zugriff für den Benutzer logger an.

$ htpasswd -c /var/www/webuser logger

Apache .htaccess aktivieren

$ vi /etc/apache2/sites-available/000-default.conf
<VirtualHost>
        # basic authentication für das logger Verzeichnis
        <Directory /var/www/html/logger/>
        AllowOverride All
        </Directory>
</VirtualHost>

Der webuser benötigt Schreibzugriff auf das cache Verzeichnis.

$ chown www-data:www-data /var/www/html/logger/cache/

Bug – Archivieren funktioniert nicht. In der Datei js/lggr.js stimmen zwei Pfade zur do.php nicht!

$('div.datablock').on('click', 'span.lggr-archived', function() {
               /* url: '/do.php?a=unarchive', */
               url: './do.php?a=unarchive',

$('div.datablock').on('click', 'span.lggr-notarchived', function() {
               /* url: '/do.php?a=archive', */
               url: './do.php?a=archive',

Bug – Bei dem Relative Verteilung der Level Chart, ist die Farbe der Errors grün, sollte aber rot sein. In der Datei js/lggr_stat_data.php fehlt ein #.

/* define(‘COLORALERT’, ‘d9534f’); # fehlt */
define(‘COLORALERT’, ‘#d9534f’);

MariaDB Server und Client

$ apt install -y mariadb-server mariadb-client

Datenbank logger erstellen.

$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE logger;
MariaDB [(none)]> quit

Die user.sql anpassen.

$ vi /var/www/html/logger/doc/user.sql

# create the following three mysql users:
# used by syslog-ng for inserting new data, referenced in /etc/syslog-ng/conf.d/08lggr.conf
GRANT INSERT,SELECT,UPDATE ON logger.* TO logger@localhost IDENTIFIED BY 'SET_PASSWORD';

# used by the web gui for normal viewing, referenced in inc/config_class.php
GRANT SELECT ON logger.* TO logviewer@localhost IDENTIFIED BY 'SET_PASSWORD';

# used by clean up cron job and for archiving, referenced in inc/adminconfig_class.php
GRANT SELECT,UPDATE,DELETE ON logger.* TO loggeradmin@localhost IDENTIFIED BY 'SET_PASSWORD';
GRANT SELECT,INSERT ON TABLE logger.servers TO loggeradmin@localhost;

# activate changes
FLUSH PRIVILEGES;

Datenbanknamen in der db.sql anpassen.

-- Exportiere Datenbank Struktur für lggr
CREATE DATABASE IF NOT EXISTS `logger` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `logger`;

Die Tabellen in der Datenbank logger anlegen.

$ mysql -u root -p logger < /var/www/html/logger/doc/db.sql

Die angelegten Benutzer in der user.sql im Datenbankserver anlegen.

$ mysql -u root -p < /var/www/html/logger/doc/user.sql

Die in der user.sql gesetzten Namen und Passwörter in den beiden config Dateien anpassen.

$ vi /var/www/html/logger/inc/config_class.php
class Config extends AbstractConfig {

        function __construct() {
                $this->setDbUser('logviewer');
                $this->setDbPwd('SET_PASSWORD');
                $this->setDbName('logger');

                // Set your preferred language en_US, de_DE, or pt_BR
                $this->setLocale('de_DE');

$ vi /var/www/html/logger/inc/adminconfig_class.php
class AdminConfig extends AbstractConfig {

        function __construct() {
                $this->setDbUser('loggeradmin');
                $this->setDbPwd('SET_PASSWORD');
                $this->setDbName('logger');
        } // constructor

Bug – Die Tabellennamen in der db.sql sind alle lowercase, aber im PHP Code teilweise gemischt!. Fehlermeldung: Table ‚lggr.Today‘ doesn’t exist
In der /etc/mysql/mariadb.conf.d/50-server.cnf unter dem Abschnitt [mysqld] folgenden Eintrag hinzufügen:

lower_case_table_names = 1

Oder in der inc/lggr_class.php nach folgenden Tabellennamen suchen und in lowercase abändern!
Archived, LastHour, Newlogs, Servers, Today, Week, Year

syslog-ng Server

$ apt install -y syslog-ng libdbd-mysql

Im Konfigurationslayout von Syslog-NG werden alle .conf Dateien unter /etc/syslog-ng/conf.d/ verarbeitet.
Die Hauptkonfigurationsdatei muss also nicht mehr verändert werden. Konfigurationsdatei für lggr erstellen.

$ vi /etc/syslog-ng/conf.d/08logger.conf

filter f_no_debug { not level(debug); };
options { keep_hostname(yes); };
source s_net { udp( port(514) log-iw-size(2000) ); };
destination d_newmysql {
sql(
flags(dont-create-tables,explicit-commits)
session-statements("SET NAMES 'utf8'")
# the flush-lines() option is deprecated, use batch-lines() instead
# flush_lines(10)
batch-lines(10)
# the flush-timeout() option is deprecated, use batch-timeout() instead
# flush_timeout(5000)
batch-timeout(5000)
local_time_zone("Europe/Berlin")
type(mysql)
username("logger")          <= DB user setzen!
password("SET_PASSWORD")    <= DB password setzen!
database("logger")          <= DB name setzen!
host("localhost")
table("newlogs")
columns("date", "facility", "level", "host", "program", "pid", "message")
values("${R_YEAR}-${R_MONTH}-${R_DAY} ${R_HOUR}:${R_MIN}:${R_SEC}", "$FACILITY", "$LEVEL", "$HOST", "$PROGRAM", "$PID", "$MSGONLY")
indexes()
);
};

log {
source(s_net); source(s_src); filter(f_no_debug); destination(d_newmysql);
};

Noch eine Anpassung in der default syslog-ng Konfiguration.

$ vi /etc/default/syslog-ng:
SYSLOGNG_OPTS="-–no-caps"

Syslog-ng neu starten.

$ systemctl restart syslog-ng

syslog-ng Clients

Dafür kann auch hier syslog-ng installiert und genutzt werden.

$ apt install syslog-ng

Wir erstellen die Datei /etc/syslog-ng/conf.d/10logger-client.conf mit folgendem Inhalt.

destination d_net { udp("IP-OF-LOGGER-HOST" port(514) log_fifo_size(1000)); };
log { source(s_src); destination(d_net); };

Es kann aber auch der schon vorhandene rsyslog genutzt werden! Dazu in der /etc/rsyslog.conf als ersten Eintrag hinzufügen.

*.* @IP-OF-LOGGER-HOST            # UDP auf den default Port 514

Nach Änderungen der Konfiguration auch hier natürlich den entsprechenden Dienst neu starten.

$ systemctl restart syslog-ng
$ systemctl restart rsyslog

syslog-ng debugging

Nach dem anlegen der zwei *.conf Dateien startete syslog-ng nicht mehr!
Um herauszubekommen wo genau der Fehler liegt lässt sich syslog-ng im debug Modus starten.

$ syslog-ng -Fevd
Starting to read include file; filename='/etc/syslog-ng/conf.d/08logger.conf', depth='1'
Error parsing config, syntax error, unexpected LL_IDENTIFIER in /etc/syslog-ng/conf.d/08logger.conf at line 4, column 1:
                                                  included from /etc/syslog-ng/syslog-ng.conf line 163, column 1

keep_hostnames(yes);
^^^^^^^^^^^^^^

locales

Der Server muss die richtige Systemsprache installiert haben. Der Befehl locale -a sollte mindestens en_US.utf8 und ggf. de_DE.utf8 ausgeben.

$ locale -a
C
C.UTF-8
de_DE.utf8
en_US.utf8
POSIX

cronjobs

Für die Wartungsarbeiten erstellen wir die Datei /etc/cron.d/lggr mit folgendem Inhalt:

# on default it keeps the last 4 weeks of entries, to purge old messages run admin/cron.php daily
# 4 Wochen werden die letzten Einträge gespeichert, ältere löschen (täglich um 01:30 Uhr)
30 1 * * * www-data /usr/bin/php /var/www/html/logger/admin/cron.php

# to prepare server id/name relations run admin/cron_often.php every minute
# Server ID/Namen in die Tabelle logger.servers schreiben/updaten (alle 5 Minuten)
*/5 * * * * www-data /usr/bin/php /var/www/html/logger/admin/cron_often.php

Das Zeitintervall für die automatische Bereinigung alter Einträge finden wir in der Datei inc/lggr_class.php

/* delete anything older than maxage hours, or 4 weeks */
function purgeOldMessages($maxage = 672) {

Ich setze das bei mir auf 2 Wochen, mehr benötige ich nicht. Hält die Datenbank schlank und schont Ressourcen.

/* delete anything older than maxage hours, or 2 weeks (336 Stunden = 14 Tage = 2 Wochen) */
function purgeOldMessages($maxage = 336) {

Fazit

Die Installation ist schon ein bisschen tricky und nicht mal eben in 5 Minuten erledigt.
Wer die Mühe aber nicht scheut wird mit einem stabilen zentralen Syslog Server und schönem Webinterface belohnt. :)

41 Gedanken zu „Zentraler Logserver mit Syslog-NG, MariaDB und lggr.io Webinterface“

  1. Hi

    bei mir sieht es aktuell aus als hätte es ein 3 Jähriger erstellt, das Contrib Paket habe ich heruntergeladen und extrahiert, sieht allerdings immer noch unschön aus. Muss da noch weiteres eingestellt werden? Alles Dienste laufen.

    Gruß

    Antworten
    • In der inc/config_class.php wird auf den Ordner contrib verwiesen. Stimmen die Pfade?

      /* local storage */
      $this->setUrlBootstrap('/contrib/bootstrap/');
      $this->setUrlJquery('/contrib/jquery/');
      $this->setUrlJqueryui('/contrib/jqueryui/');
      $this->setUrlJAtimepicker('/contrib/timepicker/');
      $this->setUrlChartjs('/contrib/chartjs/');
      $this->setUrlJQCloud('/contrib/jqcloud/');

      Antworten
      • Ich brauchte andere Pfade!

        Durch mein GIT CLONE ist der lggr im Verzeichnis

        * /var/www/html/logger

        gelandet. Das hat zur Folge, dass ich ein /logger/ in den Pfad einbauen musste.

        Falsch:
        * $this->setUrlBootstrap(,/contrib/bootstrap/‘);

        Richtig:
        * $this->setUrlBootstrap('/logger/contrib/bootstrap/');

        Man beachte bitte auch die Gänsefüßchen. Die durften bei mir nicht „unten“ sein (wie es in Falsch zu sehen ist, sondern „oben“)

        Antworten
  2. Hallo,
    ich muss mich hier Jörgs Aussage anschliessen, die Ansicht sieht sehr bescheiden aus und die Pfade sind bei mir richtg gesezt. In meinem Fall auf /var/www/contrib..
    Gibt es noch irgendwelche Module die für PHP zusätzlich benötigt werden?

    Vielen Dank im Voraus TBC

    Antworten
  3. Hallo zusammen,
    der Fehler ist jetzt gefunden, ich habe das Verzeichnis contrib nach /var/www/html/ verschoben. Also eine ebene tiefer und jetzt geht alles wie es soll. Wünschenswert ist auch noch eine Filterung nach „Hosts“ evtl. kann man dies auch noch einbauen.

    Merci für die Super Beschreibung, diese hat sehr geholfen!

    MfG TBC

    Antworten
  4. Hallo, Habe mir den lggr.io auf einen Raspberry installiert. Habe allerdings Probleme mit der Datenbank. Bekomme immerwieder Schwierigkeiten, dass die DB case-sensitive ist. Das heist ich benötige Tabellen mit z.Bsp. Archived und archived oder LastHour , Lasthour und lasthour. Ist das ein Problem welches nue ich habe?
    Gruß Wolfgang

    Antworten
    • Schau dir mal in der inc/lggr_class.php die SQL Statements an.
      Ich kann mich daran erinnern da auch schonmal Anpassungen an den Namen der Tabellen gemacht zu haben.

      Antworten
  5. Hallo Wolfgang,
    das Problem mit der case-sensitive MariaDB hatte ich auch unter Debian 9.
    Lässt sich in der MySQL-Konfiguration beheben. Bei mir unter „/etc/mysql/mariadb.conf.d“ in der Datei „50-server.cnf“ unterhalb der Sektion [mysqld] folgendes einfügen:
    lower_case_table_names = 1
    Funktionierte nach dem Reboot einwandfrei.
    Gruß Ralf

    Antworten
  6. Hey,
    nachdem ich mysql -u root -p < /var/www/html/logger/doc/user.sql ausgeführt habe bekomme ich folgenden Output: ERROR 1146 (42S02) at line 10: Table 'logger.servers' doesn't exist.
    Wie kann ich das beheben?
    Gruß N3x

    Antworten
    • Habs gerade mal ausprobiert, ich bekomme auch den Fehler! :(

      In der db.sql den Datenbanknamen anpassen (von lggr auf logger):

      CREATE DATABASE IF NOT EXISTS `logger`;
      USE `logger`;

      Die lggr und logger SQL Datenbanken löschen, logger neu erstellen und nochmal ausführen.
      Damit hats dann ohne Fehlermeldung funktioniert.

      Anleitung hab ich aktualsiert. ;)

      Antworten
  7. Hi alles soweit ok aber folgende fehler kommen bei dir auf :

    Beim Aufruf der Webseite:

    You must enable basic authentication

    Bei starten Restart vom:

    syslog-ng.service - System Logger Daemon
    Loaded: loaded (/lib/systemd/system/syslog-ng.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Wed 2019-05-22 10:45:23 CEST; 5s ago
    Docs: man:syslog-ng(8)
    Process: 12054 ExecStart=/usr/sbin/syslog-ng -F $SYSLOGNG_OPTS (code=exited, status=1/FAILURE)
    Main PID: 12054 (code=exited, status=1/FAILURE)
    Status: "Starting up... (Wed May 22 10:45:23 2019"

    Kannst du mir paar tipps geben?

    Antworten
    • Dann hast du beim Apache die basic authentication nicht aktiviert.

      Starte mal syslog-ng mit debugging, dann sollte er dir den Fehler ausgeben.
      $ syslog-ng -Fevd

      Steht alles in meiner Anleitung. ;)

      Antworten
      • zu

        * Dann hast du beim Apache die basic authentication nicht aktiviert.

        sei hinzugefügt:

        Zum Aktivieren der neuen – Direktive (hier: „basic auth“ erlauben via „AllowOverride All“ ) will der Apache seine Konfiguration neu laden (z.B. durch Neustart des Dienstes via „systemctl restart apache2“)

        Antworten
  8. Ich möchte lggr und syslog-ng gerne als meinen lokalen Log-Server nutzen. Dazu habe ich damit begonnen das Dockerimage weiter zu entwickeln. Wenn es jemanden gibt, der Ähnliches schon gemacht hat, freue ich mich über eine Kontaktaufnahme :)

    Wäre doch schön, wenn man den installationsvorgang vereinfachen und noch mehr Leuten diese tolle Oberfläche zur Verfügung stellen könnte.

    VG
    Hendrik

    Antworten
  9. Ist noch nicht ganz fertig.Habe selber noch Schwierigkeiten lggr (auch ohne) Docker zum Laufen zu bringen.
    Melde mich, wenn ich nicht weiterkomme oder mit dem Ergebnis in wenigen Tagen!

    Antworten
  10. Hallo,

    bei meinem Webinterface tritt das Problem auf, das unter Filter nur ein kleines weißes Rechteck erscheint. Auch die anderen Buttons wie info, warning usw sowie die Zeitangabe funktionieren nicht. Man kann diese zwar anklicken, es passiert jedoch nichts. Hat da jemand eine Idee dazu?

    LG
    Stefan

    Antworten
  11. In „/var/log/syslog“ erscheint bei mir nach dem Neustart des syslog-ng ein Hinweis, dass in der Konfigurationsdatei „/etc/syslog-ng/conf.d/08logger.conf“ Parameter benutzt werden die in der Zukunft nicht mehr unterstützt (da umbenannt) werden:

    Jan 10 09:11:24 syslog-pc syslog-ng[7572]: [2020-01-10T09:11:24.864152] WARNING: Your configuration file uses an obsoleted keyword, please update your configuration; keyword=’flush_lines‘, change=’The flush-lines() option is deprecated, use batch-lines() instead.‘, location=’/etc/syslog-ng/conf.d/08logger.conf:8:1′
    Jan 10 09:11:24 syslog-pc syslog-ng[7572]: [2020-01-10T09:11:24.864275] WARNING: Your configuration file uses an obsoleted keyword, please update your configuration; keyword=’flush_timeout‘, change=’The flush-timeout() option is deprecated, use batch-timeout() instead.‘, location=’/etc/syslog-ng/conf.d/08logger.conf:9:1′

    Abhilfe:

    Ersetze die folgenden 2 Zeilen
    flush_lines(10)
    flush_timeout(5000)

    mit diesen Zeilen:
    batch-lines(10)
    batch-timeout(5000)

    … fertig!

    Antworten
  12. Hallo,

    beim Aufrug in Firefox „ip-adresse/logger“ bekomme ich immer eine leere weiße Seite angezeigt.

    Befehle auf Server:
    systemctl restart apache2
    systemctl restart rsyslog
    systemctl restart syslog-ng

    laufen ohne Fehlermeldungen durch. Habs auch schon mit diversen Browsern (mit und ohne Add-Ons) probiert.
    Dann hab ich die Anleitung von vorn bis hinten noch einmal „durchgearbeitet“ komme aber immer auf die leere weiße Seite.

    Ich hoffe, jemand hat eine Idee was ich noch testen kann.

    Antworten
  13. Hallo,

    ich hatte die config_class.php hier gepostet und für mich sah alles ok aus.

    Inzwischen habe ich einen neuen Server aufgesetzt (dank VM kein Problem ;) ) und wenn ich den Befehl: „syslog-ng -Fevd“ eingebe sehe ich, dass ich sehr schöne Log-Meldungen von meiner Firewall bekommen (in Putty).

    Jedoch bekomme ich beim Aufruf von 192.168.x.xxx/logger im Browser jetzt die Meldung (nachdem ich mich mit den Userdaten angemeldet habe):

    © lggr.io 2018 0 Abfragen in 0 Sekunden. Sitzung: 5567smk8qdsf8nf7vzteach92e von logger

    Die Pfade und die config_class.php sind korrekt (wie in meinen anderen beiden Posts heute Abend mitgeteilt). Irgendwie verzweifel ich gerade (oder ich bin nicht richtig ausgeschlafen).

    Die obige Anleitung ist auf jeden Fall sehr gut beschrieben. Daran kann es nicht liegen.

    Da fällt mir gerade ein: Ich habe PHP 7.3 installieren müssen. Kann es sein, dass hierbei etwas anderes irgendwo angegeben werden muss oder der Aufruf anders sein muss?

    Antworten
    • Hallo,

      ich glaube es liegt an den Datenbanksettings in der config_class.php, stimmen die alle?
      $this->setDbUser('user');
      $this->setDbPwd('pass');
      $this->setDbName('db');

      Wenn ich hier einen der Werte ändere (und daduch dann keinen Zugriff mehr auf die Datenbank habe),
      erhalte ich genau den Fehler den du beschreibst!

      leere Seite mit © lggr.io 2018 0 Abfragen in 0 Sekunden …

      Antworten
      • Hallo und vielen Dank schon mal für die Hilfe,

        jep, die Werte stimmten nicht alle (Sehr guter Hinweis! Vielen Dank). Diese habe ich soeben richtig eingetragen. Nun erhalte ich die Meldung:

        „Table ‚logger.Today‘ doesn’t exist“ = Also genau die Fehlermeldung, welche oben mit einem „Bug“ beschrieben wurden.

        Als Lösung soll in „/etc/mysql/mariadb.conf/50-server.cnf“ unter den Abschnitt [mysql] der Eintrag „lower_case_table_names = 1“ eingefügt werden.

        Dann entdecke ich jedoch, dass bei der Installation mariadb (Befehl: apt install -y mariadb-server mariadb-client) die Installation automatisch in das Verzeichnis „etc/mysql/mariadb.conf.d“ installiert wird (also mit einem „.d“ am Ende).

        Somit hat er natürlich recht, dass da was fehlt. Jedoch warum installiert sich mariadb nach „mariadb.conf.d“?

        Wenn ich den o. a. Befehl noch einmal ausführe, erhalte ich folgende Meldungen:

        mariadb-client ist schon die neueste Version (1:10.3.22-0+deb10u1).
        mariadb-server ist schon die neueste Version (1:10.3.22-0+deb10u1).

        Ich glaube, wir nähern uns einer Lösung jedoch bin ich gerade ein bisschen ratlos.

        Antworten
        • Die Anleitung ist natürlich schon etwas älter, mittlerweile können sich da ein paar Pfade geändert haben!
          /etc/mysql/mariadb.conf.d ist aber richtig, ändere das dort wie beschrieben ab. (werde das aktualisieren)

          Antworten
  14. Hallo,

    ok. dann wurde das geklärt.

    Folgendes habe ich probiert:

    – in dem Post von „burnbabyburn“ wurde folgendes geschrieben:
    neue Version vom Kai. Farbcode und ./do gefixt. Ebenso update auf chart.js 2.7.2 beachtet das beim contrib.tar.gz Paket!!
    https://github.com/burnbabyburn/lggr

    – diese Version heruntergeladen und auf dem Server mit dem original „logger“ verzeichnis ausgetauscht. Danach die einzelnen Dateien angepasst und gestartet.

    – Befehle auf Server:
    systemctl restart apache2
    systemctl restart rsyslog
    systemctl restart syslog-ng

    laufen ohne Fehlermeldungen durch.

    – Danach Server-IP/logger im Browser aufgerufen und siehe da, er zeigt etwas an. Allerdings nur Logs von sich selbst (also vom Server direkt)

    – von meiner Firewall stehen zwar einträge drin jedoch kann ich wenn ich auf „Suche“ klicke und dann auf „Server, Status und Filter…“ lediglich den Syslog Server sehen. Wenn ich auch „Server“ (rechts) klicke kommt zwar ein DropDown jedoch ist dieses leer.

    – Wenn ich auf „Statistik“ klicke, sehe ich zwar die Überschriften „Meldungen pro Stunde“, „Server“, „Relative Verteilung der Level“, „Meldungen pro Server“ und „Program Cloud“ jedoch da drunter jeweils leere weiße Felder.

    Allerdings bei „Datenbank“ steht: Einträge in Datenbank 1.146 – Ätester Eintrag 2020-03-02 20:27:32 Archiviert: 0″

    Ich schaue mal weiter, ob ich neue Erkenntnisse bekomme jedoch weiss ich i. M. nicht noch wo ich suchen könnte

    Antworten
  15. Hallo,

    eine Sache ist mir gestern noch aufgefallen und vielleicht ist das ein Auslöser meiner Problematik:

    In der Anleitung oben steht, dass die db.sql zu erstellen ist. Dort steht u.a., der einzufügende Text „…. SET latin1 */;
    USE `logger`;…….“.
    Müsste es nicht anstatt „latin1“ —> „utf8“ heissen. Wird vielleicht die db falsch angelegt und deshalb kommen manche aufrufe falsch an?

    Antworten
    • In der Anleitung steht NICHT dass die db.sql zu erstellen ist.
      Die gibt es ja schon und kommt mit lggr.io und deren Inhalt sollte eigentlich richtig sein.
      Dort muss lediglich der Datanbankname vor dem import angepasst werden.

      Ob das mit der Kodierung zu tun hat kann ich dir nicht sagen, müsste man einfach mal ausprobieren. ;)

      Antworten
  16. Hallo,
    ich poste mal ein paar Fehlermeldungen die ich bekomme. Vielleicht kommen wir so zum Ziel:

    1. Fehler

    Error occurred while trying to send a message, trying again; driver=’d_newmysql#0′, location=’/etc/syslog-ng/conf.d/08logger.conf:5:1′, worker_index=’0′, retries=’1′, batch_size=’1′

    2. Fehler

    Error running SQL query; type=’mysql‘, host=’localhost‘, port=“, user=’logger‘, database=’logger‘, error=’1366: Incorrect integer value: \’\‘ for column `logger`.`newlogs`.`pid` at row 1′, query=’INSERT INTO newlogs (date, facility, level, host, program, pid, message) VALUES (\’2020-03-05 00:00:10\‘, \’kern\‘, \’alert\‘, \’192.168.77.1\‘, \’srv-lrt214\‘, \’\‘, \’kernel: #warn ACCESS_RULE: IN=eth0 SRC=192.168.77.112 DST=54.245.98.57 LEN=76 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=23533 DPT=32100 LEN=56 \‘)‘

    Zur Info: 192.168.77.1 ist ein linksys firewall router (lrt214) und sendet die logs zu dem logger. In der Meldung geht es um eine Firewallregel zu einer Kamera 192.168.77.112

    Gibt es dazu eine einfache Lösung.

    Grins, ausser: alles neu machen ;)

    Antworten
    • Das könnte vielleicht an dem SQL_MODE der aktuellen MariaDB Version liegen. (https://mariadb.com/kb/en/sql-mode/)

      Wenn das noch ein Testsystem mit nur der lggr Datenbank ist, probier mal folgendes aus (ohne Gewähr)
      MariaDB [(none)]> SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';
      MariaDB [(none)]> SET GLOBAL sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';

      Hab gegoogelt, bin kein Datenbankprofi! ;)

      Antworten
      • Hallo,

        ich sag mal: VIELEN DANK

        jetzt sehe ich Logdateien und Statistiken!!! SUPER, dass hat geholfen.

        Eine Fage noch:

        Wenn ich auf „Server, Status und Filter…“ sehe ich rechts u. a. „Server“. Leider ist das Dropdown-Feld leer.

        Wenn ich auf „Statistik“ klicke, sehe ich alle meine Server, welche Logs zum Syslog-Server senden.

        Super wäre es, wenn ich unter „Server, Status und Filder…“ das DropDown ebenfalls befüllt bekommen würde. Dann kann ich mir die Echtzeit-Logs von einem bestimmten Server anschauen.

        Antworten
        • Ich glaub die Liste wird durch die cron_often.php aktualisiert.
          Die sollte ja durch die lggr cronjobs alle paar Minuten ausgeführt werden.

          Antworten
  17. Hallo,

    wie gestern beschrieben, jetzt sehe ich einiges.

    Jedoch heute morgen musste ich diese beiden Befehle wieder eingeben
    "SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';" und
    "SET GLOBAL sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';"

    versuche zu „googeln“ ob man die automatisch durchführen kann, jedoch noch nichts gefunden.

    Antworten
  18. Hi,

    Danke für die Anleitung. Die Installation ist wirklich nicht ohne.
    Deine Anleitung hat ja /var/www/html/logger genutzt, bitte deswegen die Cron Einträge dafür noch anpassen:
    30 1 * * * www-data /usr/bin/php /var/www/html/logger/admin/cron.php
    */5 * * * * www-data /usr/bin/php /var/www/html/logger/admin/cron_often.php

    Grüße,
    Oliver

    Antworten

Schreibe einen Kommentar