Gelöst: Problem mit DbLog

Begonnen von jemu75, 12 Juni 2017, 22:36:51

Vorheriges Thema - Nächstes Thema

jemu75

Hallo,

seit einiger Zeit werden keine Daten mehr in meiner mySQL Datenbank geschrieben. Der Connect nach dem Start von FHEM scheint fehlerfrei zu funktionieren. Jedoch bekomme ich kurz nach dem Start von FHEM die folgende Fehlermeldung.
FHEM läuft auf einer Synology DS212j mit folgender mySQL DB
Server: Localhost via UNIX socket
Server-Typ: MariaDB
Server-Version: 5.5.54-MariaDB - Source distribution
Protokoll-Version: 10


2017.06.12 22:30:25 1: PERL WARNING: readdir() attempted on invalid dirhandle DIR at /usr/local/FHEM/share/fhem/FHEM/93_DbLog.pm line 388.
2017.06.12 22:30:25 1: PERL WARNING: closedir() attempted on invalid dirhandle DIR at /usr/local/FHEM/share/fhem/FHEM/93_DbLog.pm line 393.


Hat jemand eine Idee, wo ich meine Fehlersuche beginnen könnte?

Besten Dank schon mal! :)
Jens

amenomade

Attribute expimpdir auf der DbLog gesetzt? Asonsten fhem/log Verzeichnis.

Sind die Berechtigungen drauf ok? Darf FHEM dort schreiben?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

jemu75

Das Attribut expimpdir habe ich bisher nicht gesetzt. Laut Referenz ist das standardmäßig auf "(global->modpath)/log/" gesetzt.

Meine Definition in der fhem.cfg sieht wie folgt aus:

define myDbLog DbLog /usr/local/FHEM/etc/db.conf .*:.*
attr myDbLog DbLogSelectionMode Include

amenomade

Dann prüf mal die Berechtigungen auf "(global->modpath)/log/"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

jemu75

Die Berechtigung ist seitens FHEM meiner Meinung nach da. Die ganzen anderen Logfile werden dort aktuell abgelegt und gefüllt.
Zum Beispiel mein aktuelles Logfile "/usr/local/FHEM/var/log/fhem-2017-06.log" liegt dort. In dieses Logfile wird beispielsweise auch der genannte Fehler eingetragen. 

Ich würde das Thema Berechtigung dennoch gern ausschließen, bin aber nicht so sattelfest im Thema Linux Berechtigung.
Wenn ich im Log-Pfad ls -l eingebe dann werden mir dort alle Dateien mit den entsprechenden Rechten ausgegeben.
Das sieht z.B. so aus "-rw-r--r-- 1 root root"
Was müsste ich in Bezug auf die Rechte genau prüfen?

DS_Starter

Hallo Jens,

die Fehlermitteilung deutet, wie amenomade schon schrieb, auf ein Berechtigungsproblem in "(global->modpath)/log/" hin.
Mich verwirrt allerdings dass deine Berechtigungen mit root angezeigt werden:

Zitat"-rw-r--r-- 1 root root"

Bei mir gehören sie "fhem dialout". Möglicherweise ist dies aber der speziellen Installationsvariante auf Synology geschuldet. Das kann ich jetzt nicht beurteilen. Setzt dir expimpdir mal explizit auf den Pfad deines FHEM-Log-Verzeichnisses und schau ob der Fehler immer noch kommt.

Aber dein eigentliches Problem wird damit eher nicht zusammenhängen, weil expimpdir nur für die Funktion "set ... exportCache/importCachefile" genutzt wird.

Um dem Logging-Problem auf die Spur zu kommen solltest du uns mal einen verbose 5 Auszug von DbLog und ein List deines DbLog-Devices zur Verfügung stellen. Siehst du beim Start von FHEM Einträge dieser Art ?:


2017.06.12 08:21:42.587 3: DbLog LogDB: Creating Push-Handle to database mysql:database=fhemtest;host=192.168.2.10;port=3306 with user fhemtest
2017.06.12 08:21:42.678 3: DbLog LogDB: Push-Handle to db mysql:database=fhemtest;host=192.168.2.10;port=3306 created


VG
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

kadettilac89

HI,

erstmal warum machst du 2 Posts zum selben Thema auf? https://forum.fhem.de/index.php?topic=72923.0

Zitat von: jemu75 am 12 Juni 2017, 23:17:57
Die Berechtigung ist seitens FHEM meiner Meinung nach da. Die ganzen anderen Logfile werden dort aktuell abgelegt und gefüllt.
Zum Beispiel mein aktuelles Logfile "/usr/local/FHEM/var/log/fhem-2017-06.log" liegt dort. In dieses Logfile wird beispielsweise auch der genannte Fehler eingetragen. 

