Re: Hilfe beim persistieren mit influxdb2
Verfasst: 23. Jul 2023 11:19
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.Vermutlich kann man die CLI auch weg lassenCode: 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
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