I have a kubernetes cluster.
I can easily connect to a remote container, and run a shell node connecting to live production erlang node:
$ kubectl exec myapp-2431125679-cwqvt -i -t -- iex --name debugging@127.0.0.1 --remsh myliveapp@127.0.0.1 --cookie my_secret_cookie
Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(myliveapp@127.0.0.1)1>
What I need though is to be able to run an :observer
against a remote live production erlang node.
I can do that too:
kill local epmd
process:
killall epmd
forward selected remote ports to my local machine:
kubectl port-forward myapp-2431125679-cwqvt 35609 4369
I know that my app runs on port 35609 on a remote container, and 4369 is the port epmd
runs by default, which is the case for my remote container.
run:
iex --name debugging@127.0.0.1 --cookie marketplace -e ':observer.start()'
select the app I'm interested in from the top menu in :observer
.
My questions are:
Ultimately, can I make this process a one-liner or turn it into a shell script?
Right now killing epmd
looks really-really dirty, I'd love to be able avoid that specifically.