[erledigt] Hilfe beim persistieren mit influxdb2

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

udo1toni hat geschrieben: 10. Okt 2022 03:33 Also, ich habe das hier mal durchgespielt, und zumindest bekomme ich Daten in einen InfluxDB2.4 Container rein. Folgende Schritte sind dazu nötig:
1. In Portainer einen Stack anlegen.

Code: Alles auswählen

version: '3'
services:
  influxdb:
    image: influxdb:latest
    volumes:
      # Mount for influxdb data directory and configuration
      - /portainer/Files/AppData/Config/influxdb2:/var/lib/influxdb2:rw
    ports:
      - "8086:8086"

# Ab hier unnötiger Ballast :)

  # Use the influx cli to set up an influxdb instance. 
  influxdb_cli:
    links:
      - influxdb
    image: influxdb:latest
    volumes:
      # Mount for influxdb data directory and configuration
      - /portainer/Files/AppData/Config/influxdb2:/var/lib/influxdb2:rw
      - ./ssl/influxdb-selfsigned.crt:/etc/ssl/influxdb-selfsigned.crt:rw
      - ./ssl/influxdb-selfsigned.key:/etc/ssl/influxdb-selfsigned.key:rw
    environment: 
       # Use these same configurations parameters in your telegraf configuration, mytelegraf.conf.
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=myusername
      - DOCKER_INFLUXDB_INIT_PASSWORD=passwordpasswordpassword
      - DOCKER_INFLUXDB_INIT_ORG=myorg
      - DOCKER_INFLUXDB_INIT_BUCKET=mybucket
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=mytoken
      - INFLUXD_TLS_CERT=/etc/ssl/influxdb-selfsigned.crt
      - INFLUXD_TLS_KEY=/etc/ssl/influxdb-selfsigned.key
    entrypoint: ["./entrypoint.sh"]
    restart: on-failure:10
    depends_on:
      - influxdb
Vermutlich kann man die CLI auch weg lassen :) ich habe sie mit dazu gepackt, weil ich dachte, ich bräuchte diese zum Zugriff, geht aber über Web UI.

Nach dem Deploy sollte es also zwei Container geben, von denen mutmaßlich einer überflüssig ist.

Schritt 2: Erste Anmeldung über http://ip.des.docker.systems:8086.
Dabei musst Du einen ersten User anlegen (den Administrationsuser, NICHT den User für den Zugriff von openHAB aus.
Außerdem wirst Du nach der Organisation gefragt (das ist die Entsprechung für die Datenbank) und nach einem Bucket, der die Retention Policy beinhaltet (wie lange werden die Daten aufgehoben).
Beide Werte werden später in openHAB3 wichtig. z.B. wären openHAB und default vernünftige Werte :)

Schritt 3: Wir erzeugen unter der Rubrik "Load Data" einen API Token. Name openHAB (z.B.). Anschließend lassen wir uns die Token anzeigen. Dort können wir auch den Token ins Clipboard befördern.

Schritt 4: In openHAB konfigurieren wir die Persistence.
Die Database URL wird auf http://ip.des.docker.systems:8086 gesetzt.
Die Database Version auf 2 stellen.
Der Username ist egal, ich habe ihn auf den Namen des Tokens gesetzt (also openHAB)
Das Passwort kann leer bleiben.
Der Authentication Token wird mit dem soeben erstellten Token befüllt.
Unter Database/Organistaion trägst Du den in Schritt 2 angelegten Organisationsnamen ein (z.B. openHAB)
Im Feld Retention Policy/Bucket trägst Du den Namen des Bucket ein, den Du in Schritt 2 angelegt hast. (z.B. default)-

Speichern nicht vergessen. Sobald nun Daten hereinkommen, sollten sie in der InfluxDB landen.
Davon kannst Du Dich in der Influx UI unter dem Punkt Data Explorer überzeugen. Du startest links mit der Auswahl des Buckets, dann selektierst Du z.B. die measurements und suchst Dir in der Liste einige Werte aus (für jedes persistierte Item sollte ein Eintrag in der Liste erscheinen)

Die Anbindung an Grafana sollte ebenso möglich sein.

InfluxData bietet für alle Plattformen fertige Docker Images an, Docker sollte automatisch das richtige auswählen (ARM32, ARM64, AMD64)

Falls Du weiterhin Probleme hast, können wir auch gerne mal eine Session per Teamviewer machen.

MariaDB lässt sich ebenso einfach über Docker einrichten, es steht und fällt aber immer mit der Kommunikation über das Netzwerk, das muss halt alles zueinander passen.

