[vz-users] middleware in docker, CURL Error from middleware: 'Exception': 'Missing context'

Marc Haber mh+volkszaehler-users at zugschlus.de
Di Dez 27 17:03:23 CET 2022


Hallo,

nachdem nun mein Volkszähler seit sechs Wochen kaputt ist, aber auf der
Liste die Rede von einem neuen Datenbankformat ist:

Kann mein Problem daran liegen, dass das neue Volkszähler-Image die
Datenbank mit einer anderen Struktur erwartet als das alte? Wie wird das
am besten konvertiert? Würde die Middleware die Datenbank automatisch
neu anlegen wenn ich die alte Datenbank zur Seite schiebe?

Oder habe ich doch ein ganz anderes Problem?

Grüße
Marc

On Wed, Nov 09, 2022 at 03:40:50PM +0100, Marc Haber wrote:
> Hallo,
> 
> ich betreibe die Volkszähler-Middleware in einem Docker-Container auf
> einem x86-Host. Der vzlogger läuft auf einem Banana Pi.
> 
> Seit ich vorletzte Woche das Middleware-Image neu gezogen / gebaut habe,
> tut die Middleware nicht mehr. Der vzlogger loggt regelmäßig:
> 
> [Nov 09 15:21:14][chn0] CURL Error from middleware: 'Exception': 'Missing context'
> 
> docker container logs volkszaehler:
> Read configuration /vz/etc/middleware.json, modified by command arguments.
> /
> +---------------------------+-----------------------------------------+
> | host                      | 0.0.0.0                                 |
> | port                      | 18080                                   |
> | workers                   | 8                                       |
> | static-directory          | /vz/htdocs                              |
> | logging                   | 0                                       |
> | max-requests              | 1000                                    |
> | bridge                    | HttpKernel                              |
> | bootstrap                 | Volkszaehler\Server\PPMBootstrapAdapter |
> | app-env                   | dev                                     |
> | debug                     | 0                                       |
> | max-execution-time        | 30                                      |
> | memory-limit              | -1                                      |
> | limit-concurrent-requests |                                         |
> | request-body-buffer       |                                         |
> | ttl                       | 0                                       |
> | populate-server-var       | 1                                       |
> | socket-path               | .ppm/run/                               |
> | pidfile                   | .ppm/ppm.pid                            |
> | reload-timeout            | 30                                      |
> | cgi-path                  | /usr/local/bin/php                      |
> +---------------------------+-----------------------------------------+
> Starting PHP-PM with 8 workers, using StreamSelectLoop ...
> 8 workers (starting at 5501) up and ready. Application is ready at http://0.0.0.0:18080/
> [49/3230]mh at corte:~/volkszaehler $
> 
> Weitere Informationen kommen nicht hinzu während des Laufs.
> 
> (Den Port hatte ich auf 18080 verschoben weil ich zuerst dachte, der
> vzlogger würde gar nicht mit der Volkszähler-Middleware, sondern mit
> einer auf einer anderen IP des Docker-Hosts auf Port 8080 laufenden
> Applikation sprechen. Das ist aber nicht der Fall.)
> 
> Ich baue mein Image mit "docker build --tag local/volkszaehler-off ."
> aus einem Checkout von
> https://github.com/volkszaehler/volkszaehler.org.git und starte es mit
> docker run -d --network br196 --ip6 $IPV6 --ip $IPV4 -v /var/run/docker.sock:/var/run/docker.sock --name volkszaehler local/volkszaehler-off
> 
> (Das war damals mein erster Docker-Container, inzwischen benutze ich
> docker-compose, aber den Volkszähler anzufassen habe ich mich noch nicht
> getraut).
> 
> Das Dockerfile aus dem Repository habe ich gepatcht wegen des Ports
> 18080 und die Zeile RUN sed -i '/^[[:space:]]\"port\"/s/8080/18080/'
> /vz/etc/middleware.json hinzugefügt. Da es mit "CMD /vz/vendor/bin/ppm
> start -c /vz/etc/middleware.json --static-directory /vz/htdocs
> --cgi-path=/usr/local/bin/php" endet, vermute ich dass hier kein Proxy
> im Spiel ist (was für mich auch ok ist, das ist alles intern) und ich
> deswegen das "middleware.php" überall weglassen muss.
> 
> Wenn ich mit dem Browser auf http://$IP:18080/ gehe, komme ich auf einem
> funktionstüchtigen Webfrontend heraus, und wenn ich weit genug
> zurückblättere, zeigt er mir auch die alten Werte aus der Datenbank an.
> 
> Es hakt also nur bei der Übertragung aus dem vzlogger.
> 
> Hier die vzlogger.conf:
> 
> {
>   "retry" : 0,                  /* how long to sleep between failed requests, in seconds */
>     "daemon": true,             /* run periodically */
>     "verbosity" : 5,            // log verbosity (0=log_alert, 1=log_error, 3=log_warning, 5=log_info, 10=log_debug, 15=log_finest)
>     "log" : "/var/log/vzlogger/vzlogger.log", /* path to logfile, optional */
> 
>     "mqtt": {
>         "enabled": true,
>         "host": "mqtt.ka51.zugschlus.de",
>         "port": 1883,
>         "id": "vzlogger",
>         "cafile": "",
>         "capath": "",
>         "certfile": "",
>         "keyfile": "",
>         "keypass": "",
>         "keepalive": 30,
>         "topic": "vzlogger/data",
>         "id": "",
>         "user": "",
>         "pass": "",
>         "retain": true,
>         "rawAndAgg": true,
>         "qos": 0,
>         "timestamp": false
>     },
>     "meters":
>       [
>       {
>         "protocol" : "s0",
>         "enabled" : true,
>         "device" : "/dev/USBserialWasser",
>         "aggtime" : 30,
>         "aggmode" : "sum",
>         "aggfixedinterval" : false,
>         "send_zero": true,
>         "channels": [
>         {
>           "uuid" : "fa6c4b30-8303-11e9-a746-5fe24f8ae232",
>           "middleware" : "http://volta.ka51.zugschlus.de:18080/",
>           "identifier" : "Impulse",
>           "aggmode" : "none",
>         }
>         ]
>       },
> 
> (~ 6 andere Meter-Einträge und die korrekt geschlossenen Klammern
> weggelassen, ich liefer das gerne nach wenn es hilft)
> 
> Was kann denn hier mein Problem sein?
> 
> Grüße
> Marc
> 
> -- 
> -----------------------------------------------------------------------------
> Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
> Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
> Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421

-- 
-----------------------------------------------------------------------------
Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421


Mehr Informationen über die Mailingliste volkszaehler-users