美文网首页
SaltStack 远程执行 Nodejs 问题

SaltStack 远程执行 Nodejs 问题

作者: awker | 来源:发表于2018-12-12 10:22 被阅读0次

    1、问题:/bin/sh: node: command not found

    [root@prod01002 ~]# salt 'uat01007' cmd.run "node -v"
    uat01007:
        /bin/sh: node: command not found
    ERROR: Minions returned with non-zero exit code
    
    [root@uat01007 ~]# node -v
    v8.12.0
    [root@uat01007 ~]# whereis node
    node: /usr/local/node-v8.12.0-linux-x64/bin/node
    

    解决办法:

    [root@uat01007 ~]# ln -s /usr/local/node-v8.12.0-linux-x64/bin/node /usr/bin/node
    [root@uat01007 ~]# ln -s /usr/local/node-v8.12.0-linux-x64/bin/npm /usr/bin/npm
    [root@uat01007 ~]# ln -s /usr/local/node-v8.12.0-linux-x64/bin/pm2 /usr/bin/pm2
    
    [root@prod01002 ~]# salt 'uat01007' cmd.run "node -v"
    uat01007:
        v8.12.0
    

    2、问题:saltstack 可以远程执行 pm2 status,但看不到运行的进程

    [root@prod01002 ~]# salt 'uat01007' cmd.run "pm2 status"
    uat01007:
        [PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!
        [PM2][Initialization] Defaulting to /etc/.pm2
        ┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────┬──────────┐
        │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
        └──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────┴──────────┘
         Use `pm2 show <id|name>` to get more details about an app
    
    [root@uat01007 qadist]# pm2 status
    ┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
    │ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
    ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
    │ app      │ 0  │ 2.0.0   │ fork │ 15233 │ online │ 0       │ 93m    │ 0%  │ 70.4 MB   │ root │ disabled │
    └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
     Use `pm2 show <id|name>` to get more details about an app
    
    [root@uat01007 qadist]# ps -ef|grep pm2
    root     15223     1  0 14:39 ?        00:00:02 PM2 v3.2.2: God Daemon (/root/.pm2)
    root     17659     1  0 15:24 ?        00:00:00 PM2 v3.2.2: God Daemon (/etc/.pm2)
    root     19961     1  0 16:06 ?        00:00:00 PM2 v3.2.2: God Daemon (/etc/.pm2)
    root     20390 20010  0 16:13 pts/0    00:00:00 grep --color=auto pm2
    

    排查过程:

    [root@uat01007 qadist]# PM2_HOME=/etc/.pm2 pm2 status
    ┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────┬──────────┐
    │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
    └──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────┴──────────┘
     Use `pm2 show <id|name>` to get more details about an app
    
    [root@uat01007 qadist]# PM2_HOME=/root/.pm2 pm2 status
    ┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬──────┬───────────┬──────┬──────────┐
    │ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu  │ mem       │ user │ watching │
    ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼──────┼───────────┼──────┼──────────┤
    │ app      │ 0  │ 2.0.0   │ fork │ 20794 │ online │ 0       │ 11m    │ 0.1% │ 44.9 MB   │ root │ disabled │
    └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴──────┴───────────┴──────┴──────────┘
     Use `pm2 show <id|name>` to get more details about an app
    

    不同的PM2_HOME下看到的进程不一样,直接在 linux 命令行下启动的进程的在 /root/.pm2 下的,saltstack 启动的进程是在 /etc/.pm2 下的

    解决办法:让进程都运行在 /etc/.pm2

    // 添加 PM2_HOME 环境变量,指向 /etc/.pm2/
    [root@uat01007 qadist]# cat /etc/profile.d/nodejs.sh 
    export NODEJS_HOME=/usr/local/node-v8.12.0-linux-x64
    export PATH=$PATH:$NODEJS_HOME/bin
    export PM2_HOME=/etc/.pm2/
    [root@uat01007 qadist]# source /etc/profile
    
    // 重新启动应用
    [root@uat01007 qadist]# PM2_HOME=/root/.pm2/ pm2 del all && pkill PM2 && pm2 start app.js
    [PM2] Applying action deleteProcessId on app [all](ids: 0)
    [PM2] [app](0) ✓
    ┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────┬──────────┐
    │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
    └──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────┴──────────┘
     Use `pm2 show <id|name>` to get more details about an app
    [PM2] Spawning PM2 daemon with pm2_home=/etc/.pm2/
    [PM2] PM2 Successfully daemonized
    [PM2] Starting /data/apps/zbcf-h5-pc/qadist/app.js in fork_mode (1 instance)
    [PM2] Done.
    ┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
    │ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
    ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
    │ app      │ 0  │ 2.0.0   │ fork │ 11460 │ online │ 0       │ 0s     │ 0%  │ 11.4 MB   │ root │ disabled │
    └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
     Use `pm2 show <id|name>` to get more details about an app
    
    [root@uat01007 qadist]# pm2 status
    ┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬───────┬───────────┬──────┬──────────┐
    │ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu   │ mem       │ user │ watching │
    ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼───────┼───────────┼──────┼──────────┤
    │ app      │ 0  │ 2.0.0   │ fork │ 11460 │ online │ 0       │ 5s     │ 12.9% │ 60.9 MB   │ root │ disabled │
    └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴───────┴───────────┴──────┴──────────┘
     Use `pm2 show <id|name>` to get more details about an app
    
    [root@uat01007 qadist]# ps -ef|grep pm2
    root     11450     1  3 17:41 ?        00:00:00 PM2 v3.2.2: God Daemon (/etc/.pm2/)
    root     11479 11242  0 17:41 pts/0    00:00:00 grep --color=auto pm2
    
    // 远程执行可以看到运行的进程了
    [root@prod01002 zbcf-salt]# salt 'uat01007' cmd.run 'pm2 status'
    uat01007:
        [PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!
        [PM2][Initialization] Defaulting to /etc/.pm2
        ┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
        │ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
        ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
        │ app      │ 0  │ 2.0.0   │ fork │ 22792 │ online │ 0       │ 14m    │ 0%  │ 45.1 MB   │ root │ disabled │
        └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
         Use `pm2 show <id|name>` to get more details about an app
    
    

    相关文章

      网友评论

          本文标题:SaltStack 远程执行 Nodejs 问题

          本文链接:https://www.haomeiwen.com/subject/pehuhqtx.html