Published
- 4 min read
NewRelic REST APIを使って、特定URLのパフォーマンスデータを取得する
1.記事の背景
NewRelicのREST APIを使うと、NewRelic APM(Application Performance Monitoring)の画面で見れる内容がJSONで取得できます。
このAPIを使えば、参考記事のように色々なことができますが、今回はKey Transaction機能を使って、特定URLのパフォーマンスデータを取得する方法を記載します。
2.NewRelic APIを叩くまでの下準備
2-1.API Keyの取得
REST API Keyは、NewRelic画面上の以下の場所にある。
REST API Keyをそのまま使うか、Adminユーザごとに作成できるAPI Keyを使うかは用途に応じて使い分ければよいかと。
2-2.Key Transactionsの設定
NewRelicのKey Transactionsという機能を使うと、特定URLのパフォーマンスデータまで取得することが可能になります。
この画面で、画像のAdd Moreをクリック
key_transaction_select.png Key Transactionsの追加は、アプリケーションやtransactionの候補が補完される。
3.NewRelic APMのパフォーマンスデータ取得方法
参考記事にも記載されていますが、API Exploreでクエリの投げ方が分かります。
例えば、以下のようなクエリでcurlを実行すると、以下の様なJSONが返ってきます。
3-1.複数アプリケーションの中で、特定アプリケーションのパフォーマンスデータを取得する
クエリ(クエリ実行後の結果をjqで整形)
curl -s -X GET 'https://api.newrelic.com/v2/applications.json' -H 'X-Api-Key:【API Key】' -d 'filter[ids]=【Application ID】' | jq .
結果(“XXXXXXX”の部分は伏せてます)
{
"applications": [
{
"id": "XXXXXXX",
"name": "XXXXXXX",
"language": "php",
"health_status": "green",
"reporting": true,
"last_reported_at": "2015-12-12T05:37:41+00:00",
"application_summary": {
"response_time": 95.6,
"throughput": 17.7,
"error_rate": 0,
"apdex_target": 0.5,
"apdex_score": 1,
"host_count": 1,
"instance_count": 1
},
"settings": {
"app_apdex_threshold": 0.5,
"end_user_apdex_threshold": 7,
"enable_real_user_monitoring": true,
"use_server_side_config": false
},
"links": {
"application_instances": ["XXXXXXX"],
"alert_policy": "XXXXXXX",
"servers": ["XXXXXXX"],
"application_hosts": ["XXXXXXX"]
}
}
],
"links": {
"application.servers": "/v2/servers?ids={server_ids}",
"application.server": "/v2/servers/{server_id}",
"application.application_hosts": "/v2/application/{application_id}/hosts?ids={host_ids}",
"application.application_host": "/v2/application/{application_id}/hosts/{host_id}",
"application.application_instances": "/v2/application/{application_id}/instances?ids={instance_ids}",
"application.application_instance": "/v2/application/{application_id}/instances/{instance_id}",
"application.alert_policy": "/v2/alert_policies/{alert_policy_id}"
}
}
3-2.特定URLのパフォーマンスデータを取得する
クエリ(クエリ実行後の結果をjqで整形)
curl -s -X GET 'https://api.newrelic.com/v2/key_transactions.json' -H 'X-Api-Key:【API Key】' -d 'filter[ids]=【Key Transactions ID】' | jq .
結果(“XXXXXXX”の部分は伏せてます)
{
"key_transactions": [
{
"id": "XXXXXXX",
"name": "/XXXXXXX/XXXXXXX.php",
"transaction_name": "/XXXXXXX/XXXXXXX.php",
"health_status": "green",
"reporting": true,
"last_reported_at": "2015-12-13T02:00:41+00:00",
"application_summary": {
"response_time": 175,
"throughput": 6.33,
"error_rate": 0,
"apdex_target": 0.5,
"apdex_score": 1
},
"links": {
"application": "XXXXXXX"
}
}
],
"links": {
"key_transaction.application": "/v2/applications/{application_id}"
}
}
4.まとめ
NewRelicを運用していると、APM全体の値に振り回されることがありますが、 Key Transaction機能まで使ってあげると、特定URLの性能監視まで行えるようになります。 また、取得したJSONデータをZABBIXなどの監視ツールへ連携させることで、アラートの通知先をいつも使っている監視ツールに集約することも可能になるので、いちど使ってみてはいかがでしょうか。