Hello !
Ça fait quleques temps où je rencontré un soucis notamment avec des appareils zwave.
Lorsque je demande à Google d’éteindre avec la voix, elle me répond ok j’éteins mais rien ne se passe en revanche si je le fait via l’app (google ou gladys) c’est OK.
Ou parfois ma lumière s’éteint mais elle se rallume aussitôt puis s’éteint de nouveau bref ^^’.
En vérifiant, j’ai trouver ceci dans mes logs, mais j’ai jamais été voir juste après un ‘incident’.
2022-02-24T19:18:17+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:41 (sendCurrentState) Gladys Gateway: Unable to forward google home reportState
2022-02-24T19:18:17+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:42 (sendCurrentState) Error: getaddrinfo EAI_AGAIN api.gladysgateway.com
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
errno: -3001,
code: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'api.gladysgateway.com',
config: {
url: 'https://api.gladysgateway.com/google/report_state',
method: 'post',
data: '{"devices":{"states":{"mqtt-zwave-chambre-enfant-plafonnier":{"online":true,"on":false}}}}',
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json;charset=utf-8',
authorization: 'iYi05OTFkLTM3OTczMmZkYjdlZSIsImlhdCI6MTY0NTcyNTk5MCwiZXhwIjoxNjQ1NzI5NTkwLCJhdWQiOiJp.hddKDhIiF4znPRHKBU8-E84bhHyGBKy142ScP_vJjm0',
'User-Agent': 'axios/0.21.1',
'Content-Length': 90
},
Côté dns pas de requête bloqué pourtant
Ce genre d’erreur est plutôt clair, c’est un souci de DNS.
Ce qui est intéressant, c’est qu’on remarque une chose: il y a des dizaines de demande de résolution DNS à la suite, sans aucun respect du TTL que je donnes car il y a parfois 2 demandes dans la même seconde !
J’en conclus que Gladys re-demande continuellement l’adresse du serveur du Gateway, à chaque requête. Pas fou !
En enquêtant, cela ressemble à un problème connu sur internet :
While working on big node eCOM backend that had a lot of traffic, from time to time we found getaddrinfo EAI_AGAIN error in our logs, quick googling explains that this means that our dns server can’t currently serve our request.
(Cf cet article: https://medium.com/@amirilovic/how-to-fix-node-dns-issues-5d4ec2e12e95 )
Et en enquêtant plus, je suis tombé sur ça :
EDIT: Ce comportement est par design: Problème zwave et google home - #6 par pierre-gilles
En gros, visiblement l’image Docker Node.js alpine que l’on utilise comme base pour Gladys (cf Dockerfile ) n’a pas de package qui gère le cache DNS, et ainsi chaque requête fait sa propre résolution DNS: un peu lourd ^^
Je continue d’enquêter sur le souci pour trouver le bon package à rajouter côté Docker.
cc @VonOx ça va t’intéresser
@spenceur Merci du retour ! On va fixer ça !
1 « J'aime »
Du coup le problème dns que je rencontre provient de l’ano sur l’image node ou de adguard qui bloque à un instant T ?
Merci de ta réponse
Dur de dire, ça peut venir de plusieurs points :
Localement, le service de résolution DNS local qui se prend les pieds dans le tapis car il y a trop de demandes en un faible temps
Adguard qui a du mal à répondre à la charge, vu que comme on peut voir, adguard est contacté pour chaque requête
Juste pour être sûr que ça vient de nous et pas de ton installation, tu as fais quoi comme configuration précise au niveau DNS sur ton Pi ?
Si je ne me trompe pas, j’ai juste ajouter dans le résolve.conf cette variable
static domain_name_servers
C’était il y a un moment ^^’
Je suis tombé sur ce genre de commentaires :
Donc je comprend mieux pourquoi le TTL n’est pas respecté ( autant dans l’image Docker Alpine que sur le Debian de Raspberry Pi OS ), ce n’est pas un bug c’est by design sur la plupart des systèmes Linux
@spenceur Est-ce que tu pourrais désactiver temporairement sur Gladys l’utilisation de ton Adguard (et remplacer par un DNS populaire genre Cloudflare DNS ( 1.1.1.1 ) ), et voir si tu continue à voir ces erreurs.
→ Si tu continue à voir ces erreurs, ça voudra dire que ton Adguard n’est pas en cause. On est peut-être trop agressif côté Gladys dans la fréquence d’appel du Gladys Gateway pour le reportState de Google Home
→ Si tu ne vois plus d’erreurs, c’est que ton Adguard a quelques soucis à répondre par moment.
PS: Si tu change de DNS, pense à bien vérifier que le nouveau DNS est bien utilisé.
Je m’en occuperais des que possible et je vous tiendrais au courant
PS: je n’ai tjrs pas pris le temps
1 « J'aime »
J’ai fais la manipulation comme je le disais ici :
Hello, désolé d’avoir pris du temps pour te répondre.
=> j’ai tjrs des soucis de DNS j’ai pas encore pris le temps de passer sur quad9 (pour le test), je viens de le faire et j’ai encore le soucis côté G+.
=> Yes j’ai bien systématiquement le soucis sur G+ en local tout est ok donc rien d’urgent
c’est un peu compliqué, mais peut être vendredi si je n’ai pas de changement en cours de route ^^’
Et j’ai bien vérifier que je passais bien par quad9:
Plus qu’a voir si je rencontre les mêmes soucis sur du moyen terme
1 « J'aime »
Top ! Tiens nous au courant, j’espère que ça va résoudre le problème
1 « J'aime »
bon finalement je peu répondre même sous quad9, j’ai une erreur qui pop :
2022-03-22T20:58:10+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:41 (sendCurrentState) Gladys Gateway: Unable to forward google home reportState
2022-03-22T20:58:10+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:42 (sendCurrentState) Error: getaddrinfo EAI_AGAIN api.gladysgateway.com
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
errno: -3001,
code: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'api.gladysgateway.com',
config: {
url: 'https://api.gladysgateway.com/google/report_state',
method: 'post',
data: '{"devices":{"states":{"fgd212-dimmer-2-2":{"online":true,"brightness":99}}}}',
VonOx
Mars 22, 2022, 8:36
11
Fais un docker inspect gladys
je suis quasi sûr que le conteneur a un dns différent.
voici ce que j’ai avec un grep sur dns
docker inspect gladys | grep -iF dns
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
encore le soucis ce matin :
2022-03-23T10:22:24+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:41 (sendCurrentState) Gladys Gateway: Unable to forward google home reportState
2022-03-23T10:22:24+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:42 (sendCurrentState) Error: getaddrinfo EAI_AGAIN api.gladysgateway.com
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
errno: -3001,
code: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'api.gladysgateway.com',
config: {
url: 'https://api.gladysgateway.com/google/report_state',
method: 'post',
data: '{"devices":{"states":{"fgd212-dimmer-2-2":{"online":true,"brightness":99}}}}',
Aucun changement malgré le changement de dns
VonOx
Mars 23, 2022, 10:44
14
C’est bizarre, j’ai moi aussi quad9 par défaut.
Tu sais te connecter en interactif sur le conteneur ? L’idée ça serait de récupérer le contenu de /etc/resolv.conf
Edit:
La commande => docker exec -it gladys /bin/ash -c "cat /etc/resolv.conf"
Exemple de sortie:
vonox@odin in ~ 1 ❯ docker exec -it gladys /bin/ash -c "cat /etc/resolv.conf"
search lan
nameserver 192.168.1.1
nameserver 9.9.9.9
Yes je m’en s’occupe dans l’après midi
Merci de laisser mes messages tel quel
Voici le retour (thx)
docker exec -it gladys /bin/ash -c "cat /etc/resolv.conf"
# Generated by resolvconf
nameserver 9.9.9.9
VonOx
Mars 23, 2022, 1:01
17
Je viens de vérfier ton ‘dig’
Tu n’as pas de réponse dns
Côté Quad9 le domaine est ok
De mon côté:
vonox@odin in ~ ❯ dig api.gladysgateway.com
; <<>> DiG 9.16.1-Ubuntu <<>> api.gladysgateway.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59709
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;api.gladysgateway.com. IN A
;; ANSWER SECTION:
api.gladysgateway.com. 300 IN A 142.93.160.146
;; Query time: 15 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Wed Mar 23 14:00:46 CET 2022
;; MSG SIZE rcvd: 66
Vraiment bizarre ton PB ( je suis dans une conf similaire Quad9/Pihole )
En testant ta route
pi@raspberrypi:~ $ dig api.gladysgateway.com
; <<>> DiG 9.11.5-P4-5.1+deb10u5-Raspbian <<>> api.gladysgateway.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55078
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;api.gladysgateway.com. IN A
;; ANSWER SECTION:
api.gladysgateway.com. 119 IN A 142.93.160.146
;; Query time: 50 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Wed Mar 23 14:04:12 CET 2022
;; MSG SIZE rcvd: 66
Pas de soucis non plus ^^
Je suis pas 100 % convaincu que l’on part sur la bonne hypothèse
VonOx
Mars 23, 2022, 1:07
20
Merde j’étais sur l’api
dig plus.gladysassistant.com
; <<>> DiG 9.16.1-Ubuntu <<>> plus.gladysassistant.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26101
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;plus.gladysassistant.com. IN A
;; ANSWER SECTION:
plus.gladysassistant.com. 300 IN A 188.114.97.3
plus.gladysassistant.com. 300 IN A 188.114.96.3
;; Query time: 27 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Wed Mar 23 14:06:50 CET 2022
;; MSG SIZE rcvd: 85