falcon-plus
falcon-plus copied to clipboard
ansible 批量启动agent失败
ansible web-cluster -m shell -a "cd /xxx/open-falcon/ && ./open-falcon start agent" 输出正常 2.ansible web-cluster -m shell -a "cd /xxx/open-falcon/ && ./open-falcon check" 输出显示down的状态 直接在web-cluster 上启动 输出显示正常 4.直接在web-cluster 执行 ./open-falcon check 输出显示启动状态 5.ansible web-cluster -m shell -a "cd /xxx/open-falcon/ && ./open-falcon stop" 输出显示全部stop ps: open-falcon 版本v0.2.1 ansible 版本 2.4.2.0
ansible web-cluster -m shell -a "cd /xxx/open-falcon/ && ./open-falcon start agent; sleep 1; ps aux |grep falcon |grep agent"
你可以用上面的命令,启动之后,ps一下,看看falcon-agent的进程是否存在。
初步看起来,是ansible在退出当前的会话的时候,给agent发送了terminate信号吧
ansible没怎么用过,但是saltstack在批量启动agent的时候没有遇到这个问题!
@laiwei 按照你的命令跑了下 是能看到进程的 ,应该是你说的原因
谢啦 !
怎么规避呢?
@wuhualiang 比较low的方法是写一个script(需scp至web-cluster),start_agent.sh内容如下: cd /xxx/open-falcon/ &&nohup ./open-falcon start agent & 通过如下命令: ansible web-cluster -m shell -a "cd cd /xxx/open-falcon/&& sh ./start_agent.sh" sleep 5 ansible web-cluster -m shell -a "ps -ef|grep agent|grep -v grep" 因为ansible在执行远程命令的时候会fork出子线程来运行命令,当有返回结果的时候ansible会正常退出,这时会结束所有fork的子线程。
同楼主的问题,试了各种模块,最后还是妥协用nohup了,命令如下: ansible 172.16.116.111 -m command -a "chdir=/usr/local/open-falcon nohup /usr/local/open-falcon/open-falcon start agent"
@xuanouba 这个可以 用脚本不写nohup 也起不来
@wuhualiang 是的,试过用脚本,估计也是上面大神描述的,子线程运行返回结果后,给子线程开启的终端发送了terminate信号导致的。之前也试过用ansible批量重启tomcat,也是命令正常执行了,有正常的返回结果,但到服务器上查看就是没启来。。。
ansible -i hosts all -m shell -a "cd /home/work;setsid ./open-falcon start agent" ansible -i hosts all -m shell -a "cd /home/work;nohup ./open-falcon start agent" 都可以启动