オープンソースの Grafana および Prometheus と互換性のある Application Real-Time Monitoring Service (ARMS) は、カスタムダッシュボードの要件を満たすために、Grafana および Prometheus に基づく可観測性ソリューションを設計しました。このトピックでは、カスタム Grafana ダッシュボードを作成する方法と、カスタム文を作成してダッシュボードにデータをインポートする方法について説明します。
背景情報
Managed Service for Prometheus は、Application Monitoring のモニタリングデータと統合してメトリックを可視化します。 Managed Service for Prometheus では、アプリケーションモニタリングデータの取得、プリセットダッシュボードの表示、ビジネス要件に基づく二次開発を実行できます。
前提条件
Application Monitoring は、アプリケーションがデプロイされているリージョンに無料の Prometheus インスタンスを自動的に作成します。次の図に示すように、中国 (杭州) リージョンで監視されているアプリケーションのすべてのメトリックは、arms_metrics_cn-hangzhou_cloud_hangzhou という名前の Prometheus インスタンスに保存されます。
シナリオ
Application Monitoring メトリックに基づいてダッシュボードを再作成します。
日々の O&M では、Application Monitoring メトリックを他のデータソースのメトリックと組み合わせて専用のダッシュボードを作成します。
ピーク時の開始時に、Application Monitoring メトリックをアップストリームサービスまたはダウンストリームサービスのメトリックと組み合わせて専用のダッシュボードを作成します。
セルフマネージド Grafana システムで Managed Service for Prometheus で取得したアプリケーションモニタリングデータを表示できます。
Managed Service for Prometheus で取得したアプリケーションモニタリングデータを二次開発に使用できます。
前提条件
ARMS エージェントがアプリケーションにインストールされています。詳細については、「Application Monitoring の概要」をご参照ください。
Grafana がローカルコンピュータにインストールされているか、Managed Service for Grafana ワークスペースが作成されています。
カスタムダッシュボードを作成する
ステップ 1:Application Monitoring アプリケーションのモニタリングデータを Grafana に統合する
デフォルトでは、Managed Service for Prometheus は Application Monitoring のモニタリングデータを統合します。アプリケーションのモニタリングデータの保存に使用される Prometheus インスタンスを Grafana に簡単に統合できます。
セルフマネージド Grafana システムにデータソースを追加する
Prometheus インスタンスの HTTP API アドレスを取得します。
ARMS console にログオンします。左側のナビゲーションウィンドウで、 を選択します。上部のナビゲーションバーで、アプリケーションがデプロイされているリージョンを選択します。
インスタンスタイプが [アプリケーションモニタリング用の Prometheus インスタンス] であるインスタンスは、Application Monitoring でモニターされるアプリケーションのモニタリングデータを保存するために使用されます。

該当の Prometheus インスタンスの名前をクリックします。 表示されたページで、左側のナビゲーションウィンドウで[設定]をクリックして、HTTP API アドレスを表示します。

オプション。 [トークンの生成] をクリックして、Prometheus インスタンスの認証トークンを取得します。このトークンは、モニタリングデータを Grafana にインポートする際のデータセキュリティを確保するために使用されます。
重要認証トークンが生成された後、Prometheus インスタンスをデータソースとして Grafana システムに追加するときに、トークンを指定する必要があります。そうしないと、Prometheus インスタンスからモニタリングデータを読み取ることができません。
Prometheus インスタンスをデータソースとして Grafana システムに追加します。
この例では、Grafana 10.x を使用しています。他の Grafana バージョンでデータソースを追加する方法については、「Grafana ドキュメント」をご参照ください。
管理者として Grafana システムにログオンします。
左上隅にある
アイコンにポインタを移動し、[データソース] をクリックします。[データソースの追加] をクリックし、データソースタイプとして [Prometheus] を選択します。
[設定] タブで、[名前] フィールドにカスタム名を入力し、前の手順で取得した HTTP API アドレスを HTTP セクションの [Prometheus サーバー URL] フィールドに入力します。

オプション。 [カスタム HTTP ヘッダー] セクションで、[+ ヘッダーを追加] をクリックします。 [ヘッダー] パラメーターを [認証] に設定し、[値] パラメーターを前の手順で生成したトークンに設定します。