Ich würde das Thema Berechtigung dennoch gern ausschließen, bin aber nicht so sattelfest im Thema Linux Berechtigung.
Wenn ich im Log-Pfad ls -l eingebe dann werden mir dort alle Dateien mit den entsprechenden Rechten ausgegeben.
Das sieht z.B. so aus "-rw-r--r-- 1 root root"
Was müsste ich in Bezug auf die Rechte genau prüfen?

Unter welchem User läuft FHEM? Hier wird vermutet dass es unter fhem läuft und dann wäre es vermutlich ein Berechtigungsproblem, läuft FHEM aber unter root ist das unsauber aber wahrscheinlich kein Berechtigungsthema.

ps -ef | grep -i fhem

--> Output posten.


Mach zusätzlich mal einen

ls -l

in deinem log-Verzeichnis und poste den gesamten Output, vor allem die Zeilen mit '.' und '..' um zu sehen ob hier dein Beispiellog nur für Root zugänglich ist oder das gesamte Verzeichnis.

jemu75

So, da bin ich wieder ;)

Mein FHEM läuft unter dem User root anbei mal der Auszug aus FHEM -> Global -> motd

WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.
telnetPort has no associated allowed device with password/globalpassword.
Running with root privileges.
Restart FHEM for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.


die o.g. Befehle liefern folgendes Ergebnis:
1) ps -ef | grep -i fhem
ash-4.3# cd log
ash-4.3# ps -ef | grep -i fhem
root     10482  7183  0 09:38 pts/1    00:00:00 grep -i fhem
root     25395     1  0 Jun13 ?        00:11:44 /bin/perl /usr/local/FHEM/bin/fhem.pl /usr/local/FHEM/etc/fhem.cfg


2) ls -l
ash-4.3# ls -l
total 194348
-rw-r--r-- 1 root root        0 Jun 27  2016 -2015.log
-rw-r--r-- 1 root root        0 Dec 29 16:37 -2016.log
-rw-r--r-- 1 root root    60379 Jun 13 23:00 eventTypes.txt
-rw-r--r-- 1 root root    74507 Jun 27  2016 fhem-2015-01.log
-rw-r--r-- 1 root root    28038 Jun 27  2016 fhem-2015-02.log
-rw-r--r-- 1 root root    39727 Jun 27  2016 fhem-2015-03.log
-rw-r--r-- 1 root root 17117064 Jun 27  2016 fhem-2015-04.log
-rw-r--r-- 1 root root  1112244 Jun 27  2016 fhem-2015-05.log
-rw-r--r-- 1 root root  1098499 Jun 27  2016 fhem-2015-06.log
-rw-r--r-- 1 root root  4736070 Jun 27  2016 fhem-2015-07.log
-rw-r--r-- 1 root root   284077 Jun 27  2016 fhem-2015-08.log
-rw-r--r-- 1 root root  3070005 Jun 27  2016 fhem-2015-09.log
-rw-r--r-- 1 root root  3658218 Jun 27  2016 fhem-2015-10.log
-rw-r--r-- 1 root root  1518295 Jun 27  2016 fhem-2015-11.log
-rw-r--r-- 1 root root  2977357 Jun 27  2016 fhem-2015-12.log
-rw-r--r-- 1 root root  4649045 Jun 27  2016 fhem-2016-01.log
-rw-r--r-- 1 root root  3287243 Jun 27  2016 fhem-2016-02.log
-rw-r--r-- 1 root root  7908814 Mar 31  2016 fhem-2016-03.log
-rw-r--r-- 1 root root  5106288 Apr 30  2016 fhem-2016-04.log
-rw-r--r-- 1 root root  7770246 May 31  2016 fhem-2016-05.log
-rw-r--r-- 1 root root  4660513 Jun 30  2016 fhem-2016-06.log
-rw-r--r-- 1 root root  3037802 Jul 31  2016 fhem-2016-07.log
-rw-r--r-- 1 root root  5341795 Aug 31  2016 fhem-2016-08.log
-rw-r--r-- 1 root root   294639 Sep 30  2016 fhem-2016-09.log
-rw-r--r-- 1 root root   320893 Oct 31  2016 fhem-2016-10.log
-rw-r--r-- 1 root root   362429 Nov 30  2016 fhem-2016-11.log
-rw-r--r-- 1 root root  1089505 Dec 31 23:52 fhem-2016-12.log
-rw-r--r-- 1 root root  1099574 Jan 31 23:57 fhem-2017-01.log
-rw-r--r-- 1 root root   627882 Feb 28 23:52 fhem-2017-02.log
-rw-r--r-- 1 root root   503573 Mar 31 23:16 fhem-2017-03.log
-rw-r--r-- 1 root root   220149 Apr 30 23:39 fhem-2017-04.log
-rw-r--r-- 1 root root   277435 May 31 23:46 fhem-2017-05.log
-rw-r--r-- 1 root root   846670 Jun 16 09:33 fhem-2017-06.log
-rw-r--r-- 1 root root   172649 Jun 16 09:03 fhem.save
-rw-r--r-- 1 root root      212 Feb 20  2016 fhem.save  # where to save the state of the devices