Hallo Udo ich bin nach deiner Anleitung vorgegangen und bin endlich soweit das ich daten aus Openhab 3.4 in die influxdb2 2.7.1 bekomme erstmal vielen dank das du diese ANleitung erstellt hast.

Leider habe ich im openhab log jedoch eine Fehlermeldung

Code: Alles auswählen

2023-07-23 09:09:55.099 [WARN ] [b.client.internal.InfluxDBClientImpl] - The exception occurs during check instance readiness
com.influxdb.exceptions.InfluxException: Connection reset
	at com.influxdb.internal.AbstractRestClient.execute(AbstractRestClient.java:84) ~[bundleFile:?]
	at com.influxdb.client.internal.InfluxDBClientImpl.ready(InfluxDBClientImpl.java:246) [bundleFile:?]
	at org.openhab.persistence.influxdb.internal.influx2.InfluxDB2RepositoryImpl.connect(InfluxDB2RepositoryImpl.java:95) [bundleFile:?]
	at org.openhab.persistence.influxdb.InfluxDBPersistenceService.activate(InfluxDBPersistenceService.java:115) [bundleFile:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:244) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:685) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:529) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:318) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:308) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:354) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:115) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:1000) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:973) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:918) [bundleFile:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:220) [org.eclipse.osgi-3.17.200.jar:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:217) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:118) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:547) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:533) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:655) [org.eclipse.osgi-3.17.200.jar:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:88) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:675) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2556) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:2075) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:2058) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:443) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:301) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1200) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1121) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:928) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:864) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1152) [bundleFile:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:114) [bundleFile:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:120) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:956) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:936) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:873) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:141) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:261) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:495) [org.eclipse.osgi-3.17.200.jar:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:929) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:915) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:133) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:984) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:752) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:437) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:667) [bundleFile:?]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:305) [bundleFile:?]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:554) [bundleFile:?]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:70) [bundleFile:?]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:421) [bundleFile:?]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [bundleFile:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [bundleFile:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [bundleFile:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) [osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:420) [osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) [osgi.core-7.0.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:499) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.Module.start(Module.java:486) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1847) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1783) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) [org.eclipse.osgi-3.17.200.jar:?]
Caused by: java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(SocketInputStream.java:186) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
	at okio.Okio$2.read(Okio.java:140) ~[bundleFile:?]
	at okio.AsyncTimeout$2.read(AsyncTimeout.java:237) ~[bundleFile:?]
	at okio.RealBufferedSource.indexOf(RealBufferedSource.java:358) ~[bundleFile:?]
	at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:230) ~[bundleFile:?]
	at okhttp3.internal.http1.Http1ExchangeCodec.readHeaderLine(Http1ExchangeCodec.java:242) ~[bundleFile:?]
	at okhttp3.internal.http1.Http1ExchangeCodec.readResponseHeaders(Http1ExchangeCodec.java:213) ~[bundleFile:?]
	at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.java:115) ~[bundleFile:?]
	at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:94) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:43) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at com.influxdb.client.internal.GzipInterceptor.intercept(GzipInterceptor.java:91) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at com.influxdb.client.internal.AuthenticateInterceptor.intercept(AuthenticateInterceptor.java:96) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:152) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at com.influxdb.internal.UserAgentInterceptor.intercept(UserAgentInterceptor.java:52) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) ~[bundleFile:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) ~[bundleFile:?]
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229) ~[bundleFile:?]
	at okhttp3.RealCall.execute(RealCall.java:81) ~[bundleFile:?]
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:188) ~[bundleFile:?]
	at com.influxdb.internal.AbstractRestClient.execute(AbstractRestClient.java:76) ~[bundleFile:?]
	... 86 more

Hast du eine Idee woran das liegen könnte?

Ich lasse beide docker openhab3 und influxdb auf einem qnap laufen
hier mein compose file

Code: Alles auswählen

version: '3'
services:
  influxdb:
    image: influxdb:latest
    volumes:
      # Mount for influxdb data directory and configuration
      - /share/Container/influxdb2prod/DB:/var/lib/influxdb2:rw
     
    ports:
      - "8086:8086"
      - "2003:2003"