[保存 & テスト] をクリックします。
Managed Service for Grafana にデータソースを追加する
Application Monitoring で監視されるアプリケーションのモニタリングデータを Managed Service for Grafana に統合できます。
ARMS console にログオンします。左側のナビゲーションウィンドウで、 を選択します。 ワークスペース管理ページで、ワークスペース ID をクリックします。
[ワークスペース情報] ページで、[クラウドサービス統合] セクションの [ARMS Application Monitoring] をクリックします。ターゲットリージョンで Prometheus インスタンスを見つけ、[アクション] 列の [統合] をクリックします。
表示されるメッセージで、[OK] をクリックします。
同期が完了したら、[アクション] 列の [フォルダー] をクリックします。
表示されるページの [ダッシュボード] タブで、ダッシュボード名をクリックして、プリセットの Application Monitoring ダッシュボードを表示します。

左上隅にある
アイコンにポインタを移動し、[データソース] をクリックしてデータソースを表示します。
ステップ 2:カスタムダッシュボードを作成する
左上隅の
アイコンにポインターを合わせ、[ダッシュボード] をクリックします。[ダッシュボード] ページで、[新規ダッシュボード] をクリックします。[新規ダッシュボード] ページで、[空のパネルを追加] をクリックしてダッシュボードパネルを作成します。
[データソースの選択] ダイアログボックスで、データソースを選択します。データソース名のデフォルトフォーマットは arms_metrics_{regionid}_cloud です。
重要現在のデータソースでデータが使用可能であることを確認してください。
A セクションで次のクエリパラメーターを設定します。
PromQL クエリ文を指定する
Code モードでは、[メトリクスブラウザ] の右側に PromQL 文を入力します。

Application Monitoring モジュールのアプリケーション詳細ページで、メトリックを見つけ、
アイコンをクリックして、メトリックに対応する PromQL 文を表示します。 詳細については、「アプリケーションの概要」をご参照ください。
PromQL 文の詳細については、「Prometheus ドキュメント」をご参照ください。
アプリケーションメトリックを指定する
Builder モードでは、[メトリック] ドロップダウンリストから、
arms_jvm_threads_countなどのメトリックを選択して JVM スレッド数をクエリします。 Application Monitoring でサポートされているメトリックについては、「Application Monitoring メトリック」をご参照ください。[ラベルフィルター] セクションで、ラベルと値を指定します。

右側のパネルタブで、パネルのタイトルを設定し、チャートタイプを選択します。
説明1 つのメトリックに対して複数のチャートタイプを選択して、異なる粒度のチャートを取得できます。

右上隅の [適用] をクリックします。
カスタムクエリ文を作成する
ARMS console で取得した Prometheus HTTP API アドレス と PromQL 文 に基づいて、シェルスクリプトまたは Java を使用して HTTP リクエストを作成し、モニタリングデータをカスタマイズできます。
たとえば、Prometheus HTTP API アドレスは https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/7a8f8e783c66a44a0f6a1dc9a0b8f1/1277589232893727/arms-metrics-99214ff7de7d0b2d/cn-hangzhou です。次の形式で PromQL 文と組み合わせます。
{{Prometheus HTTP API}}/api/v1/query_range?query={{PromQL}}&start={{startTime}}&end={{endTime}}&step={{step}}
出力クエリ文:
https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/7a8f8e783c66a44a0f6a1dc9a0b8f1/1277589232893727/arms-metrics-99214ff7de7d0b2d/cn-hangzhou/api/v1/query_range?query=sum by (callType,)(sum_over_time_lorc(arms_app_requests_count_ign_destid_endpoint_ppid_prpc{pid="ckv8e2vzfj@7e393063f3fd6ad",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm", }[1m]))&start=1728719399&end=1728722999&step=60s
次のデータは、この文でクエリされます。

よくある質問
データのクエリは課金されますか?
いいえ、データクエリは無料です。
PromQL 文を実行すると速度制限がトリガーされますか?
速度制限保護は利用可能ですが、クエリ/秒 (QPS) 数には適用されません。すべての操作のクエリや 30 日より古いデータの取得など、時間のかかるクエリを避け、受信クエリレートを 50 QPS 未満に保つことをお勧めします。継続的な高消費クエリを実行する必要がある場合は、submit a ticket してクォータを増やしてください。