アドベントカレンダー三日目。今日は、最近追加された、APM の新機能、「データストアをインスタンス単位で可視化」できる機能を紹介。
複数データベースを利用している方、複数のアプリで1つのデータベースを利用している方には、パフォーマンスが気になった場合に便利な機能だと思います。
何ができるの?
ざっくり言うと、以下ができるようなった。
- 複数のデータストア・インスタンスを使っている場合に、個々のインスタンスのパフォーマンス(クエリ処理時間、スループット)が見える
- 1つのデータストア・インスタンスで複数アプリを使っていた場合に、アプリごとのパフォーマンスが確認できる
- データストアの健全さが一目でわかるヘルスインジゲーターがついた(アプリにあったが、データストアにもこの度付いた)
- トランザクション・トレースなので、個々のクエリを見た際に、それが、どのデータストアなのかの情報を表示するようなった
もぅちょっと個々を詳細に説明します。
サービスマップページ
※ サービスマップは、APM が管理しているアプリのアーキテクチャを自動的に視覚化するページ。
- データストアのヘルスインジゲーター: データストアのパフォーマンスが正常化どうかを一目で確認できるようなった。アプリにはあったが、データストアにもついた。
- 1つのデータストアで複数のアプリ、複数インスタンスを利用している際に、フィルター機能で絞りこみが行えるようなった。
トランザクション・トレース ページと スロークエリ・トレース ページ
- トランザクション・トレースページの Trace details タブや Database queries タブでクエリと一緒にデータベース名とインスタン情報が表示される。
インスタンス単位でアラートの設定ができる
New Relic Alerts のアラート条件で、custom metric に以下のように指定することで、インスタンス単位でレスポンスタイムやスループットのパフォーマンスが低下した際に、アラート通知の設定ができる。
Datastore/instance/vendor/host/port
使う条件は?
この機能に必要な情報を収集する APM エージェントのバージョンを使っている必要があります。またデータベース・ドライバにも依存するので、詳しくは、「互換性と要件(日本語)」に書いてあるのでそちらをチェック。
ここでは、簡単に APM エージェントのバージョンのみ書いておきます。
- Ruby: 3.17.0 以上 (1.4 は、2016/10/18 リリース)
- PHP: 6.8 以上 (6.8 は、2016/11/9 リリース)
- Java: 3.33.0 以上 (3.33.0 は、2016/11/2 リリース)
- .NET: 未対応
- Python: 2.72.0.52 以上 (3.33.0 は、2016/10/18 リリース)
- Go: 1.4 以上 (1.4 は、2016/10/12 リリース)
- Node.js: 1.31.0 以上 (1.31.0 は、2016/10/12 リリース)
メモ: 現在、自身が使用バージョンが気になる場合は、New Relic にログインし、APM > (アプリを選択) > 左サブメニューの一番下の方の Environment
> `Environment snapsho' タブの左に、サーバーごとにインストールしているエージェントバージョンが表示されるので、それをチェック。
誰が使えるの?
この機能は、有料版のみの提供。つまり、Essentials
と Pro
をお使いの方が対象。
また、サービスマップ上でのデータストアのインスタンスの可視化機能は、PRO
のみの提供。
まとめ
以上、いかがでしたでしょうか? 複数データベースを利用している方、複数のアプリで1つのデータベースを利用している方には、パフォーマンスが気になった場合に便利な機能かと思います。
あわせて読みたい: もっと詳細に知りたい方は以下が参考になります。
- ブログ記事:[翻訳] New Relic APM を使って個々のインスタンスにまで深掘りしてデータベースのパフォーマンスを監視、トラブルシューティングする
- ドキュメント:データベースとインスタンスレベルのパフォーマンス問題の分析(日本語)
このように、APM は日々進化していますので、ちょいちょいリリースノートをチェックしてみると、思わぬ新機能が使えるようなっていることがあります。
この機会に是非、最新版にバージョンアップしてみてください。
この機能以外に今年追加された機能なんかは別の日に解説しまーす。