# Ab hier unnötiger Ballast :)

  # Use the influx cli to set up an influxdb instance. 
  influxdb_cli:
    links:
      - influxdb
    image: influxdb:latest
    volumes:
      # Mount for influxdb data directory and configuration
      - /share/Container/influxdb2prod/DB:/var/lib/influxdb2:rw
      - ./ssl/influxdb-selfsigned.crt:/etc/ssl/influxdb-selfsigned.crt:rw
      - ./ssl/influxdb-selfsigned.key:/etc/ssl/influxdb-selfsigned.key:rw
    environment: 
       # Use these same configurations parameters in your telegraf configuration, mytelegraf.conf.
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=<geheimes passwort>
      - DOCKER_INFLUXDB_INIT_ORG=privat
      - DOCKER_INFLUXDB_INIT_BUCKET=openhab
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=<geheimes token>
      - INFLUXD_TLS_CERT=/etc/ssl/influxdb-selfsigned.crt
      - INFLUXD_TLS_KEY=/etc/ssl/influxdb-selfsigned.key
    entrypoint: ["./entrypoint.sh"]
    restart: on-failure:10
    depends_on:
      - influxdb

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von udo1toni »

Frage 1: Kommst Du auf die Web UI von InfluxDB? das sollte der Port 8086 sein, also http://ip.des.docker.host:8086/
Falls ja, Frage 2: Hast Du Organisation, Bucket, Token usw. angelegt bzw. generiert?
Falls ja, Frage 3: Hast Du in openHAB die Konfiguration angepasst? Du musst die Zugriffsart auf Influx2 einstellen sowie Organisation, Token und Bucket eintragen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

Hallo udo
Antwort 1 ja
Antwort 2 ja
Antrowrt3 ja
ich kann auch die Daten sehen trotzdem habe ich die oben genannte Fehlermeldung

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

ich hab jetzt die .persit config hinzugefügt

Code: Alles auswählen

Strategies {
    everyMinute      : "0 * * * * ?"
    everyFiveMinutes : "0 0/5 * * * ?"
    everyHour        : "0 0 * * * ?"
    everyDay         : "0 0 0 * * ?"

        default = everyMinute

}
Items {
OpenDTU1_inv1_pow: strategy = everyMinute, everyFiveMinutes, restoreOnStartup
}
damit sollte doch nur noch das item OpenDTU1_inv1_pow in die influx geschrieben werden und das nur jede minute oder?
leider sehe ich in influxe alle 10sec alle items reinkommen liegt der Fehler vielleicht hier begraben?
Zudem abund zu kommt noch folgende Fehlermeldung

Code: Alles auswählen

023-07-23 16:28:29.816 [WARN ] [rnal.influx2.InfluxDB2RepositoryImpl] - database not ready
2023-07-23 16:28:30.084 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'QueryablePersistenceService.query()' on 'org.openhab.persistence.influxdb.InfluxDBPersistenceService@7553e355': Connection reset
com.influxdb.exceptions.InfluxException: Connection reset
Ich habe in den openhab UI Einstellungen den Persistence Service InfluxDB persistence layer ausgewählt

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

Hab diesen post gefunden https://community.openhab.org/t/cant-ge ... oh3/124657 mit ähnlichen Fehlerbild aber ich glaube da geht es um die influx version 1.X zumal bei mir in dem Verzeichniss /etc/influxdb2/influx-configs keine config Datei vorhanden ist.

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

So für die Nachwelt hab den Fehlergefunden die persistence config muss wenn mann influxedb nutzt influxdb.persist heißen
Wenn es keine Config gibt werden default mäßig alle items bei change in die influx Datenbank geschrieben das scheint sie überfordert zu haben.

Trotzdem danke an die tolle Anleitung hier hat jemand vielleicht eine gute Anleitung für Grafana im Container insbesondere wie das mit den volumes jetzt funktioniert?

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von udo1toni »

Die konkrete Nachfrage nach dem Dateinamen der influxdb.persist wäre direkt meine nächste gewesen :) aber nun hast Du das ja schon selbst gefunden.
Ich finde es dennoch etwas irritierend, dass Du die Datei brauchst, das deutet für mich darauf hin, dass Du einen Itemtyp nutzt, der von InfluxDB nicht unterstützt wird. Und da wäre doch interessant, welcher das denn bitte schon sein soll, denn ich nutze ordentlich temtypenm, habe aber nie solche Meldungen...

Egal...
Grafana: Für grafana im Container musst Du ebenfalls nur einen Standardcontainer für Grafana hinzufügen. Grafana wird mutmaßlich nur ein einfaches Volume für die eigenen Konfigurationsdaten benötigen, sonst nichts.
Der Zugriff auf die Daten erfolgt über die IP/den Port/das Token/die Organisation/den Bucket, also genau so, wie openHAB dort Daten ablegt und ausliest.
Es bietet sich an, Grafana ein eigenes Token zu spendieren und auch die Zugriffsrechte auf "nur lesen" zu setzen, das ist ja (wenn man die Logik in InfluxDB mal verstanden hat) easy erledigt.
Ausgehend von den Informationen auf DockerHub und der Anleitung von Grafana hier ein yaml, welches mit Portainer funktionieren sollte (aber ungetestet):

