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.
15.07.2024 - EOL 14.02.2021 - neue GitLab Version installiert 03.01.2021 - install_lggr.io script veröffentlicht (fĂŒr die alte GitHub Version) 02.01.2021 - Anleitung aktualisiert (neue und alte lggr.io Version) 05.12.2020 - Anleitung aktualisiert (Optimierung der Datenbank von Simon) 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
lggr.io (neue Version, GitLab)
Wird nur noch auf GitLab weiterentwickelt. Das alte GitHub Repository ist archived und EOL.
Nach einigen Versuchen hab ich die neue Version zum laufen bekommen.
- Debian 10.8, PHP 7.3
- meine Installationsnotizen / Anleitung
Sieht mal so aus, als wĂŒrde alles passen… ;)
lggr.io 2018 (alte Version, GitHub)
Software
- Apache
- MariaDB
- PHP
- Redis
- Syslog-NG
mein install_lggr.io script (neu)
Da die Installation des lggr.io Servers nicht gerade leicht von der Hand geht, hab ich dafĂŒr ein script geschrieben. (oder eher zusammengestĂŒckelt)
Voraussetzung ist ein frisch installierter Debian 11 Server ohne installierte Zusatzpakete!
Alle Schritte aus meiner Anleitung werden automatisiert. (Bis auf die Datenbankoptimierung von Simon, die kommt vielleicht spÀter noch dazu.)
Hab es x-mal unter Debian 11 getestet. Programmiertechnisch bestimmt nicht gerade sauber und gut, aber es funktioniert! ;)
# download und installation wget https://raw.githubusercontent.com/mbachmann-lan/install-script_lggr.io_2018/master/install_lggr.io_2018.sh chmod +x install_lggr.io_2018.sh ./install_lggr.io_2018.sh
install_lggr.io_2018.sh – Damit ist der lggr.io Server in ca. 2 Minuten installiert und einsatzbereit. :-)
manuelle Installation
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) {
Datenbank optimieren (optional)
Danke an den Simon! (Kommentar vom 3. September 2020)
Ab einer gewissen Menge an Log-EintrÀgen in der Datenbank ist die Web-OberflÀche unbenutzbar langsam und man bekommt Timeouts.
Das fing bei uns ab ca. 5 Millionen DatensÀtze bei folgender Ausstattung an: 2 CPUs, 6 GB RAM, MySQL 5.7
Folgendes haben wir umkonfiguriert, um die Performance erheblich zu steigern:
– Erstellen eines Index fĂŒr die Datenbank logger (einfach, nur ein MySQL-Befehl, aber ohne Schritt 3 unbrauchbar)
– Aktivieren des InnoDB RAM-Cache mit 4 GB (einfach, bloĂ zwei EintrĂ€ge in der MySQL-Config)
– Auf die Verwendung von Views verzichten, da diese in unserem Fall den Index nicht verwenden können.
(benötigt einige Ănderungen in der Datei “/var/www/html/logger/inc/lggr_class.php”)
Durch diese drei Schritte ist unser Logger mit 65 Millionen DatensÀtzen, bei selber Ausstattung, immer noch (mit etwas Geduld) nutzbar.
1) Index ĂŒber alle Spalten erstellen welche abgefragt werden sollen, auĂer “message”.
$ mysql -u root -p MariaDB [(none)]> use logger; MariaDB [logger]> ALTER TABLE newlogs ADD INDEX (date, facility, level, archived, idhost, host, program); # Zum prĂŒfen, ob der Index erstellt wurde. MariaDB [logger]> SHOW INDEX FROM newlogs;
2) In die /etc/mysql/mariadb.conf.d/50-server.cnf zwei EintrĂ€ge hinzufĂŒgen. (fĂŒr 4GB RAM Cache)
[mysqld] ... innodb_log_file_size = 768M innodb_buffer_pool_size = 4096M
Datenbankserver neu starten.
$ systemctl restart mariadb.service
3) Die lggr_class.php mit der angepassten von Simon ĂŒberschreiben.
$ cd /var/www/html/logger/inc $ mv lggr_class.php lggr_class.php_ORG $ wget https://bachmann-lan.de/projects/lggr.io/lggr_class.php_modified-by-simon -O lggr_class.php
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. :)
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Ă
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/');
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”)
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
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
In der Hauptansicht auf Server Status und Filter …
Dort kannst du auch nach Hosts filtern!
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
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.
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
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
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. ;)
Vielen Dank!
Getan was du geschrieben hast und jetzt lÀuft es endlich :)
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?
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. ;)
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”)
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
Gute Arbeit! Muss ich bei Gelegenheit mal ausprobieren. ;)
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
Gute Idee mit dem Dockerimage. :)
Poste das bitte auch mal auf der Seite von Kai.
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!
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
LĂ€dst du in der inc/lggr_class.php den local oder den remote storage?
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!
Danke, habs oben ergÀnzt.
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.
ĂberprĂŒfe nochmal in der inc/config_class.php ob die Pfade zum contrib Ordner stimmen.
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?
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 …
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.
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)
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
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?
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. ;)
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 ;)
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! ;)
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.
Ich glaub die Liste wird durch die cron_often.php aktualisiert.
Die sollte ja durch die lggr cronjobs alle paar Minuten ausgefĂŒhrt werden.
Gerade die Firewalls haben eine session id bzw. einen Zeitstempel hinter der pid. Das Problem hatte ich bei openwrt auch. Die PID die hier ĂŒbermittelt hatte das Format: nnnnn.mmmm. Dadurch war das ganze unbenutzbar da das kein ‘int’ ist sondern ein string.
Man kann aber in der bestehenden Datenbank den Datentyp der Tabellenspalte ‘pid’ anpassen. z.B. von int auf string bzw varchar. Dann klappt das auch mit werten wie denen oben.
Die Anpassung kann man z.B. in pypmyadmin mit folgendem kommando erreichen:
alter table newlogs change pid pid varchar(50);
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.
In die /etc/mysql/my.cnf einfĂŒgen:
[mysqld]
sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
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
Ups, habs geÀndert, vielen Dank! :)
Werde die Anleitung demnÀchst nochmal komplett durchgehen. ;)
Danke fĂŒr die Anleitung. Ich bekomme beim Starten von syslog-ng per Debug folgenden Fehler:
[2020-04-08T12:59:33.016634] Module loaded and initialized successfully; module=’afsql’
Error parsing afsql, inner-dest plugin <= not found in /etc/syslog-ng/conf.d/08logger.conf:
vg
Falk
Schau mal ob das Paket libdbi1 installiert ist. (Debian)
Es geht nun… WeiĂt du wie ich diese Error’s weg bekomme?
I/O error occurred while writing; fd=’26’, error=’No space left on device (28)’
Error occurred while trying to send a message, trying again; driver=’d_newmysql#0′, location=’/etc/syslog-ng/conf.d/08logger.conf:5:5′, worker_index=’0′, retries=’1′, time_reopen=’60’, batch_size=’2′
Multiple failures while sending message(s) to destination, message(s) dropped; driver=’d_newmysql#0′, location=’/etc/syslog-ng/conf.d/08logger.conf:5:5′, worker_index=’0′, retries=’3′, batch_size=’1′
Multiple failures while sending message(s) to destination, message(s) dropped; driver=’d_newmysql#0′, location=’/etc/syslog-ng/conf.d/08logger.conf:5:5′, worker_index=’0′, retries=’3′, batch_size=’1′
Multiple failures while sending message(s) to destination, message(s) dropped; driver=’d_newmysql#0′, location=’/etc/syslog-ng/conf.d/08logger.conf:5:5′, worker_index=’0′, retries=’3′, batch_size=’1′
Es lĂ€uft als Container in Proxmox… Platz ist genug vorhanden
Der “No space left on device” wĂŒrd mich aber schon nervös machen. ;)
Versuchs mal mit diesem Eintrag in der /etc/mysql/my.cnf
[mysqld]
sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
Habe es mal eingetragen in 50-server.cnf… Werde es mal beobachten und berichten danke
Damit gab es bei mir keine VerÀnderung, in der my.cnf dann schon.
Sieht auf jedenfall besser aus danke…
Freut mich :)
Wie hast du denn diesen Fehler wegbekommen?
ich habe den auch:
Error parsing afsql, inner-dest plugin username(“logger”) ^^
libdbi1 ist installiert
Vielen Dank
Markus
Hallo Markus,
schau mal ob syslog-ng-mod-sql installiert ist.
Hallo zusammen,
ich hĂ€tte noch folgende Anmerkung da ich darĂŒber gestolpert bin und es noch nicht in den Kommentaren erwĂ€hnt wurde :)
Ab einer gewissen Menge an Log-EintrÀgen in der Datenbank ist die Web-OberflÀche unbenutzbar langsam und man bekommt Timeouts.
Das fing bei uns ab ca. 5 Millionen DatensÀtze bei folgender Ausstattung an: 2 CPUs, 6 GB RAM, MySQL 5.7
Folgendes haben wir umkonfiguriert, um die Performance erheblich zu steigern:
– Erstellen eines Index fĂŒr die Datenbank logger (einfach, nur ein MySQL-Befehl, aber ohne Schritt 3 unbrauchbar)
– Aktivieren des InnoDB RAM-Cache mit 4 GB (einfach, bloĂ zwei EintrĂ€ge in der MySQL-Config)
– Auf die Verwendung von Views verzichten, da diese in unserem Fall den Index nicht verwenden können.
(benötigt einige Ănderungen in der Datei “/var/www/html/logger/inc/lggr_class.php”)
Durch diese drei Schritte ist unser Logger mit 65 Millionen DatensÀtzen, bei selber Ausstattung, immer noch (mit etwas Geduld) nutzbar.
Das bekommen wir in 4 Wochen (bis die DatensÀtze gelöscht werden) leicht zusammen, da wir 4 Firewalls loggen lassen :)
Noch in Tipp:
Solltet ihr Fehler bei den Inserts in die Datenbank bekommen, kann es am Zeichensatz liegen.
Wir hatten dieses Problem, wenn Benutzer Emojis im Email-Betreff verwendet haben.
Um diese Speichern zu können muss die Datenbank “logger” aber den Zeichensatz “utf8mb4” speichern können.
Das kann im Nachhinein aber recht einfach umformatiert werden :)
Bei Fragen schreibt mich einfach an ;)
Vielen Dank fĂŒr die Infos!
Das es ab einer gewissen Anzahl “trĂ€ge” wird musste ich leider auch schon feststellen ;)
Kein Problem ;)
Ich kann dir auch unsere lggr_class.php zukommen lassen, falls du die Anleitung erweiteren möchtest :)
An sonsten sind hier noch die Befehle / Konfig fĂŒr Schritt 1 und 2:
Befehle Schritt 1:
mysql -u root -p
use logger;
ALTER TABLE newlogs ADD INDEX (date, facility, level, archived, idhost, host, program);
SHOW INDEX FROM newlogs; (Zum prĂŒfen, ob Index erstellt wurde)
Im Grunde wird hier ein Index ĂŒber alle Spalten erstellt, welche abgefragt werden, auĂer “message”.
Konfig Schritt 2 (MySQL):
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Folgende EintrĂ€ge hinzufĂŒgen (fĂŒr 4 GB RAM Cache):
innodb_log_file_size = 768M
innodb_buffer_pool_size = 4096M
Speichern
service mysql restart
Gerne!
WÀre dann aber auch gut zu wissen was du in der lggr_class.php geÀndert hast.
sry fĂŒr die spĂ€te Antwort, war im Urlaub :D
Also hier ist der Inhalt unserer lggr_class.php. Das Original steht immer auskommentiert vor der Anpassung ;)
Vielen Dank dafĂŒr!
Hier die Datei von Simon: lggr_class.php
Hallo,
ich bekomme beim Aufruf von der Web-UI nach Eingabe von Benutzername und Passwort einen HTTP Error 500.
Schau mal in deine Logfiles.
Stimmen die Pfade in der inc/config_class.php?
Hallo super Anleitung muss man ja mal sagen. Ich habe den Syslog Server am laufen und sehe auch den Live log und die Server. Aber habe ein Problem mit den Statistiken dort sehe ich nur die Ăberschriften und einen weiĂen hintergrund mehr wird dort nicht Angezeigt woran könnte das liegen? MFG
In der Datei inc/config_class.php wird auf den contrib Ordner verwiesen. Kontrollier mal ob die Pfade stimmen.
/* 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/');
Stimmt hier der Pfad nÀmlich nicht, hat das genau den Effekt den du beschrieben hast.
Guten Abend,
danke fĂŒr die Antwort leider kam ich erst jetzt wieder dazu das Projekt weiter zu machen.
Ich habe die Pfade alle kontrolliert die zeigen wie gepostet genau dort hin.
Ich habe auch den contrib Ordner auch schon in html abgelegt das brachte aber auch keine Besserung.
MfG
Dennis
In welches Verzeichnis hast du den lggr.io installiert?
Was erscheint denn, wenn du die Pfade aufrufst?
http://lggr-server-ip/logger/contrib/bootstrap/css/bootstrap.css
http://lggr-server-ip/contrib/bootstrap/css/bootstrap.css
Das Verzeichnis ist: /var/www/html/logger
Bei der erste Link funktioniert der zweite aber nicht wird wohl daran liegen das mein contrib Ordner in dem Verzeichnis “/var/www/html/logger/contrib” liegt.
In der config_class.php sehen meine Verlinkungen so aus:
/* 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/’);
MfG
Dennis
Dann stimmen auch die Pfade und es sollte somit funktionieren.
/* local storage */
/*
/* remote storage */
// hier alles deaktivieren!
Die EintrÀge finde ich bei mir auch, sind auch nur Warnings.
Dann muss ich jetzt leider passen. :(
Der webuser benötigt Schreibzugriff auf das cache Verzeichnis.
chown www-data:www-data /var/www/html/logger/cache/
Ja.
Hallo,
wĂ€re es möglich eine funktionierende lggr_class.php mit den Anpassungen zur Indexnutzung zu posten? Danke und GruĂ
In meiner Antwort auf Simon vom 8. Oktober 2020 ist die Datei verlinkt.
Hallo,
die Datei hatte ich natĂŒrlich gesehen und auch verwendet incl. Indexerstellung vorher.
Bekomme aber eine 500 (Internal Sever Error) beim Aufruf der Live-Seite.
Da mĂŒsste der Simon die Datei nochmal schicken. Nicht das beim copy & paste was verschluckt wurde.
Findest du vielleicht in den logs etwas dazu?
Hab die Datei von Simon erneuert!
Hallo,
finde da leider nichts. Habe die Anpassungen einzeln ĂŒbernommen und die Originale auskommentiert ĂŒbernommen.
Lad dir nochmal die aktualisierte lggr_class.php herunter.
Danke. Nun funktioniert es.
vielen Dank fĂŒr die Anleitung will mich damit mal ĂŒber die Feiertage an dem Projekt versuchen,
ich habe aber vorher noch eine Frage nur um sicher zu gehen
oben heiĂt es VM mit 2GB Ram unten heiĂt es 4GB Ram Cache ? ist das egal oder muss der VM mehr RAM zugewiesen werden?
Der RAM Cache ist fĂŒr die Optimierung der Datenbank von Simon.
Wenn du die nutzen möchtest, sollte der VM natĂŒrlich mehr RAM zugewiesen werden.
FĂŒr alle die nach 10maligem Lesen der (guten!!!) Anleitung und der (sehr hilfreichen!!!!) Kommentare immer noch keine funktionierende Statistikanzeige bekommen,
hier die entscheidende ErgÀnzung zum Kommentar von Dennis
** Zitat Kommentar Dennis ***
Das Verzeichnis ist: /var/www/html/logger
Bei der erste Link funktioniert der zweite aber nicht wird wohl daran liegen das mein contrib Ordner in dem Verzeichnis â/var/www/html/logger/contribâ liegt.
In der config_class.php sehen meine Verlinkungen so aus:
/* 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/â);
MfG
Dennis
*** Zitat Kommentar Dennis Ende ***
Ihr mĂŒsst die Sternchen vor jeder einzelnen Zeile entfernen, es muss hinterher folgendermaĂen aussehen:
/* 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/’);
} // constructor
} // class
Dann funktioniert es auch sofort….
GruĂ
ruedisponk
DANKE! :-)
Tolle Anleitung und tolles Tool, das ich schon seit lÀngerem einsetze.
Wir kann man eigentlich obsolete Devices (Server) entfernen?
Dachte das geht automatisch ĂŒber die cronjobs?
Ansonsten mĂŒsste man selber in der Datenbank aufrĂ€umen.
Hallo,
hat es jemand auf Debian 10.7 zum Laufen gebracht?
WĂŒrde mich ĂŒber eine Antwort freuen!
Danke
eddy
lggr.io (alte Version) lÀuft unter Debian 10.x
Oder meinst du die neue Version?
Meinte die neue Version.
Danke
FĂŒr die neue GitLab Version hab ich oben unter: lggr.io (neue Version, GitLab) meine Installationsschritte mal angehangen.
erhalte unter 10.8 folgende Meldung:
500 Internal Server Error
Hier meine config_class.php :
setDbUser(‘lggrviewer’);
$this->setDbPwd(‘efH34q30’);
$this->setDbName(‘lggr’);
// Set your preferred language en_US, de_DE, or pt_BR
$this->setLocale(‘en_US’);
/* local storage */
$this->setUrlBootstrap(‘/lggr/contrib/bootstrap/’);
$this->setUrlJquery(‘/lggr/contrib/jquery/’);
$this->setUrlJqueryui(‘/lggr/contrib/jqueryui/’);
$this->setUrlJAtimepicker(‘/lggr/contrib/timepicker/’);
$this->setUrlChartjs(‘/lggr/contrib/chartjs/’);
$this->setUrlJQCloud(‘/lggr/contrib/jqcloud/’);
} // constructor
} // class
Schau mal in die Apache Logfiles.
Du installierst hier aber die alte GitHub Version, oder?
Wenn das deine komplette config_class.php ist, fehlen da aber ein paar Zeilen!
Ja, habe ich :
wget https://bachmann-lan.de/projects/lggr.io/install_lggr.io.sh
Hab das script gerade nochmal in einem LXC Container mit Debian 10.8 ausgefĂŒhrt, lggr.io lĂ€uft.
Vielen Dank fĂŒr deine MĂŒhen und Hilfe!!!!
Habe auch ein frisches 10.8 (CD_ISO ) installiert und nur deine install_lggr.io.sh installiert.
Unter LMDE 4 Debbie habe ich es zuerst installiert und bin nur zur Anmeldung gekommen, aber nicht weiter.
Hast du noch ein Tipp unter 10.8 fĂŒr mich?
Merci eddy
Mein install script basiert auf einem Debian Server ohne GUI, also kein Desktop Linux. (hab ich nie getestet)
Grundlage sollte eine Debian Netinst Installation sein! https://www.debian.org/CD/netinst
ok Danke , werde ich morgen mal installieren und testen!
Guten Abend,
ich habe zweimal Debian 10.8 Netinst installiert und bekomme leider immer noch 500 Internal Server Error Meldung.
Irgendwo mache ich einen doofen Fehler, weiĂ aber nicht wo… :-(
Schau mal ins Apache logfile, da solltest du sehen wo es klemmt.
– Alte Github oder neue Gitlab Version?
– Installation manuell oder mit meinem script?
Ich habe dein script immer wieder verwendet!
install_lggr.io script (neu) ==> Ist das dein neuer script mit Debian 10.8, PHP 7.3?
Ich bin jetzt nicht der Linux Admin, der sofort weiĂ wo man welche Befehle absetzt und wie man die Ausgaben deutet. ;-)
Vielen Dank!
Ich kann das leider nicht nachvollziehen.
Hab mir einen neuen Server mit dem debian-10.8.0-amd64-netinst.iso aufgesetzt.
Mein install_lggr.io.sh ausgefĂŒhrt und lggr.io lĂ€uft ohne Probleme.
Hallo,
vielen Dank fĂŒr die Doku und die Tips.
Ich habe lggr ohne das Script installiert.
Bei mir ist in dem Filterbereich jetzt die Serverauswahl leer. Hat da jemand eine Idee?
GruĂ
Bollmeyer
Die Serverauswahl sollte ĂŒber den cronjob automatisch aktualisert werden.
Dauert also etwas bis die Werte in der Datenbank landen.
Hallo zusammen,
erstmal, vielen Dank fĂŒr euere Hilfe. Ich konnte alles auf Anhieb einrichten, funktioniert tadellos… Ich wĂŒrde aber gerne das ganze mit einer Oracle Datenbank verbinden wollen, hat den je jemand so was versucht? Ist es ĂŒberhaupt machbar?
WĂ€re sehr dankbar fĂŒr jeden Rat in der Hinsicht.
Vielen Dank
Daniel
Hallo Zusammen,
vielen Dank fĂŒr die gute Anleitung.
Allerdings stimmt das Installationsskript und die Anleitung nicht mehr mit der aktuellen Gitlab Version ĂŒberein. Den Ordner “Doc” gibt es nicht mehr und das Skript lĂ€uft dadurch in einen Fehler.
Viele GrĂŒĂe aus der Wetterau.
Tim
Hallo Tim,
meine Anleitung und install_lggr.io script sind nur fĂŒr die alte GitHub Version und haben nichts mit der neuen GitLab Version zu tun.
FĂŒr die GitLab Version gibt es meine Installationsnotizen die manuell ausgefĂŒhrt werden, da gibt es kein script.
Ich verstehe dein Kommentar/Problem nicht so ganz.
GruĂ, Michael…
Hi Michael,
danke fĂŒr die tolle Anleitung. Es hat fast auf Anhieb mit der Installation auf meinem RasPi geklappt.
Vieles muss man ja mit sudo Rechten installieren / konfigurieren. Nur bei der Einrichtung des Webinterfaces da muss man den composer mit normalen User Rechten ausfĂŒhren. Was in der Anleitung vom 14.02.2021 aus meiner Sicht auch fehlt ist wer auf das Verzeichnis /var/www/html berechtigt werden muss. Ich habe es bei mir da privat einfach auf Vollzugriff fĂŒr alle gestellt ;-)
Danke fĂŒr Deine MĂŒhe und viele GrĂŒĂe,
Stephan
Hallo Stephan,
danke fĂŒr deine Infos.
Werde die Anleitung nochmal durchgehen ;)
GruĂ, Michael…
Hallo,
danke fĂŒr die Anleitung.
Habe aber ein Probem bei der Erstellung des Benutzers.
Nach Eingabe des Befehls:
$ php admin/auth_register.php –email=lggr@lggr.io –password=test1234
Kommt diese Fehlermeldung:
PHP Fatal Error: Uncaught TypeError: Argument 5 passed to PHPAuth\Auth::register() must be of type string, null given, called in /var/www/html/admin/auth_register.php on line 50 and defined in /var/www/html/vendor/phpauth/phpauth/Auth.php:188
Stack trace:
#0 /var/www/html/admin/auth_register.php(50): PHPAuth\Auth->register (‘lggr@lggr.io’, ‘test1234’, ‘test1234’, Array, NULL, false)
#1 {main}
thrown in /var/www/html/vendor/phpauth/phpauth/Auth.php on line 188
Bin den Installationsnotizen/Anleitung gefolgt und nutze ein Debian 10.5 Image mit php7.3 in VBox
Ăber localhost/login.php wird die Anmeldemaske angezeigt jedoch funktioniert der lokale Login auch nicht, werde auf dologin.php weitergeleitet, ohne Inhalt.
Hoffe jemand kann mir weiterhelfen.
GruĂ, Dennis
Hallo Dennis,
den Fehler bekomme ich jetzt auch. (hab nochmal frisch installiert)
Probier mal in der inc/Lggr.php den login zu umgehen. Setze die IP von dem Rechner der zugreifen will.
// if ($_SERVER["REMOTE_ADDR"] === "127.0.0.1") {
if ($_SERVER["REMOTE_ADDR"] === "IP-DEINES-RECHNERS") {
GruĂ, Michael…
Habe den Fehler gefunden.
In der admin/auth_register.php, die Zeile 50 Àndern:
//$o = $auth->register($u_email, $u_password, $u_password, Array(), null, false);
$o = $auth->register($u_email, $u_password, $u_password, Array(), false);
Hallo zusammen;
vielen Dank fĂŒr die Anleitung vielleicht kann mir jemand bei meinem Problem helfen.
Ich bin die Anleitung Schritt fĂŒr Schritt durchgegangen bekomme jedoch nur eine weiĂe Seite angezeigt.
Meine config_class.php sieht wie folgt aus:
*** wurde von mb-press entfernt ***
Ich habe auch schon versucht die pfade nur auf /logger/contrib/bootstrap zB zu setzen.
Egal wie die Pfade angepasst sind bleibt meine Webseite leider weiĂ.
Hoffe mir kann jemand weiterhelfen :)
Danke im voraus.
Mit freundlichen GrĂŒĂen
Moritz
Hallo Moritz,
z.B.
wwwroot ist: /var/www/html
lggr ist installiert unter: /var/www/html/lggr
contrib ist installiert unter: /var/www/html/lggr/contrib/
Dann sollte die config_class.php in etwa so aussehen:
--- schnipp ---
// Set your preferred language en_US, de_DE, or pt_BR
$this->setLocale('en_US');
/* local storage */
$this->setUrlBootstrap('/lggr/contrib/bootstrap/');
$this->setUrlJquery('/lggr/contrib/jquery/');
$this->setUrlJqueryui('/lggr/contrib/jqueryui/');
$this->setUrlJAtimepicker('/lggr/contrib/timepicker/');
$this->setUrlChartjs('/lggr/contrib/chartjs/');
$this->setUrlJQCloud('/lggr/contrib/jqcloud/');
} // constructor
} // class
NUR local storage, KEIN remote storage!
Hallo,
also meine Config_class.php stimmt wĂŒrde ich sagen.
Meine logger dateien bzw contrib sind auch alle am richtigen Ort.
Leider bekomme ich immernoch nur eine weiĂe Seite.
Ich schÀtze ich werde von vorne nochmal die Anleitung durchgehen auf einer neuen VM
Freundliche GrĂŒĂe
Moritz
Wenn du eh eine neue VM fĂŒr nur lggr.io erstellst, probier doch mal meinen Installer. (ist fĂŒr die alte Github Version)
# download und installation
wget https://bachmann-lan.de/projects/lggr.io/install_lggr.io.sh
chmod +x install_lggr.io.sh
./install_lggr.io.sh
Moin,
bei deinem Skript habe ich kein Problem.
Jedoch wollte ich es gerne auch manuell versuchen.
Klappt soweit gut, habe nur das Problem das ich die Anzeige bekomme “You must enable basic authentication”.
Ich habe meine 000-default.conf mit der aus deinem Skript verglichen und es steht 1 zu 1 das gleiche drin.
Den chown Befehl habe ich auch ausgefĂŒhrt leider ohne Erfolg.
Habe ich was ĂŒbersehen?
Mit freundlichen GrĂŒĂen
Moritz
Schau mal was in der .htaccess Datei steht (der Pfad zur Datei)
ggf. Datei anlegen und Benutzer mit Passwort erstellen
htpasswd -c /var/www/webuser logger
Ok ja ich habe bei meinem manuell initialisierten die .htaccess Datei hinzugefĂŒgt. Die ist warum auch immer verloren gegangen.
Ich kann mich mit meinen Daten anmelden jedoch bekomme ich jetzt leider den Fehler “Table ‘logger.Today’ doesn’t exist”.
Muss ich die db.sql Datei neu einfĂŒgen oder wo ist das Problem?
Vielen Dank schonmal fĂŒr deine Hilfe du hast mich sehr viel weiter gebracht :)
In der /etc/mysql/mariadb.conf.d/50-server.cnf unter dem Abschnitt [mysqld] folgenden Eintrag hinzufĂŒgen:
lower_case_table_names = 1
Hallo,
wo finde ich den die .htaccess Datei, bzw. wie kann ich drauf zugreifen?
Im git welches ich nutze steht das es auf /var/www/webuser zugreift. Die Datei existiert auch mit User drin.
Die liegt in deinem lggr Verzeichnis.
Weder bei meinem manuell aufgesetzten logger verzeichnis noch bei dem vom Skript ist die .htaccess datei vorhanden.
Wenn ich nano versuche kann ich nur eine neue datei erstellen.
Aber das logger welches mit dem Skript erstellt wurde, lÀuft ja auch ohne das diese Datei sichtbar ist in meinem logger verzeichnis.
Die muss und ist auch da.
cd /tmp/
git clone https://github.com/kkretsch/lggr.git
Cloning into 'lggr'...
ls -la lggr/
-rw-r--r-- 1 root root 3319 Jan 14 21:00 do.php
-rw-r--r-- 1 root root 15086 Jan 14 21:00 favicon.ico
drwxr-xr-x 8 root root 4096 Jan 14 21:00 .git
-rw-r--r-- 1 root root 47 Jan 14 21:00 .gitignore
-rw-r--r-- 1 root root 916 Jan 14 21:00 .htaccess
drwxr-xr-x 2 root root 4096 Jan 14 21:00 icos
Ok ich ziehe meine Frage zurĂŒck ich habe das DDebug gerade ĂŒberlesen. Bei mir lĂ€ufts auch endlich.
Vielen Dank fĂŒr die Hilfe.
Hallo nochmal,
wenn ich in der 08logger.conf versuche den syslog auf:
source s_net { tcp(ip(0.0.0.0) port(514) log-iw-size(2000) );udp(); };
einzustellen, bekomme ich bei syslog-ng -Fevd angezeigt:
"Error binding socket; addr='AF_INET(0.0.0.0:514)', error='Address already in use (98)' ".
Wenn ich jetzt nachschaue per netstat welcher Service diesen Port belegt, ist das Syslog.
Leider bekomme ich auch keine TCP Logs von meiner Firewall dadurch.
Hat jemand eine Idee wie ich das lösen kann?
Freundliche GrĂŒĂe
Moritz
vielleicht:
systemctl stop syslog-ng.service
systemctl start syslog-ng.service
Hi,
hast Du eine Idee wie man verhindern kann, das die lokalen Syslog-Medungen des Hosts selbst mit in die Datenbank gelangen? Ziel ist es, nur die Log-Meldung in der DB zu haben, welche ĂŒber Syslog TCP/UDP eingeliefert werden. Sozusagen nur “fremde” Logs.
Ich sehe den Wald vor lauter BĂ€umen nicht. :-(
Danke
Daniel
Da muss ich leider passen. Frag Google. ;)
die Lösung ist in der 08-logger.conf
die lokalen Logs kommen ĂŒber den Eintrag source(s_src).
Wenn man diesen entfernt, dann sind im Logger nur die Remote-Logs.
log {
source(s_net); source(s_src); filter(f_no_debug); destination(d_newmysql);
};
Danke fĂŒr die Info!
Hey,
ich habe Schwierigkeiten beim einbinden eines Clients. Nutze VirtualBox fĂŒr den Server und den Client. Der Server lĂ€uft ohne PRobleme aber wenn ich die “10lggr-client.conf” mit dem Inhalt:
destination d_net { udp(“LogserverIP” port(514) log_fifo_size(1000)); };
log { source(s_src); destination(d_net); };
erstelle, kommen die Logs nicht an.
Unter /var/log/messages bekomme ich folgende Fehlermeldung:
logServ syslog-ng[2420]: Syslog connection established; fd=’12’, server=’AF_INET(LogserverIP:514)’, local=’AF_INET(0.0.0.0:0)’
logServ syslog-ng[2420]: Syslog connection broken; fd=’12’, server=’AF_INET(LogserverIP:514)’, time_reopen=’60’
Ăber rsyslog funktioniert es auch nicht, Inhalt:
*.* @LogserverIP
Server und Client sind im gleichen Netz, syslog-ng und rsyslog mehrmals neugestartet.
Danke und viele GrĂŒĂe,
Markus
AuĂerdem habe ich folgende Fehlermeldung auf dem Logsever:
syslog-ng -Fevd:
Error binding socket; addr=’AF_INET(127.0.0.1:514)’, error=’Address already in use (98)’
Error initializing message pipeline; plugin_name=’tcp’, location=’/etc/syslog-ng/conf.d/08lggr.conf:10:1′
Die /etc/syslog-ng/conf.d/08lggr.conf sieht wie folgt aus:
filter f_no_debug {
not level(debug);
};
options {
keep_hostname(yes);
};
source s_net {
tcp( ip(“127.0.0.1”) port(514) max-connections(20) log-iw-size(2000) );
};
destination d_newmysql {
sql(
flags(dont-create-tables,explicit-commits)
session-statements(“SET NAMES ‘utf8′”)
batch-lines(10)
batch-timeout(5000)
local_time_zone(“Europe/Berlin”)
type(mysql)
username(“lggrsyslog”)
password(“test1234”)
database(“lggr”)
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); filter(f_no_debug); destination(d_newmysql);
};
Address already in use (98)
Da lÀuft schon was auf port 514!? rsyslog oder syslog-ng, nicht beides.
Der Server verwendet TCP und die Clients aber UDP?
Dickes Dankeschön, lÀuft tiptop.
Moin,
ich habe leider das Problem, dass die statistics leer sind, echtzeit nicht aktualisiert und das ausklappen von “Server Status und Filter …” geht nicht.
Sieht nach einem javascript Problem aus, oder?
Welche Version hast du installiert? GitHub oder GitLab
Hast du manuell installiert oder mein installscript genommen?
Ubuntu 22.04, php 7.4, mysql 8.0
GitLab eher manuell, aber eben nach Anleitungen von
sugar-camp
der anleitung hier und lggr.io
https://www.sugar-camp.com/anleitung-zentraler-logserver-mit-syslog-ng-lggr-mysql/
Die lggr.io Versionen von GitLab und GitHub sind komplett verschieden.
Du musst dich fĂŒr eine entscheiden, da sich auch die Anleitungen unterscheiden!
Die Anleitung von sugar-camp ist die GitHub Version.
Wenn im Webinterface etwas nicht passt liegt es meistens an den Pfaden in der inc/config_class.php und dem Verweis auf den contrib Ordner.
contrib und inc/config_class.php habe ich gar nicht.
Das Problem konnte behoben werden, indem npm install jquery ausgefĂŒhrt wird.
Dann hast du die GitLab Version installiert.
Danke fĂŒr die Info.
Moin,
der Logserver lĂ€uft top. Hab die Datenbank-Optimierungen manuell vorgenommen, da ein einfaches Ersetzen der Lggr.php zu Fehlern fĂŒhrte.
Nun ist das Webinterface selbst bei 30+ Mio Logs noch gut zu bedienen, bis auf folgendes:
Der Tab “Archived” und die Suchfunktion scheint nach wie vor sehr trĂ€ge. WĂ€hrend die anderen Reiter innerhalb von 3 sek öffnen, dauert es bei “Archived” gefĂŒhlt so, wie ohne Optimierungen (600+ Sekunden).
Hab mich in der Lggr.php noch nicht ausgetobt, vllt findet sich da noch was, mein Linuxwissen ist hier aber noch begrenzt.
Vielleicht hat jemand eine Idee oder sogar eine Lösungen was das angeht?
AuĂerdem scheint der cronjob (bei mir alle 168h, testweise auf 336h gesetzt) ab einer bestimmten Menge an Logs nicht richtig zu funktionieren und der Server ist vollgelaufen. Habe dann den newlogs table gedropt und Neu erstellt. Gibt es hier noch Optimierungen die man vornehmen könnte bzw. wie man sowas verhindern kann?
Hab die GitLab-Version + die Installationsnotizen genutzt, 2CPU – 8GB RAM – 40GB VM