temboard icon indicating copy to clipboard operation
temboard copied to clipboard

Various error handling : pwd, NXDOMAIN

Open ced75 opened this issue 2 years ago • 24 comments

Hi,

I have upgraded temboard-agent to v7.10 on two identical servers. On the first one, no problem, and the swap overload caused by temboard is solved.

But on the second server, it does not dialog anymore with the temboard UI server.

When I try to perform a new registration:

sudo -u postgres temboard-agent-register -c /etc/temboard-agent/12/main/temboard-agent.conf --host $(hostname --fqdn) --port 2345 --groups default https://inv-monitor.ign.fr:8888

I get the following error:

 INFO: Starting temboard-agent-register 7.10.
ERROR: Unhandled error:
ERROR: Traceback (most recent call last):
ERROR:   File "/usr/lib/python3/dist-packages/temboardagent/toolkit/app.py", line 298, in entrypoint
ERROR:     retcode = self.main(argv, environ)
ERROR:   File "/usr/lib/python3/dist-packages/temboardagent/scripts/register.py", line 69, in main
ERROR:     self.bootstrap(args=args, environ=environ)
ERROR:   File "/usr/lib/python3/dist-packages/temboardagent/toolkit/app.py", line 107, in bootstrap
ERROR:     config.load(**self.config_sources)
ERROR:   File "/usr/lib/python3/dist-packages/temboardagent/toolkit/configuration.py", line 199, in load
ERROR:     oldpwd = os.getcwd()
ERROR: FileNotFoundError: [Errno 2] No such file or directory
ERROR: temboardagent version is 7.10.
ERROR: This is a bug!
ERROR: Please report traceback to https://github.com/dalibo/temboard-agent! Thanks!

What can be wrong?

Thanks for your help,

Cedric

Tasks

  • [ ] Handle FileNotFound error and show an explicite message.
  • [ ] Handle NXDOMAIN upon registration
  • [ ] Handle NXDOMAIN when proxying

ced75 avatar Apr 04 '22 11:04 ced75

@ced75 C'est une erreur quand le dossier courant n'existe plus. Que retourne cd . ? Et sudo -u postgres pwd ?

bersace avatar Apr 05 '22 15:04 bersace

Bonjour, Pourtant, le répertoire est toujours là: /var/lib/postgresql

ced75 avatar Apr 08 '22 08:04 ced75

Que retourne sudo -u postgres pwd ?

bersace avatar Apr 08 '22 09:04 bersace

/home/admin

ced75 avatar Apr 08 '22 18:04 ced75

/home/admin

Que retourne namei -om /home/admin ? Pourquoi n'est-ce pas /var/lib/postgresql ?

bersace avatar Apr 19 '22 08:04 bersace

La commande namei renvoie ceci: f: /home/admin drwxr-xr-x root root / drwxr-xr-x root root home drwxr-xr-x admin admin admin

Pour répondre à la deuxième question, c'est la commande suivante qui renvoie bien /var/lib/postgresql: sudo -iu postgres pwd

ced75 avatar Apr 25 '22 06:04 ced75

Avec DEBUG=y, quel est le contenu de os.environ['PWD'] par exemple ?

sudo -u postgres DEBUG=y temboard-agent-register -c /etc/temboard-agent/12/main/temboard-agent.conf --host $(hostname --fqdn) --port 2345 --groups default https://inv-monitor.ign.fr:8888
...
(Pdb) os.environ['PWD']

bersace avatar Apr 25 '22 07:04 bersace

sudo: temboard-agent-register : commande introuvable

ced75 avatar Apr 25 '22 08:04 ced75

sudo: temboard-agent-register : commande introuvable

Je ne comprends plus rien. J'ai repris la commande initiale du ticket. Le simple ajout de DEBUG=y casse le PATH dans sudo ?

bersace avatar Apr 25 '22 08:04 bersace

Au temps pour moi! La commande doit être lancée sur le serveur agent, pas sur le serveur central. Voici ce que j'obtiens:

