CloudMonitor を使用して、ApsaraMQ for Kafka のリソース (インスタンス、トピック、コンシューマーグループ) をリアルタイムで監視し、メトリクスがしきい値を超えたときにアラートを受信します。
メトリクス
-
メトリクスデータは 1 分間の期間で集計されます。B/s (バイト/秒) のように秒単位で報告される値は、直前の 1 分間の平均値を表します。
-
メトリクスデータには 1 分間のレイテンシーがあります。
-
これらのメトリクスは、CloudMonitor の名前空間
acs_kafka(ProductCategory:kafka) に属します。CloudMonitor API または SDK を使用してメトリクスをクエリするには、これらの識別子が必要です。 -
メトリクス ID に V2 サフィックスが付いているメトリクス (例:
InstanceCpuUsageV2) は、V2 リザーブドインスタンスに固有のものです。 -
消費関連のメトリクスは、オフセットのコミットに依存します。未消費メッセージ数などのメトリクスは、クライアントによってコミットされたコンシューマーオフセットに基づいて計算されます。クライアントがオフセットを適切にコミットしない場合 (たとえば、自動コミットが有効になっていない、または手動コミットが設定されていない場合)、監視データは実際の消費状況を正確に反映できず、誤ったアラートが発生する可能性があります。クライアントでオフセットのコミットメカニズムが正しく設定されていることを確認してください。
-
サーバー側のスロットリングが発生したかどうかを判断するには、[Instance Produce Throttle Queue Size] (
InstanceProduceThrottleQueueSizeV2) または [Instance Consume Throttle Queue Size] (InstanceFetchThrottleQueueSizeV2) メトリクスを監視します。スロットリングは、このメトリクスがゼロ以外の値を報告した場合にのみ発生したと見なされます。軽微なトラフィック超過は通常、弾性バッファがあり、すぐにスロットリングがトリガーされることはありません。 -
[Production Traffic Ratio] (
InstanceMessageInputRatioV2) と [Consumption Traffic Ratio] (InstanceMessageOutputRatioV2) は、ノードレベルのトラフィック使用率を反映します。Kafka はデフォルトで 3 つのレプリカを持ち、スループット容量が均等に分散されているため、周期的なバッチ送信によるバーストトラフィックなどのトラフィックスキューが発生すると、インスタンスの平均レートが設定されたしきい値に達していなくても、単一ノードの秒単位のトラフィックが一時的に制限を超えることがあります。監視チャートには分単位で平滑化されたデータが表示されますが、実際のスロットリングは秒単位の監視に基づいてトリガーされます。これらの 2 つの値は、トラフィックのバースト時に大きく異なる場合があります。
ApsaraMQ for Kafka は、次のメトリクスをサポートしています。
一般的な監視シナリオでは、次のメトリクスから始めます。
-
ストレージアラート:
instance_disk_capacity(ディスク使用率) を監視し、アラートのしきい値を 85% に設定します。 -
コンシューマラグの検出:
message_accumulation(コンシューマーグループのメッセージ蓄積) を監視して、低速または停止したコンシューマーを検出します。 -
容量計画:
InstanceMessageInputRatioV2(インスタンス仕様に対するインバウンドトラフィックの割合) とPartitionInstanceRatioV2(インスタンス仕様に対するパーティション数の割合) を監視して、インスタンスのアップグレードを計画します。
インスタンスレベルのメトリクス
|
メトリクス名 |
メトリクス ID |
ディメンション |
単位 |
|
インスタンスのディスク使用率 |
instance_disk_capacity |
instanceId |
% |
|
インスタンスのパブリックインバウンド帯域幅 |
instance_internet_rx.rate |
instanceId |
bit/s |
|
インスタンスのパブリックアウトバウンド帯域幅 |
instance_internet_tx.rate |
instanceId |
bit/s |
|
インスタンスのインバウンドトラフィック |
instance_message_input |
instanceId |
B/s |
|
インスタンスに生成されたメッセージ |
instance_message_num_input |
instanceId |
count/s |
|
インスタンスのアウトバウンドトラフィック |
instance_message_output |
instanceId |
B/s |
|
インスタンスへのメッセージ送信リクエスト |
instance_reqs_input |
instanceId |
count/s |
|
インスタンスからのメッセージ消費リクエスト |
instance_reqs_output |
instanceId |
count/s |
|
インスタンスのバッチサイズ TP50 (50 パーセンタイル) |
InstanceBatchSizeTP50V2 |
instanceId |
bytes |
|
インスタンスのバッチサイズ TP999 (99.9 パーセンタイル) |
InstanceBatchSizeTP999V2 |
instanceId |
bytes |
|
インスタンスの CPU 使用率 |
InstanceCpuUsageV2 |
instanceId |
% |
|
インスタンスのフェッチスロットリングキューサイズ |
InstanceFetchThrottleQueueSizeV2 |
instanceId |
count |
|
インスタンスの高可用性 (HA) イベント |
InstanceHAEventV2 |
instanceId |
count |
|
インスタンスのパブリックインバウンド帯域幅 (ノードごと) |
InstanceInternetRxRateByNode |
instanceId, nodeIp |
bit/s |
|
インスタンスのパブリックインバウンド帯域幅使用率 (ノードごと) |
InstanceInternetRxUtilizationByNode |
instanceId, nodeIp |
% |
|
インスタンスのパブリックアウトバウンド帯域幅 (ノードごと) |
InstanceInternetTxRateByNode |
instanceId, nodeIp |
bit/s |
|
インスタンスのパブリックアウトバウンド帯域幅使用率 (ノードごと) |
InstanceInternetTxUtilizationByNode |
instanceId, nodeIp |
% |
|
インスタンスの最大接続数 |
InstanceMaxConnection |
instanceId |
count |
|
インスタンスの最大インターネット接続数 |
InstanceMaxInternetConnection |
instanceId |
count |
|
インスタンスの最大読み取り IOPS (1 秒あたりの I/O オペレーション) |
InstanceMaxReadIOPSV2 |
instanceId |
count/s |
|
インスタンスの最大書き込み IOPS |
InstanceMaxWriteIOPSV2 |
instanceId |
count/s |
|
インスタンス仕様に対するインバウンドトラフィックの割合 |
InstanceMessageInputRatioV2 |
instanceId |
% |
|
インスタンス仕様に対するアウトバウンドトラフィックの割合 |
InstanceMessageOutputRatioV2 |
instanceId |
% |
|
インスタンスのプロデューススロットリングキューサイズ |
InstanceProduceThrottleQueueSizeV2 |
instanceId |
count |
|
インスタンスのリバランス時間 |
InstanceRebalanceTimeV2 |
instanceId |
ms |
|
インスタンスの合計接続数 |
InstanceTotalConnection |
instanceId |
count |
|
インスタンスの合計インターネット接続数 |
InstanceTotalInternetConnection |
instanceId |
count |
|
インスタンス仕様に対するパーティション数の割合 |
PartitionInstanceRatioV2 |
instanceId |
% |
コンシューマーグループレベルのメトリクス
|
メトリクス名 |
メトリクス ID |
ディメンション |
単位 |
|
コンシューマーグループのメッセージ出力 |
group_message_num_output |
instanceId, consumerGroup |
count/s |
|
トピックのコンシューマーグループメッセージ出力 |
group_message_num_output_onetopic |
instanceId, consumerGroup, topic |
count/s |
|
コンシューマーグループの消費レイテンシー |
group_topic_accumulation_consume_cost_time |
instanceId, consumerGroup |
ms |
|
コンシューマーグループのメッセージ蓄積 |
message_accumulation |
instanceId, consumerGroup |
count |
|
トピックのコンシューマーグループメッセージ蓄積 |
message_accumulation_onetopic |
instanceId, consumerGroup, topic |
count |
トピックレベルのメトリクス
|
メトリクス名 |
メトリクス ID |
ディメンション |
単位 |
|
トピックのインバウンドトラフィック |
topic_message_input |
instanceId, topic |
B/s |
|
トピックに生成されたメッセージ |
topic_message_num_input |
instanceId, topic |
count/s |
|
トピックのアウトバウンドトラフィック |
topic_message_output |
instanceId, topic |
B/s |
|
トピックの消費/生産トラフィック比 |
topic_message_output_input_ratio |
instanceId, topic |
% |
|
トピックのメッセージ送信リクエスト |
topic_reqs_input |
instanceId, topic |
count/s |
|
トピックのメッセージ消費リクエスト |
topic_reqs_output |
instanceId, topic |
count/s |
課金
ApsaraMQ for Kafka の CloudMonitor 機能は無料です。
前提条件
サービスリンクロールが必要です。
-
ロール名:AliyunServiceRoleForAlikafka
-
ポリシー名:AliyunServiceRolePolicyForAlikafka
-
権限:ApsaraMQ for Kafka が、CloudMonitor や Application Real-Time Monitoring Service (ARMS) などの他のサービスにアクセスし、監視関連の機能を使用することを許可します。
-
詳細については、「サービスリンクロール」をご参照ください。
監視データの表示
-
ApsaraMQ for Kafka コンソールにログインします。
リソースの分布 セクションの 概要 ページで、管理する ApsaraMQ for Kafka インスタンスが存在するリージョンを選択します。
インスタンスリスト ページで、管理するインスタンスの名前をクリックします。
-
左側メニューで、 を選択します。
-
Cloud Monitor ページで、アラートルール タブをクリックします。監視したいリソースのタブを選択し、リソースを見つけ、操作 列の CloudMonitor をクリックします。時間範囲を設定して監視データを表示します。
現在のリソースのすべてのメトリクスのチャートが自動的に表示されます。
アラートルールの設定
-
Cloud Monitor ページで Alert Rule タブをクリックし、インスタンス、[Topic]、または [Group] タブを選択します。
この操作により、CloudMonitor コンソールの アラートルールの作成 パネルにリダイレクトされます。
-
アラートルールの作成 パネルで、ルールと通知情報を設定し、OK をクリックします。パラメーターの詳細については、「アラートルールの作成」をご参照ください。
-
OK をクリックすると、Alert Rule タブにアラートルールが表示されます。ルールのステータスが [Enabled] であることを確認します。
例:DingTalk ロボット通知を使用したグループメッセージ蓄積アラートの設定
アラートを設定する前に、CloudMonitor コンソールにログインし、アラート連絡先または連絡先グループとして DingTalk ロボットを追加します。DingTalk ロボットの Webhook URL は事前に登録しておく必要があります。
-
ApsaraMQ for Kafka コンソールにログインします。
-
Alert Rule タブをクリックします。
-
[Group] リソースタブをクリックします。
-
アラートを設定するグループを見つけ、操作 列の アラートルールの作成 をクリックします。ページは CloudMonitor コンソールの アラートルールの作成 パネルにリダイレクトされます。
-
アラートルールの作成 パネルで、次の設定を構成します。
-
メトリクス:メッセージ蓄積メトリクス
MessageAccumulationV3(グループメッセージバックログ合計) を選択します。 -
アラート条件:しきい値と、アラートが送信されるまでに条件をトリガーする必要がある連続期間の数を設定します。
-
通知方法:通知連絡先の下で、前提条件として設定した DingTalk ロボットの連絡先グループを選択します。
-
-
OK をクリックしてアラートルールを保存します。
ルールが作成されると、Alert Rule タブに新しいルールがステータス [Enabled] で表示されます。グループのメッセージ蓄積が設定されたしきい値を超えると、CloudMonitor は指定された DingTalk ロボットに通知を送信します。
アラート情報の表示
-
Cloud Monitor ページで、アラートルール タブをクリックします。次に、アラート情報を表示したいリソースのタブ ([Instance]、[Topic]、[Group] など) を選択します。
-
リソースを見つけ、操作 列の アラートルール をクリックします。
-
[Associated Alert Rules] パネルで、対象のアラートルールを見つけ、操作 列の 詳細 をクリックして、ルールの設定とアラート履歴を表示します。このページからルールを有効化、無効化、または削除することもできます。
よくある質問
CloudMonitor は CPU、メモリ、日次書き込み量の統計をサポートしていますか?
-
CPU とメモリの監視:ApsaraMQ for Kafka は、CloudMonitor を介して CPU とメモリの監視メトリクスを直接公開していません。システムリソースの使用率を監視するには、「Prometheus 監視」で説明されている Prometheus 監視ソリューションをご参照ください。
-
日次書き込み量:CloudMonitor は、専用の日次書き込み量ビューを提供していません。次の方法で日次書き込み量を推定できます。
-
コンソール:インスタンス詳細ページで [Topic Management] に移動し、対象トピックの監視情報で書き込みスループット (B/s) を表示します。または、[CloudMonitor] ページで、[インスタンスのインバウンドトラフィック] (
instance_message_input、単位:B/s) または [インスタンスに生成されたメッセージ] (instance_message_num_input、単位:count/s) メトリクスを表示し、1日の秒数を掛けて日次量を推定します。 -
Prometheus 監視:
instance_message_input(bytes/s) とinstance_message_num_input(messages/s) のインスタンスレベルのメトリクスをクエリして、継続的なインバウンドトラフィックデータを取得します。 -
API クエリ:Kafka の Admin API を使用してタイムスタンプでオフセットをクエリし、その差分から特定の時間範囲内に生成されたメッセージの正確な数を計算できます。
-
関連ドキュメント
-
Prometheus 監視については、「Prometheus 監視」をご参照ください。
-
監視とアラートに関する FAQ については、「監視とアラートに関する FAQ」をご参照ください。
メトリクスが表示されない場合は、サービスリンクロール AliyunServiceRoleForAlikafka が作成され、インスタンスが実行中であることを確認してください。