Я пытаюсь определить сетевой трафик между несколькими внутренними микросервисами, работающими на одном сервере. (они делают несколько HTTP-вызовов друг другу)
К сожалению, когда я использую tcpdump, строки, которые я вижу для каждого вызова, позволяют мне определить только «службу назначения» для вызова. Но исходный порт (31822) является одним из тех «эфемерных / динамических портов», которые произвольно выделяются ОС, поэтому я не знаю, какое приложение сделало вызов.
Есть ли простой способ отследить, какая микрослужба является источником этого вызова. Способ связать исходный динамический порт с PID запущенного приложения?
(без изменения самого запущенного приложения, я не могу контролировать их все)
вещи, которые я пробовал, такие как netstat, lsof ни к чему не привели. Спасибо
iptables -I OUTPUT -m owner --pid-owner 1234 -m state --state NEW -j LOG --log-prefix MSX
Это будет регистрировать каждое соединение, инициированное микросервис с pid 1234 с использованием префикса MSX, чтобы вы могли отличать его соединения от других микросервисов.
Вы можете интегрировать управление этими правилами в сценарий инициализации микросервиса. Например, для systemd добавьте это как команду ExecStartPost
, используя $ MAINPID
, и получите соответствующую команду ExecStopPost
, которая удаляет это правило.