3) Auszug Logfile nach "shutdown restart" mit Global -> Verbose = 5
2017.06.16 09:49:14 5: Cmd: >define myDbLog DbLog /usr/local/FHEM/etc/db.conf .*:.*<
2017.06.16 09:49:14 5: Loading /usr/local/FHEM/share/fhem/FHEM/93_DbLog.pm
2017.06.16 09:49:14 3: DbLog myDbLog: Creating Push-Handle to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2017.06.16 09:49:15 3: DbLog myDbLog: Push-Handle to db mysql:database=fhem;host=localhost;port=3306 created
2017.06.16 09:49:15 5: Cmd: >attr myDbLog DbLogSelectionMode Include<

2017.06.16 09:57:55 4: DbLog myDbLog -> ################################################################
2017.06.16 09:57:55 4: DbLog myDbLog -> ###         New database processing cycle - synchronous      ###
2017.06.16 09:57:55 4: DbLog myDbLog -> ################################################################
2017.06.16 09:57:55 4: DbLog myDbLog -> DbLogType is: History
2017.06.16 09:57:55 5: DbLog myDbLog -> Primary Key used in fhem.history: none
2017.06.16 09:57:55 5: DbLog myDbLog -> Primary Key used in fhem.current: none
2017.06.16 09:57:55 4: DbLog myDbLog -> processing event Timestamp: 2017-06-16 09:57:55, Device: HM_xxxxxx, Type: CUL_HM, Event: humidity: 70, Reading: humidity, Value: 70, Unit: %
2017.06.16 09:57:55 4: DbLog myDbLog -> processing event Timestamp: 2017-06-16 09:57:55, Device: HM_xxxxxx, Type: CUL_HM, Event: temperature: 21.5, Reading: temperature, Value: 21.5, Unit: °C
2017.06.16 09:57:55 4: DbLog myDbLog -> 2 of 2 events inserted into table history
2017.06.16 09:57:56 5: DbLog myDbLog -> DbLog_Push Returncode: 0

jemu75

#8
Ich habe das Thema gerade selbst aufgelöst. Mit dem Thema Rechte waren wir/ich komplett auf dem Holzweg. Ich hatte lediglich in meine current-Tabelle geschaut und gesehen, dass dort seit Januar nix mehr aktualisiert wurde. Was ich nicht gemacht habe, mal in meine history-Tabelle zu schauen. Dort werden alle Werte mitgeschrieben. In der Doku habe ich eben auch folgendes gefunden:
Zitat
DbLogType
attr <device> DbLogType [Current|History|Current/History]
This attribute determines which table or which tables in the database are wanted to use. If the attribute isn't set, the table history will be used as default.
Scheinbar wurde das mit einem Update vor längerer Zeit mal geändert.
Auf die Lösung hätte ich selbst kommen können.  :-\
Danke auf jeden Fall für eure Unterstützung!  :)

kadettilac89

Zitat von: kadettilac89 am 13 Juni 2017, 06:33:06
Unter welchem User läuft FHEM? Hier wird vermutet dass es unter fhem läuft und dann wäre es vermutlich ein Berechtigungsproblem, läuft FHEM aber unter root ist das unsauber aber wahrscheinlich kein Berechtigungsthema.

ps -ef | grep -i fhem

Hatte ich mir gedacht, wie sonst sollte fhem ein root-only file schreiben können. Also läuft es unter root, auch wenn das Thema erledigt ist würde ich dir empfehlen fhem nicht unter root laufen zu lassen. Beim Start prüft FHEM ob ein user fhem vorhanden ist. Wenn ja wird FHEM mit diesem User gestartet, wenn nicht der root.

Zum dem root-Thema gibt es hier genügend Posts, wirst sicher fündig.