当社の変換REST APIを使用して、既存のGrafanaダッシュボードをNew Relicネイティブダッシュボードに変換します。オブザーバビリティツールの統合を検討している場合でも、監視設定全体をNew Relicに移行する場合でも、単に既存のGrafana設定と並行してNew Relicダッシュボードを試用したい場合でも、このAPIを使用すればより簡単に開始できます。
このAPIは、New Relic PromQL翻訳ロジックを使用してクエリを翻訳します。サポート対象のPromQL機能と関数のリストについては、PromQL機能サポートガイドを参照してください。
前提条件
このAPIを使用する前に、以下が必要です。
APIエンドポイントに対してリクエストを行う
GrafanaダッシュボードをNew Relicのダッシュボードに変換するには、変換するダッシュボードをリクエストの本文に含めて、該当するリージョンの適切なエンドポイントにPOSTリクエストを送信します。
- 私たち:
https://prometheus-api.newrelic.com/api/v1/translate/dashboard/grafana - EU:
https://prometheus-api.eu.newrelic.com/api/v1/translate/dashboard/grafana - JP:
https://prometheus-api.jp.newrelic.com/api/v1/translate/dashboard/grafana
APIリファレンス
認証
すべてのAPIコールにはユーザーAPIキーが必要です。リクエストのapi-keyヘッダーにこのキーを含めます。
リクエストボディ
リクエストボディは、次の形式のJSONオブジェクトである必要があります。
"accountId": int[optional],
"dashboard": object[required]
ここで、dashboardは翻訳するGrafanaダッシュボードのJSONオブジェクトです。accountIdフィールドはオプションです。省略した場合、翻訳されたダッシュボードはリクエストを行っているユーザーのアカウントからデータをクエリします。
APIは、翻訳されたNew Relicダッシュボードを含むJSONオブジェクトを返します。
"name": "Translated Dashboard",
"permissions": "PUBLIC_READ_WRITE",
例
$export NR_USER_KEY="YOUR_NEW_RELIC_USER_API_KEY"
$export JSON_FILE="my_grafana_dashboard.json"
$export TRANSLATOR_ENDPOINT="<TRANSLATOR_ENDPOINT_FOR_YOUR_REGION>"
$curl -s ${TRANSLATOR_ENDPOINT} \
>-H "Content-Type: application/json" \
>-H "api-key:${NR_USER_KEY}" \
>-d "$(jq -c -n --slurpfile dashboard "${JSON_FILE}" '{dashboard: $dashboard[0]}')" \
ダッシュボードがデータをクエリするアカウントを上書きしたい場合は、リクエストのペイロードにaccountId: intを含めます。これにより、ダッシュボード内のすべてのクエリが指定されたアカウントからデータをクエリするようになります。
$export NR_USER_KEY="YOUR_NEW_RELIC_USER_API_KEY"
$export ACCOUNT_ID="YOUR_NEW_RELIC_STAGING_ACCOUNT_ID"
$export JSON_FILE="my_grafana_dashboard.json"
$export TRANSLATOR_ENDPOINT="<TRANSLATOR_ENDPOINT_FOR_YOUR_REGION>"
$curl -s ${TRANSLATOR_ENDPOINT} \
>-H "Content-Type: application/json" \
>-H "api-key:${NR_USER_KEY}" \
>-d "$(jq -c -n --arg accountId "$ACCOUNT_ID" --slurpfile dashboard "$JSON_FILE" '{accountId: $accountId, dashboard: $dashboard[0]}')" \
$export NR_USER_KEY="YOUR_NEW_RELIC_USER_API_KEY"
$export ACCOUNT_ID="YOUR_NEW_RELIC_STAGING_ACCOUNT_ID"
$export JSON_FILE="my_grafana_dashboard.json"
$export TRANSLATOR_ENDPOINT="<TRANSLATOR_ENDPOINT_FOR_YOUR_REGION>"
$export NERDGRAPH_ENDPOINT="<NERDGRAPH_ENDPOINT_FOR_YOUR_REGION>"
$NR_DASHBOARD=$(curl -s ${TRANSLATOR_ENDPOINT} \
>-H "Content-Type: application/json" \
>-H "api-key:${NR_USER_KEY}" \
>-d "$(jq -c -n --arg accountId "$ACCOUNT_ID" --slurpfile dashboard "$JSON_FILE" '{accountId: $accountId, dashboard: $dashboard[0]}')" \
$curl -X POST ${NERDGRAPH_ENDPOINT} \
>-H "Content-Type: application/json" \
>-H "API-Key: ${NR_USER_KEY}" \
$"query": "mutation($accountId: Int!, $dashboard: DashboardInput!) { dashboardCreate(accountId: $accountId, dashboard: $dashboard) { entityResult { guid name } errors { description } } }",
$"accountId": '${ACCOUNT_ID}',
$"dashboard": '${NR_DASHBOARD}'
翻訳エラーのトラブルシューティング
トランスレーターがウィジェットやクエリの完全な翻訳を妨げる問題に遭遇した場合、「Action Items」を作成します。これは、問題の内容を説明し、修正を提案する特別なMarkdownウィジェットです。

GrafanaとNew Relicのウィジェットタイプ
サポートしているGrafanaウィジェットタイプと、それに対応するNew Relicウィジェットタイプのリストは次のとおりです。