Code: Alles auswählen

version: '3'
services:
  grafana:
    image: grafana/grafana:latest
    volumes:
      # Mount for grafana data directory and configuration
      - /portainer/Files/AppData/Config/grafana:/var/lib/grafana:rw
    ports:
      - "3000:3000"
Erreichbar ist Grafana dann über http://ip.des.host.rechners:3000/ und default User ist admin mit Passwort admin.
Wenn Du willst, kannst Du das Login auch abschalten, das wird dann über Umgebungsvariablen laufen. Da ich auf die Schnelle keine genauen Angaben dazu finden konnte, vermutlich sowas:

Code: Alles auswählen

    environment:
      - GF_SECURITY_ALLOW_EMBEDDING=true
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_NAME=Viewer
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
als Bestandteil des yaml von oben. Aber bitte erst mal mit Login probieren, es kann gut sein, dass Du mit den Settings nachher nichts konfigurieren kannst :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

Hallo Uwe das hat schon mal geklappt habe grafana jetzt im Container laufen
jedoch gibt es keine Möglichkeiten dort influxdb als source mit einem token zu verbinden also bin ich nach dieser Anleitung vorgegangen
https://www.laub-home.de/wiki/Grafana_V ... t_InfluxQL


leider bekomme ich eine Fehlermeldung in dem letzten schritt save&test
Get "http://192.168.179.32:8086/query?db=ope ... asurements": dial tcp 192.168.179.32:8086: i/o timeout error performing influxQL query
grafana.jpg
wenn ich die Anleitung richtig verstehe dann habe ich einen v1 user angelegt der grafana heißt den sehe ich auch

Code: Alles auswählen

ID                      Description     Username        v2 User Name    v2 User ID              Permissions
0b8dc12e534c7000                        grafana         admin           0b8c7cfd7ca5e000        [read:orgs/8fec4056ae2d7844/buckets/3d1555493d4be167]
PS C:\program files\influxdata>
zu testzwecken habe ich mich versucht mit diesem User über das web interface einzuloggen das hat aber ebenfalls nicht geklappt irgendwelche Tipps?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Ricotchet
Beiträge: 17
Registriert: 30. Okt 2019 18:54
Answers: 0

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von Ricotchet »

ok nach dem ich etwas weitergelesen habe weiß ich nun das ich bei influx 2 auf flux umstellen muss dann kann mann auch ein token eingeben.
gemacht getan hab den user openhab erstmal genommen den ich auch oben zum reinschreiben der Daten nutze.
Jedoch bekomme ich dann folgende Fehlermeldung

Code: Alles auswählen

Post "http://192.168.179.32:8086/api/v2/query?org=privat": dial tcp 192.168.179.32:8086: i/o timeout error reading buckets

Das sagt der grafana log

Code: Alles auswählen

logger=tsdb.influxdb t=2023-07-24T09:47:35.128781416Z level=warn msg="error performing influxdb healthcheck" err="Post \"http://192.168.179.32:8086/api/v2/query?org=privat\": dial tcp 192.168.179.32:8086: i/o timeout"
logger=context userId=1 orgId=1 uname=admin t=2023-07-24T09:47:35.128919573Z level=info msg="Request Completed" method=GET path=/api/datasources/uid/b90efe24-dfcf-4572-b714-81f5d4f6482b/health status=400 remote_addr=192.168.179.21 time_ms=10002 duration=10.002395413s size=155 referer=http://192.168.179.32:3000/datasources/edit/b90efe24-dfcf-4572-b714-81f5d4f6482b handler=/api/datasources/uid/:uid/health
logger=context userId=0 orgId=0 uname= t=2023-07-24T09:47:49.977170356Z level=info msg="Request Completed" method=GET path=/ status=302 remote_addr=172.29.4.1 time_ms=0 duration=531.501µs size=29 referer= handler=/
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: [erledigt] Hilfe beim persistieren mit influxdb2

Beitrag von udo1toni »

Groß/Kleinschreibung bei Bucket und Organisation hast Du beachtet? Ansonsten muss ich mal bei mir Zuhause schauen, wie meine Konfiguration in Grafana aussieht.
In InfluxDB kommen die Daten aber ja schon mal an, das ist eigentlich der schwierige Part :)

EDIT: Hab grade mal remote drauf geschaut, ich habe bei mir Basic Auth abgeschaltet, das wird ja auch durch das Token erledigt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten