- 更新日: 2016年9月2日
- Rails
Rails監視ツール用にErrbitをHerokuで運用
Errbit は Web アプリケーションのエラーを監視して、エラーが発生したら通知を行ってくれる監視ツールです。AirBreak と同じ機能を持つオープンソースのソフトウェアとなります。Errbit の Heroku 運用にトライしましたので、その設置手順の紹介です。Heroku の無料枠で運用すれば、コストをかけずに AirBreak と同様の監視を行うことができます。
Heroku 登録と Heroku Toolbelt(CLI)インストール等
まず Heroku のアカウントがない場合は、事前に Heroku のサインアップが必要です。
Heroku: Cloud Application Platform
事前に、Heroku のコマンドラインツール(CLI)である Heroku Toolbelt もインストールしておきます。
Heroku Command Line | Heroku Dev Center
Heroku でアドオンを利用する場合には、無料アドオンの利用でもクレジットカードの登録が必要となります。Errbit は MongoDB 等のアドオンを使うので、事前にクレジットカードの登録も行っておきます。
Errbit を GitHub からローカルに clone
errbit/heroku.md at master · errbit/errbit
基本的に、上記ドキュメント The Hard Way の手順に沿って進めますが、途中で Errbit 管理者ユーザーや New Relic 設定などの作業をはさみました。デプロイボタン(Deploy to Heroku)は使いません。
まずは、ローカルの errbit 用ディレクトリに移動後、errbit を GitHub から git clone します。
1 2 3 4 5 |
$ cd /path/to/errbit-dir $ git clone git@github.com:errbit/errbit.git $ cd errbit |
続いて bundle install を行う。ローカルの development 環境を作らずに heroku だけの運用なら、ここは省略可能かも。
1 2 3 |
$ bundle install --path vendor/bundle |
Heroku に Errbit アプリを作成
1 2 3 |
$ heroku apps:create |
出力された名前が Heroku 上で動作する Errbit のアプリ名になるので控えておきます。heroku という名前のリモートリポジトリが追加されるので、以下コマンドで確認可能です。
1 2 3 4 5 |
$ git remote -v heroku https://git.heroku.com/foo-bar-12345.git (fetch) heroku https://git.heroku.com/foo-bar-12345.git (push) |
foo-bar-12345 の部分が、Heroku 上のアプリ名です。
続いて、アドオンの追加や環境変数の設定を行います。
1 2 3 4 5 6 7 8 9 10 |
$ heroku addons:create mongolab:sandbox $ heroku addons:create sendgrid:starter $ heroku addons:create scheduler:standard $ heroku config:set GEMFILE_RUBY_VERSION=2.2.4 $ heroku config:set SECRET_KEY_BASE="$(bundle exec rake secret)" $ heroku config:set ERRBIT_HOST=some-hostname.example.com $ heroku config:set ERRBIT_EMAIL_FROM=example@example.com $ heroku config:set EMAIL_DELIVERY_METHOD=smtp SMTP_SERVER=smtp.sendgrid.net |
Heroku にログインしてアプリが作成されたこと、および設定した環境変数(Settings/Config Variables/Reveal Config Vars)を確認します。
Errbit 管理者ユーザーの設定
以降、GitHub から ローカルに clone したディレクトリで作業を進めます。まずは、Errbit にログインするための、管理者ユーザーのアカウント情報の設定です。
1 2 3 4 |
$ cd /path/to/errbit-dir/errbit $ vi db/seeds.rb |
db/seeds.rb
1 2 3 |
admin_username = "ユーザー名" admin_email = "Eメールアドレス" admin_pass = ENV['ADMIN_PASS'] |
パスワードは環境変数で設定します。
1 2 3 |
$ heroku config:set ADMIN_PASS=***** |
または、Heroku の Settings にある「Reveal Config Vars」を押して設定。KEY に ADMIN_PASS、VALUE に任意のパスワードを入力して Add。パスワードは控えておきます。
New Relic の設定
Heroku の無料プランの場合、1時間アクセスがないと Dyno が停止してしまうらしいので、New Relic を利用してそれを防ぐ設定を行います。行う作業は以下のとおりです。
1. New Relic にサインアップ
2. New Relic の agent 用 gem を追加
3. config/newrelic.yml の修正
New Relic 導入について詳しくは、RailsアプリケーションにNew Relicを導入 | EasyRambleを参照。
New Relic に登録した後、Gemfile に New Relic 用のエージェント gem である newrelic_rpm を追加します。
Gemfile
1 |
gem 'newrelic_rpm' |
1 2 3 |
$ bundle install |
New Relic にログインして Account Settings の右下「Download a clean configuration file」から newrelic.yml をダウンロードして、config 以下に配置します。必要な箇所を編集。
config/newrelic.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 |
common: &default_settings license_key: <%= ENV["NEW_RELIC_LICENSE_KEY"] %> app_name: ErrbitApp production: <<: *default_settings monitor_mode: true app_name: ErrbitApp (Production) heroku: <<: *default_settings monitor_mode: true app_name: ErrbitApp (Heroku) |
New Relic からダウンロードした newrelic.yml にはライセンスキーが直書きしてあるので、環境変数で設定するように変更します。
1 2 3 |
$ heroku config:set NEW_RELIC_LICENSE_KEY=****** |
あと Errbit の .gitignore から config/newrelic.yml の行を削除しておく。
.gitignore
1 |
config/newrelic.yml # この行を削除 |
Heroku に push
ここまでの設定が完了したら、Heroku に push します。
1 2 3 4 5 |
$ git add . $ git ci -m "set up errbit" $ git push heroku master |
push するだけでアプリケーションのビルドもやってくれて、Heroku は超楽ですね。Capistrano とかちまちま書くよりほんと簡単。
データベースのセットアップ
続いて、データベースのセットアップを行います。以下コマンドを実行。
1 2 3 |
$ heroku run rake errbit:bootstrap |
これで上述した管理者ユーザーを作成するための db/seeds.rb 実行や MongoDB の Index 作成など、Errbit に必要なデータベースのセットアップが行われます。
Heroku の Open app から Errbit ログイン画面を開き、設定した管理者ユーザーのアカウントでログインするとログインできるはずです。
監視対象の Rails アプリケーションを追加
Heroku 上の Errbit にログイン後、Click here to create your first one または右上の Add a New App をクリックして、Name および必要な情報を入力します。SEND NOTIFICATIONS TO ALL USERS にチェックするとメール通知が来る。
入力後 ADD APP をクリックすると、Errbit エージェントの設定に必要な情報が表示されるので控えます。それを元に、監視対象の Rails アプリケーションで以下の設定を行いました。
Gemfile
1 |
gem 'airbrake', '~> 5.0' |
1 2 3 |
$ bundle install |
config/initializers/errbit.rb
1 2 3 4 5 6 7 8 9 |
Airbrake.configure do |config| config.host = 'heroku-errbit-url' config.project_id = -1 config.project_key = '****' # Uncomment for Rails apps config.environment = Rails.env config.ignore_environments = %w(test) end |
本番環境のみを対象にしての Errbit 運用時には…
config/initializers/errbit.rb
1 2 3 4 5 6 7 8 9 |
if Rails.env.production? Airbrake.configure do |config| config.host = 'heroku-errbit-url' config.project_id = -1 config.project_key = '****' config.environment = Rails.env config.ignore_environments = %w(development test) end end |
と production 環境のみに設定を限定したほうが良いかと思います。あとは監視対象の Rails アプリケーションをデプロイしたら終了です。
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
- window.NREUMがHTMLヘッダー部に自動挿入されるのはNew Relic用
Leave Your Message!