2022-04-25 10:53:08,241 [14940] [app             ]  INFO: Starting temboard-agent-register 7.10.
2022-04-25 10:53:08,242 [14940] [app             ] DEBUG: Reading /etc/temboard-agent/12/main/temboard-agent.conf.
2022-04-25 10:53:08,258 [14940] [app             ] DEBUG: Reading /etc/temboard-agent/12/main/temboard-agent.conf.d/auto.conf.
2022-04-25 10:53:08,259 [14940] [register        ]  INFO: Getting system & PostgreSQL informations from the agent (https://inv-exp-Vm.ign.fr:2345/discover) ...
Login at https://inv-monitor.ign.fr:8888 ...
 Username: 

J'ai renseigné l'identifiant et le mot de passe, et l'instance, cette fois-ci, s'est bien enregistrée... Curieux...

ced75 avatar Apr 25 '22 08:04 ced75

Par contre, dans l'interface, j'ai toujours une erreur:

Error [Errno -2] Name or service not known

ced75 avatar Apr 25 '22 09:04 ced75

Ok, c'est déjà plus rassurant. Cette histoire de PWD inaccessible reste mystérieuses. Je me note d'ajouter un message explicite (cf description du ticket). Donc ne pas fermer ce ticket avant que le patch ne soit intégré.

As-tu plus de message dans les traces de l'UI ?

bersace avatar Apr 25 '22 09:04 bersace

Voici ce qui apparaît dans les traces de l'UI:

avril 25 12:34:42 inv-monitor env[17757]: Proxied request failed: <urlopen error [Errno -2] Name or service not known> avril 25 12:34:42 inv-monitor env[17757]: Request failed: 500 [Errno -2] Name or service not known. avril 25 12:34:42 inv-monitor env[17757]: 500 GET /server/inv-exp-Vm.ign.fr/2345/dashboard (192.168.147.202) 27.16ms avril 25 12:34:45 inv-monitor env[17757]: Could not get response from https://inv-exp-Vm.ign.fr:2345/discover. avril 25 12:34:45 inv-monitor env[17757]: Agent or host are down. avril 25 12:34:46 inv-monitor env[17757]: HTTP Error 401: Unauthorized avril 25 12:34:46 inv-monitor env[17757]: Traceback (most recent call last): avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/temboard/lib/python3.7/site-packages/temboardui/plugins/monitoring/init.py", line 488, in collector avril 25 12:34:46 inv-monitor env[17757]: headers={"Content-type": "application/json"}, avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/temboard/lib/python3.7/site-packages/temboardui/temboardclient.py", line 86, in temboard_request avril 25 12:34:46 inv-monitor env[17757]: handle = url_opener.open(request) avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/python3.7/urllib/request.py", line 531, in open avril 25 12:34:46 inv-monitor env[17757]: response = meth(req, response) avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/python3.7/urllib/request.py", line 641, in http_response avril 25 12:34:46 inv-monitor env[17757]: 'http', request, response, code, msg, hdrs) avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/python3.7/urllib/request.py", line 569, in error avril 25 12:34:46 inv-monitor env[17757]: return self._call_chain(*args) avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain avril 25 12:34:46 inv-monitor env[17757]: result = func(*args) avril 25 12:34:46 inv-monitor env[17757]: File "/usr/lib/python3.7/urllib/request.py", line 649, in http_error_default avril 25 12:34:46 inv-monitor env[17757]: raise HTTPError(req.full_url, code, msg, hdrs, fp) avril 25 12:34:46 inv-monitor env[17757]: urllib.error.HTTPError: HTTP Error 401: Unauthorized

Il semble y avoir un problème de clé, mais j'ai pourtant bien celle qui, sur le client, est dans /etc/temboard-agent/12/main/temboard-agent.conf.d/auto.conf

ced75 avatar Apr 25 '22 10:04 ced75

J'ai toujours le même message d'erreur: Name or service not known

ced75 avatar Apr 25 '22 11:04 ced75

Que disent les traces de l'agent ?

bersace avatar Apr 26 '22 07:04 bersace

Strictement rien: elles indiquent seulement que les différentes métriques sont collectées correctement. Mais quand je tente la connexion dans l'UI, aucun message d'erreur ne s'affiche dans les traces de l'agent.

ced75 avatar Apr 26 '22 07:04 ced75

Sur quel port écoute l'agent ? S'il reste une autre configuration, auto_configure.sh configure sur le port suivant comme 2346.

bersace avatar Apr 26 '22 07:04 bersace

Il écoute sur le port par défaut, qui est 2345. Côté UI, le port est également correctement renseigné (en tout cas cohérent avec le fichier auto.conf).

ced75 avatar Apr 26 '22 07:04 ced75

@ced75 ok, peux-tu m'envoyer les traces des l'agent depuis le démarrage ?

bersace avatar Apr 26 '22 12:04 bersace

@ced75 que donne getent hosts inv-exp-Vm.ign.fr sur la machine de l'UI ?

bersace avatar Apr 26 '22 12:04 bersace

Le getent ne renvoie rien... Pour le fichier traces, où est-ce que je peux le déposer ? Encore merci pour l'aide

ced75 avatar Apr 27 '22 05:04 ced75

OK, c'est bien un problème de résolution de nom d'hôte depuis l'UI. En créant une nouvelle instance dans l'UI et en renseignant l'IP de la machine plutôt que son nom, ça fonctionne. Je vais supprimer l'instance défectueuse dans l'UI et garder celle avec l'IP.

C'est toujours le problème avec les VM et leurs noms réels...

ced75 avatar Apr 27 '22 06:04 ced75

Ok, j'ajoute des tâches pour gérer plus explicitement ce genre de cas.

bersace avatar Apr 27 '22 06:04 bersace

Super! Encore merci pour le temps passé à m'aider.

ced75 avatar Apr 27 '22 06:04 ced75