読者です 読者をやめる 読者になる 読者になる

デーモン化してるHubotが何故か勝手に落ちてしまう。

Slackと連携させているHubotが何故か勝手に落ちてしまうので、調べてみたのでメモ。

どういうこと?

VPS上にHubotを設置して、Slackと連携させて遊んでました。 デーモン化にはforeverを使っていました。

github.com

毎日定期的につぶやいたり、backlogの変更をSlackに通知してくれたり、便利に使っていたのですが、ある日をさかいに勝手に落ちてしまうようになりました。

最初は普通に再起動していたのですが、頻繁に再現するので、調べてみました。

foreverのログを見てみる

$ forever logs
info:    Logs for running Forever processes
data:        script                  logfile
data:    [0] node_modules/.bin/hubot /home/www/.forever/YABZ.log

$ cat /home/www/.forever/YABZ.log

[Wed Oct 19 2016 11:19:00 GMT+0900 (JST)] ERROR TypeError: Cannot read property 'name' of undefined
  at Request.callback (/home/www/hubot/node_modules/superagent/lib/node/index.js:619:12)
  at /home/www/hubot/node_modules/superagent/lib/node/index.js:795:18
  at IncomingMessage.<anonymous> (/home/www/hubot/node_modules/superagent/lib/node/parsers/json.js:16:7)
  at emitNone (events.js:72:20)
  at IncomingMessage.emit (events.js:166:7)
  at endReadableNT (_stream_readable.js:921:12)
  at nextTickCallbackWith2Args (node.js:442:9)
  at process._tickCallback (node.js:356:17)

error: Forever detected script was killed by signal: SIGKILL

killされちゃってるみたいですね。。。

ググッてみる

ググッてみると同じような症状の人がいるみたい。

error: Forever detected script was killed by signal: SIGKILL - Google 検索

んで、見ていくと、以下のStack Overflowが見つかりました。

stackoverflow.com

なんでも .foreverignore を作れば治るよ。ということなので、早速作ってみた。

$ cd /home/hubot/

$ ls -al 
drwxrwxr-x   5 www www 4096 10月 24 11:01 2016 .
drwx------   8 www www 4096 10月 24 11:58 2016 ..
-rw-r--r--   1 www www   39  5月 20 06:45 2016 .gitignore
-rw-rw-r--   1 www www   11  9月  2 12:21 2016 .hubot_history
-rw-r--r--   1 www www   24  9月  2 12:16 2016 Procfile
-rw-r--r--   1 www www 7820  9月  2 12:16 2016 README.md
drwxrwxr-x   2 www www 4096  9月 23 18:24 2016 bin
-rw-rw-r--   1 www www  186  9月 21 18:05 2016 external-scripts.json
drwxrwxr-x 190 www www 4096 10月 24 11:45 2016 node_modules
-rw-rw-r--   1 www www  677  9月 25 21:37 2016 package.json
drwxrwxr-x   2 www www 4096 10月 24 11:58 2016 scripts

$ touch .foreverignore

$ ls -al
drwxrwxr-x   5 www www 4096 10月 24 11:01 2016 .
drwx------   8 www www 4096 10月 24 11:58 2016 ..
-rw-rw-r--   1 www www    0 10月 24 11:01 2016 .foreverignore <= 追加されてる
-rw-r--r--   1 www www   39  5月 20 06:45 2016 .gitignore
-rw-rw-r--   1 www www   11  9月  2 12:21 2016 .hubot_history
-rw-r--r--   1 www www   24  9月  2 12:16 2016 Procfile
-rw-r--r--   1 www www 7820  9月  2 12:16 2016 README.md
drwxrwxr-x   2 www www 4096  9月 23 18:24 2016 bin
-rw-rw-r--   1 www www  186  9月 21 18:05 2016 external-scripts.json
drwxrwxr-x 190 www www 4096 10月 24 11:45 2016 node_modules
-rw-rw-r--   1 www www  677  9月 25 21:37 2016 package.json
drwxrwxr-x   2 www www 4096 10月 24 11:58 2016 scripts

まだ追加して1日だけど、logで吐いてたエラーも出てないようだし、うまくいってるっぽい。
これでうまくいくといいけどなぁ。。