Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
80
Help us understand the problem. What is going on with this article?
@tenten0213

HerokuにデプロイしたHobotをIdlingさせない方法

More than 5 years have passed since last update.

HubotをHipchatやIdobataなどのチャットと連携して利用すると、GithubやTravis、New Relicなどのサービスからの通知をチャットで受け取れて便利です。

その際のデプロイ先としてHerokuが非常に便利なのですが、放置しているとアイドリングしてしまいます。

それでは困るので定期的にリクエストを飛ばすスクリプトを書いて対応していたのですが、もっと簡単な方法があったので紹介します。

Herokuの環境変数HEROKU_URLにHubotのデプロイ先のURLを設定するだけです。

heroku config:set HEROKU_URL=http://yourapp.herokuapp.com/

処理はHubotのrobot.coffeeに書いてあり、HEROKU_URLが設定してあれば20分に1回 http://yourapp.herokuapp.com/hubot/pingにPOSTするようになっています。

https://github.com/github/hubot/blob/master/src/robot.coffee
対象コミット: https://github.com/github/hubot/commit/5e738f634bf5c88b0520a97dd9566abedfaa7f3f

これでアイドリングすることが無くなるはずです。

ってよく読んだら https://github.com/github/hubot/blob/master/docs/deploying/heroku.md に書いてありますね…。

ググると全然違う情報が引っかかったりするので、備忘録ってことで残しておきます。

追記

最新のHubot(2.9.3で確認)では、hubot-scripts/hubot-heroku-keepaliveを使ってアイドリングさせないようにpingを送ります。

今まで通りHEROKU_URLを設定しても動くようですが、互換性維持のために残しているような感じなので、新しく作ったのであればHUBOT_HEROKU_KEEPALIVE_URLを設定した方が良さそうです。

Herokuの環境変数の設定は以下の通り。
heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=PASTE_WEB_URL_HERE

ワンライナーでも設定できるみたいです。
heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web_url | cut -d= -f2)

hubot-heroku-keepaliveでは、デフォルトで5分間隔でpingする設定になっており、HUBOT_HEROKU_KEEPALIVE_INTERVALに値を設定することで変更できるようです。

おまけ

上記対応前はこんなコードで対応してました。

cron = require('cron').CronJob
module.exports = (robot) ->
  url = process.env.HUBOT_URL
  robot.enter ->
  new cron
    cronTime: "*/10 * * * *"
    start: true
    onTick: ->
      robot.http(url + "/hubot/version")
        .get() (err, res, body) ->
          return
80
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tenten0213
ここで発信する内容はあくまで私個人の意見であり、現在所属する会社の公式見解を示 すものではありませんし、全裸だからって通報しないでいただけると幸いです。
forcas
『FORCAS(フォーカス)』は、データ分析に基づいて成約確度の高いアカウントを予測し、マーケティングと営業のリソースをそのターゲットアカウントに集中する最新マーケティング手法「Account Based Marketing (ABM) 」の実践を強力にサポートするマーケティングプラットフォームを開発・提供してます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
80
Help us understand the problem. What is going on with this article?