手元のWindowsからNew RelicのREST APIを試してみたかったので、PowerShellからアクセスしてみました。
どんなデータが取れるか
実際にどんな機能があるか知りたい場合は、New RelicでAPI Explorerが準備されているので、実際に動かしながらコードを組むことができます。そして無償版でも利用可能です。
API Explorer
https://rpm.newrelic.com/api/explore
アクセス方法はAPI Keyを利用
New RelicのAPIはヘッダーにAPI Keyを渡すだけのシンプルな認証方式なのですぐに使うことができます。
API Keyの取得方法は以下にドキュメント化されています。事前に取得しておきます。
https://docs.newrelic.com/docs/apm/apis/requirements/api-key
PowerShellで接続してみる
New RelicのAPI Explorerも他の良くあるREST APIのドキュメントと同様、サンプルは全てcurlコマンドで書かれています。ここではPowerShellで接続していきます。
API Keyをヘッダーとして利用
#API Keyをヘッダーに設定、HashTableオブジェクト型に設定して利用します $apiKey = "Your API Key" $headerApiKey = @{"x-api-key"=$apiKey}
指定アプリのメタデータを取得
#アプリ名 $appName = "Your Application Name" #アプリケーションのメタデータを取得 $appListApiUri = "https://api.newrelic.com/v2/applications.json" $appList = Invoke-WebRequest -Headers $headerApiKey -Method Get -Uri $appListApiUri #指定のアプリの情報を取得 $appData = ($appList | ConvertFrom-Json).applications | ?{$_.name -eq $appName}
Metricデータを取得
#アプリケーションのIDを利用してMetricデータ取得用のURIを生成 $appMetricDataApiUri = "https://api.newrelic.com/v2/applications/{0}/metrics/data.json" -F $appData.id
取得したデータを展開します(全データ)
#Metric:WebTransactionの全値の取得 $appMetricAll = Invoke-WebRequest -Headers $headerApiKey -Method Post -Uri $appMetricDataApiUri -Body "names[]=WebTransaction" $appMetricAll | ConvertFrom-Json | Select-Object -ExpandProperty metric_data | Select-Object -ExpandProperty metrics | Select-Object -ExpandProperty timeslices | Select -Property from,to -ExpandProperty values | Out-GridView
取得したデータを展開します(指定データ)
#Metric:WebTransactionのaverage_response_timeの値のみ取得 $appMetricAvgResp = Invoke-WebRequest -Headers $headerApiKey -Method Post -Uri $appMetricDataApiUri -Body "names[]=WebTransaction&values[]=average_response_time" $appMetricAvgResp | ConvertFrom-Json | Select-Object -ExpandProperty metric_data | Select-Object -ExpandProperty metrics | Select-Object -ExpandProperty timeslices | Select -Property from,to -ExpandProperty values | Out-GridView
最後にOut-GridViewに出してるので以下のような画面が表示されます。
コード全体
最後にコード全体を載せておきます。
#API Keyをヘッダーに設定、HashTableオブジェクト型に設定して利用します $apiKey = "Your API Key" $headerApiKey = @{"x-api-key"=$apiKey} #アプリ名 $appName = "Your Application Name" #アプリケーションのメタデータを取得 $appListApiUri = "https://api.newrelic.com/v2/applications.json" $appList = Invoke-WebRequest -Headers $headerApiKey -Method Get -Uri $appListApiUri #指定のアプリの情報を取得 $appData = ($appList | ConvertFrom-Json).applications | ?{$_.name -eq $appName} #アプリケーションのIDを利用してMetricデータ取得用のURIを生成 $appMetricDataApiUri = "https://api.newrelic.com/v2/applications/{0}/metrics/data.json" -F $appData.id #Metric:WebTransactionの全値の取得 $appMetricAll = Invoke-WebRequest -Headers $headerApiKey -Method Post -Uri $appMetricDataApiUri -Body "names[]=WebTransaction" $appMetricAll | ConvertFrom-Json | Select-Object -ExpandProperty metric_data | Select-Object -ExpandProperty metrics | Select-Object -ExpandProperty timeslices | Select -Property from,to -ExpandProperty values | Out-GridView #Metric:WebTransactionのaverage_response_timeの値のみ取得 $appMetricAvgResp = Invoke-WebRequest -Headers $headerApiKey -Method Post -Uri $appMetricDataApiUri -Body "names[]=WebTransaction&values[]=average_response_time" $appMetricAvgResp | ConvertFrom-Json | Select-Object -ExpandProperty metric_data | Select-Object -ExpandProperty metrics | Select-Object -ExpandProperty timeslices | Select -Property from,to -ExpandProperty values | Out-GridView