読者です 読者をやめる 読者になる 読者になる

New RelicのREST APIをPowerShellから使ってみる

PowerShell

手元の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


アプリの名前を確認しておく

APIでアプリ名を取得することも可能ですが、今回は事前にWEB画面から確認しておきます。


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  

最後に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