logo NodeSeekbeta

【请教】哪吒监控多IP的VPS - 绑定IP|指定IP

各位大佬,请教一个问题。
使用哪吒监控vps,如果被监控的vps (debian 12) 在同一个网卡上面配置了两个IPv4地址,能否指定哪吒的agent通过特定的IP出站?
进一步讲,能否安装两个agent,同时监控此台vps的两个IP地址的网络连接情况?

12
  • 如果被监控的vps (Debian 12) 在同一个网卡上面配置了两个IPv4地址,能否指定哪吒的agent通过特定的IP出站?以下为解决过程,主要是用了iptables owner模块针对nezha-agent进程指定了出站IP,其他人遇到类似的问题可以参考,感谢大佬 @satorik

    更新一下:下面的方法貌似对于哪吒的icmp ping网络监控无效,我主要是用tcp ping,iptables也不懂,不影响使用,所以没有再深究了。

    root登录

    如果原来存在nezha-agent服务,用下面的命令删除

    systemctl stop nezha-agent
    systemctl disable nezha-agent
    rm -f /etc/systemd/system/nezha-agent.service
    rm -rf /opt/nezha
    rm -rf /var/log/nezha
    systemctl daemon-reload
    

    新建用户 nezhauser

    sudo useradd -m -s /bin/bash nezhauser
    

    运行哪吒agent脚本 这里是v0版的脚本

    curl -L https://raw.githubusercontent.com/nezhahq/scripts/v0/install.sh -o nezha.sh && chmod +x nezha.sh && ./nezha.sh install_agent xx.xx.xx 5555 xxxxxxxxxxxxxxxxxxxxxxxx
    

    先停止服务

    systemctl stop nezha-agent
    

    编辑/etc/systemd/system/nezha-agent.service
    [service]字段下面增加

    User=nezhauser
    

    更改WorkingDirectory字段为

    WorkingDirectory=/home/nezhauser
    

    返回ssh主窗口,增加用户运行权限

    chown -R nezhauser /opt/nezha/
    

    运行

    systemctl daemon-reload
    systemctl restart nezha-agent
    

    这个时候去查看进程,可以看到nezhe-agent进程的用户为:nezhauser

    运行iptables命令,把nezhauser用户的process都用指定IP 出站

    iptables -t nat -A POSTROUTING -m owner --uid-owner nezhauser -j SNAT --to-source [指定IP]
    

    哪吒dashboard里面显示的此vps的IP就是为指定的IP了,网络监控也是使用指定IP了,如果不是的话,再运行一次

    systemctl restart nezha-agent
    

    刷新哪吒dashboard即可

    如果要持久化iptables规则,即重启还有效,还需要运行

    apt install iptables-persistent
    
    iptables-save > /etc/iptables/rules.v4
    
  • 前一个问题咱想到的是用iptables转发某个特定用户的全部流量:

    # iptables -A POSTROUTING -t nat -m owner --uid-owner [a-new-user] -j SNAT --to [IP]
    # iptables -A POSTROUTING -t nat -m owner --gid-owner [a-new-user] -j SNAT --to [IP]
    

    后一个问题不清楚,同样蹲个答复

  • 后一个问题 可以监控不同的网口 自己改配置文件就行。

  • @satorik #1 发布于2024/12/23 16:23:40
    前一个问题咱想到的是用iptables转发某个特定用户的全部流量:

    # iptables -A POSTROUTING -t nat -m owner --uid-owner [a-new-user] -j SNAT --to [IP]
    # iptables -A POSTROUTING -t nat -m owner --gid-owner [a-new-user] -j SNAT --to [IP]
    

    后一个问题不清楚,同样蹲个答复

    多谢大佬!有什么简单的方法可以用特定的user运行nezha-agent吗?我只会用一个笨办法
    1)用root用户ssh登录,脚本安装agent
    2)用nezheuser(新用户)ssh登录,停止agent服务,然后再手动开启服务,用screen或者nohup持续运行
    3)返回root用户ssh,运行iptables的规则
    貌似是可以的,但是感觉好麻烦,重启一次就失效了。

  • @3az7qmfd #2 发布于2024/12/23 16:25:05
    后一个问题 可以监控不同的网口 自己改配置文件就行。

    同一个网口eth0绑定了两个ip地址,所以没办法指定网口吧

  • @kevinlicy #3
    你可以找一下 /etc/systemd/system/ 下有没有跟nezha有关的服务文件,如果有的话在 [Service] 下添加

    User=nezheuser
    Group=nezheuser
    

    之后重启服务
    iptables规则是重启之后会复原的,如果想持久化可以安装 iptables-persistent 来把规则存到文件里

  • @satorik #5 发布于2024/12/23 16:46:46
    @kevinlicy #3
    你可以找一下 /etc/systemd/system/ 下有没有跟nezha有关的服务文件,如果有的话在 [Service] 下添加

    User=nezheuser
    Group=nezheuser
    

    之后重启服务
    iptables规则是重启之后会复原的,如果想持久化可以安装 iptables-persistent 来把规则存到文件里

    太赞了,多谢大佬!我去试试看

  • @satorik #5 发布于2024/12/23 16:46:46
    @kevinlicy #3
    你可以找一下 /etc/systemd/system/ 下有没有跟nezha有关的服务文件,如果有的话在 [Service] 下添加

    User=nezheuser
    Group=nezheuser
    

    之后重启服务
    iptables规则是重启之后会复原的,如果想持久化可以安装 iptables-persistent 来把规则存到文件里

    搞不定,在/etc/systemd/system/nezha-agent.service里面[service]段下面增加
    User=nezheuser
    Group=nezheuser
    重启了之后,显示进程的user还是root. 不知道咋回事

    另外,使用下面的命令启动不起来
    sudo -u nezhauser /opt/nezha/agent/nezha-agent -s xxx.xxx.xxx.xxx:5555 -p xxxxxxxxxxxx

  • @kevinlicy #7

    重启了之后,显示进程的user还是root. 不知道咋回事

    sudo systemctl daemon-reload试试?

    另外,使用下面的命令启动不起来

    可能是权限问题?看看目录可不可以被 nezhauser 访问,用 chown 改所有者

  • @satorik #8 发布于2024/12/23 17:38:25
    @kevinlicy #7

    重启了之后,显示进程的user还是root. 不知道咋回事

    sudo systemctl daemon-reload试试?

    另外,使用下面的命令启动不起来

    可能是权限问题?看看目录可不可以被 nezhauser 访问,用 chown 改所有者

    sudo systemctl daemon-reload 试过了
    chown 试过了,也不行。

    现在还这个情况,如果/etc/systemd/system/nezha-agent.service存在
    User=nezhauser
    就必须在ExecStart字段里面加上一个sudo 类似这样可以启动,没有sudo无法启动。
    ExecStart=sudo /opt/nezha/agent/nezha-agent -xxxxxxxx
    但是这样的话,启动之后的user还是root

    如果不加sudo的话,systemctl status nezha-agent 红字显示
    code=exited, status=203/EXEC

    小白一个,没办法了....

  • @satorik #8 发布于2024/12/23 17:38:25
    @kevinlicy #7

    重启了之后,显示进程的user还是root. 不知道咋回事

    sudo systemctl daemon-reload试试?

    另外,使用下面的命令启动不起来

    可能是权限问题?看看目录可不可以被 nezhauser 访问,用 chown 改所有者

    更新,重新弄了一遍,用chown改了所有者,这次好了,多谢多谢

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有59946位seeker

🎉欢迎新用户🎉