社内で育てている Slack 常駐用 Hubot が定期的に落ちてしまうという事象が前からあって,今までは検知したらすぐに起動するという運用回避で逃げていた.ちなみに forever を使ってデーモン化はしていて,具体的には以下のように起動している.実際には環境変数の export も多くしてるけど割愛する.
$ forever start -c coffee node_modules/hubot/bin/hubot -a slack
forever log
落ちた後の forever log を見ても,以下のように INFO しか出力されていなくて原因を特定できていなかった.forever のオプションで --debug
と --verbose
を付けても,特に WARN 以上のログレベルでは出力されなかった.
$ cat Lzxa.log [Fri Oct 21 2016 12:38:15 GMT+0900 (JST)] INFO Connecting... [Fri Oct 21 2016 12:38:16 GMT+0900 (JST)] INFO Logged in as xxx_bot of xxx, but not yet connected [Fri Oct 21 2016 12:38:17 GMT+0900 (JST)] INFO Slack client now connected [Fri Oct 21 2016 12:38:18 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379 [Wed Oct 26 2016 09:14:05 GMT+0900 (JST)] INFO Slack client closed, waiting for reconnect
全く同じ事象を発見した
Slack client closed
のログを情報源にして調べたところ hubot-slack に全く同じ事象が報告されているのを発見することができた.
コメントを見てみると package.json
を修正して slackhq/hubot-slack#v3-sdk-updates
を参照させれば直るはず!と書いてあった.
"hubot-slack": "slackhq/hubot-slack#v3-sdk-updates"
hubot-slack を最新にしてみた
CHANGELOG を見たら既に最新バージョンに修正が取り込まれていることがわかったので,今回は slackhq/hubot-slack#v3-sdk-updates
ではなく最新 4.2.0
にしてみた.
"hubot-slack": "^4.2.0"
まとめ
今のところ,1週間稼働させて落ちなくなったため,改善されたように思う.
もし Hubot が謎に落ちてしまうことに悩んでいる人がいたら hubot-slack
を最新バージョンにすると良さそう!