タイトルの通り、Heroku上のアプリのログやランタイムログを直接にNew Relicに転送する機能がリリースされました。これによりHeroku上で動くアプリケーションのトラブルシュートやパフォーマンス分析の過程でログを参照するための設定が大幅に楽になっています。ここでは設定手順をご紹介します。
従来、Heroku上のログをNew Relicに統合するには一旦FluentDなどのログ転送ツールを仲介する必要がありました(参考)。そのためFluentD用のDynoを立てたり、冗長性に考慮する必要があるといった問題がありました。
今回のリリースにより、Heroku Syslog drainを使ってアプリケーションから直接New Relicに転送できるようになったため、仲介のDynoを個別に用意する必要はなくなりました。
非常に簡単な設定手順は以下です。詳細は公式ドキュメントを参照してください。
なお、ログの送信元であるHeroku上のアプリケーションはすでに稼働しているということ、Heroku CLIが利用できる環境にあることを前提としています。
- Heroku側設定
- Heroku Syslog drainを生成する
- Heroku Syslog drainのdrain tokenを取得する
- New Relic側設定
- Insights Insert Keyを取得する(オプション:未作成の場合のみ)
- Heroku Syslog drain連携設定をする
一つ一つ説明していきます。まず、Heroku側の設定です。
Heroku Syslog drainを生成する
以下のコマンドにて、Syslog drainを生成します。
heroku drains:add syslog+tls://newrelic.syslog.nr-data.net:6515 -a <Dynoアプリケーション名>
これでHeroku上のログを転送するためのSyslog drainが生成されます
Heroku Syslog drainのdrain tokenを出力する
以下のコマンドにて、先ほど作成したSyslog drainのdrain tokenを取得します。
heroku drains -a <Dynoアプリケーション名> --json
コマンドの実行結果として以下のようなJsonが出力されます。このうち、前段のステップで作成したSyslog drainを特定し、tokenを記録します。このtokenは後続のNew Relicの連携設定で必要になります。
つづいてNew Relic側の設定です。
Insights Insert Keyを取得する
Herokuより転送されたログをデータとして登録するためにAPI Key(Insights Insert Key)を取得します。すでに対象のアカウントで作成済みの場合はそれを利用可能なので、必ずしも新たに取得する必要はありません。Insights Insert Keyの取得方法は公式ドキュメントを参照ください。
Heroku Syslog drain連携設定をする
New Relic側に、前段で取得したdrain tokenとInsights Insert Keyを登録し、ログの連携設定を完了します。
まず、ログイン後の画面にて「Add more data」メニューを押下して新規のデータソースの追加画面に遷移します。
遷移後の画面で「Heroku」で検索するとLog ingestionのセクションにアイコンが出るのでそれを押下します。
その後は、先ほど取得したdrain tokenとInsights Insert Keyを登録すれば完了です。これでHerokuのログが転送されるようになります。
ログの確認
さっそくログが送られているか確認してみましょう。
Logsの画面にて、plugin.typeを確認すると「syslog-heroku」というものが確認できます。これで絞り込みをするとHerokuのログが送られていることを確認できました。
以上が、HerokuのログをNew Relicに直接連携するという新しくリリースされた機能になります。ログが統合されれば、以前本ブログでもご紹介したDynoのランタイムログの監視なども今まで以上に簡単に利用できるようになります。Herokuのアプリが稼働していればほんの2, 3分で設定できてしまいますので是非お試しください!
New Relicを試してみたい方はこちらへ。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。