J'essaie d'identifier le trafic réseau entre plusieurs microservices dorsaux fonctionnant sur le même serveur. (Ils font quelques appels http de repos les uns vers les autres).
Malheureusement, lorsque j'utilise tcpdump, les lignes que je vois pour chaque appel ne me permettent que d'identifier le "service de destination" de l'appel.
tcpdump -nn -i lo
14:03:52.612985 IP6 ::1.31822 > ::1.9093: Flags [P.], seq 2474698995:2474699366, ack 4107952262, win 697, options [nop,nop,TS val 3238273 ecr 3231488], length 371
14:03:52.616946 IP6 ::1.9093 > ::1.31822: Flags [P.], seq 1:875, ack 371, win 568, options [nop,nop,TS val 3238274 ecr 3238273], length 874
Le port de destination (ici 9093) est stable et c'est celui sur lequel fonctionne l'un de mes microservices. Mais le port source (31822) est l'un de ces "ports éphémères/dynamiques" alloués de manière aléatoire par le système d'exploitation, de sorte que je ne sais pas quelle application a effectué l'appel.
Existe-t-il un moyen simple de déterminer quel microservice est à l'origine de cet appel ? Un moyen de lier le port dynamique source au PID d'une application en cours d'exécution ?
(sans modifier l'application en cours d'exécution elle-même, je n'ai pas le contrôle de toutes les applications)
Les choses que j'ai essayé comme netstat, lsof ne m'ont mené nulle part. Merci
0 votes
Pour ce faire, il suffit d'écrire une fonction enveloppante pour consigner les appels système appropriés, puis d'utiliser
LD_PRELOAD
pour l'injecter dans les applications que vous voulez inspecter. J'aurais pensé que quelqu'un aurait déjà développé une solution à ce problème, mais je n'en connais aucune à ma connaissance.