2016年に[Ruby] かしゆかの誕生日!という潔すぎる Advent Calendar を書いてから 3年。またこの地に降り立ちました、しょっさんです。もちろん、本日もかしゆかの誕生日です、おめでとうございます!!!
今日はRuby Advent Calendar 2019の 23日目、今年もかしゆかの誕生日です!! 昨日はfursichさんのネタ待ち、明日はooooooo_qさんです!!
Heroku Ruby Language Metrics(Public Beta) がでたぞ!
public beta なので、大きな声で推奨はできませんが、NewRelic や Scoutを入れるほどでも、標準よりももう少し詳しく Heroku がアプリの Metrics とってくれないかな...。
とれるようになりそうです
それが、この Ruby Language Metrics(Public Beta) です。設定すればよいだけではないのと、動いたり動かなかったりなのは「β」だからということで、事情を知りうまく行かなかったときは、heroku-metrics-feedback@salesforce.com へフィードバックを入れていただけると捗ると思います、どうぞよろしく。(英語でね)
何ができるようになったの?
次の3つの項目が、追加で取れるようになりました。
- Puma Pool Usage … Puma のキューイング状況が見られます。80%超え始めたら Dyno 追加しようかなみたいな。
- Free Memory Slots … 単位時間あたりのメモリスロットの状況を可視化します。
- Heap Objects Count … 割当と開放されたヒープ状況を可視化します。メモリちゃんと開放されてる?
どうやって使うの?
制約条件として
- Puma >= 3.12.0
- 純粋な Ruby (JRubyは JVM Runtime Metrics)
使い方は Rails なら次のでいけます。
- Metric を Enableする
- 'heroku/metrics' buildpack を「頭に」追加する
- "barnes" Gem をインスコ
1. Metric を Enableする
Heroku Dashboard から、Heroku アプリの Metricsへ行って、「歯車」から "Enhanced Language Metrics" to ”Ruby Language metrics" を ON にしてあげます。
コマンドなら。
$ heroku labs:enable "runtime-heroku-metrics" -a "my-app-name"
$ heroku labs:enable "ruby-language-metrics" -a "my-app-name"
2. 'heroku/metrics' buildpack を「頭に」追加する
同じく Dashboard の Settings
から、"Add buildpack" で 「heroku/metrics」を追加します。一番目になるように、順序を入れ替えてあげます。
コマンドなら。
$ heroku buildpacks:add -i 1 heroku/metrics
3. "barnes" Gem をインスコ
Gemfile
に barnes
を追加して、bundle install
して、再deployしましょう。
gem "barnes"
※ Railsじゃないとき
例えば puma.rb とかに次のものが必要です。
require 'barnes'
before_fork do
# worker specific setup
Barnes.start # Must have enabled worker mode for this to block to be called
end
※ workerない場合は動かないので、最低限一つのworkerが必要みたいだけど。