gpt4 book ai didi

ssh - 通过公共(public) IP 将 erlang observer 连接到远程机器

转载 作者:行者123 更新时间:2023-12-02 14:00:53 25 4
gpt4 key购买 nike

背景

我在生产环境中有一台运行 elixir 应用程序的机器(无法访问 iex,只能访问 erl),我的任务是分析我们消耗如此多 CPU 的原因。这里的想法是启动观察器,检查进程选项卡并查看减少最多的进程。

我如何连接?

要连接,我正在遵循博客中的教程:

他们的指令如下:

  1. 使用 cookie 和名称在生产机器上启动应用
  2. 从本地运行:ssh user@public_ip "epmd -names" 以获取应用程序的名称和使用的端口
  3. 从本地创建到远程机器的 ssh 隧道:ssh -L 4369:user@public_ip:4369 -L 42877:user@public_ip:42877 user@public_ip(4369 是 epmd 端口默认,42877 是应用程序的端口)
  4. 使用节点名称从本地连接到远程机器:erl -name "user@app_name"-setcookie "mah_cookie"-hidden -run observer

问题

现在理论上我应该可以在机器上使用观察器了。相反,我遇到了以下错误:

Protocol ‘inet_tcp’: register/listen error: epmd_close

所以,在搜索了互联网的阴暗面之后,我决定使用 sudo journalctl -f 检查机器的所有日志,我发现了这个:

channel 3: open failed: administratively prohibited: open failed
my_app_name sshd[8917]: error: connect_to flame@99.999.99.999: unknown host (Name or service not known)
/scripts/watchdog.sh")
my_app_name CRON[9985]: pam_unix(cron:session): session closed for user flame

地点:

  1. erlang -name: my_app_name
  2. 机器用户:flame
  3. 机器公网ip:99.999.99.999(显然不是真实的)

所以它告诉我,未知主机 ??我很困惑,因为 99.999.99.999 是机器本身的公共(public) IP!

问题

  1. 我做错了什么?
  2. 我读到在旧版本的 erlang 中,如果它们在不同的网络中,我无法使用观察器监视一台机器(是这种情况,因为我想从我的本地主机监视这台机器)但我没有找到任何现代有关此的信息。
  3. 如果这实际上是不可能的,我有什么选择?

最佳答案

解决方案

经过 3 天的不间断搜索,我终于找到了一些有用的东西。总而言之,我把我所做的一切都放在这里。

本地机器的所有步骤:

  1. 从远程服务器获取端口:
> ssh remote-user@remote-ip "epmd -names"
epmd: up and running on port 4369 with data:
name super_duper_app at port 43175
  1. 使用端口创建 ssh 隧道:

ssh remote-user@remote-ip -L4369:localhost:4369 -L43175:localhost:43175

  1. 在本地机器的另一个终端上,使用远程服务器中的应用程序正在使用的 cookie 运行 iex 终端。然后连接到它并启动观察者:
iex --name observer@127.0.0.1 --cookie super_duper_cookie
Node.connect :"super_duper_app@127.0.0.1"
> true
:observer.start

启动观察器后,从“节点”菜单中选择机器。

可能的挫折

如果您已经尝试过但没有成功,您可以检查以下几点:

  1. 检查您本地机器上的 EPMD 端口是否空闲,如果没有,则终止使用它的进程并释放它。
  2. 检查您的 ssh 隧道 key 和配置以获取权限。正如@Roberto Aloi 所指出的,此链接很有用:https://unix.stackexchange.com/questions/14160/ssh-tunneling-error-channel-1-open-failed-administratively-prohibited-open

关于ssh - 通过公共(public) IP 将 erlang observer 连接到远程机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54401486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com