はじめに
「手を動かして学ぶ!KafkaとPythonによるAWSストリーミングデータ分析入門【30日チャレンジ】」19日目です。これまで、Kafkaを核としたデータパイプラインを構築し、データをS3やDynamoDBに保存する仕組みを学びました。
今日は、構築したパイプラインを安定して運用するための鍵となる、モニタリングについて学びます。AWSが提供する監視サービスCloudWatchを使って、Amazon MSKクラスターとEC2インスタンス上のアプリケーションの状態を監視する方法を見ていきましょう。
1. なぜモニタリングが必要なのか?
どんなシステムも完璧ではありません。予期せぬ問題は必ず発生します。
- Kafkaのパフォーマンス低下: トピックへの書き込みが急増し、KafkaブローカーのCPU使用率が上昇する。
- アプリケーションのエラー: EC2インスタンス上で動作しているコンシューマーがクラッシュし、データの処理が停止する。
- リソースの枯渇: EC2インスタンスのメモリやディスク容量が不足する。
このような問題に迅速に対応するためには、システムの健全性を常に監視し、異常をいち早く検知する仕組みが必要です。AWS CloudWatchは、まさにそのために設計されたフルマネージドのサービスです。
2. CloudWatchで監視できること
CloudWatchは、AWSリソースから様々なメトリクス(CPU使用率、ネットワークトラフィックなど)を収集し、ログを蓄積します。これらの情報を可視化したり、特定の閾値を超えた場合にアラームを送信したりすることができます。
(1) Amazon MSKのモニタリング
Amazon MSKは、標準で以下のメトリクスをCloudWatchに送信します。
-
Kafkaブローカーのメトリクス:
-
CpuUtilization: ブローカーのCPU使用率。 -
NetworkTx/Rx: ブローカーの送受信ネットワークトラフィック。 -
HeapMemoryUsage: JVMヒープメモリの使用率。
-
-
トピックのメトリクス:
-
MessagesInPerSec: 1秒あたりの受信メッセージ数。 -
BytesInPerSec: 1秒あたりの受信バイト数。
-
これらのメトリクスを監視することで、Kafkaクラスターの負荷状況やパフォーマンスの変化を把握できます。
(2) EC2インスタンスのモニタリング
EC2インスタンスも同様に、基本的なメトリクスをCloudWatchに自動で送信します。
-
CPUUtilization: EC2インスタンスのCPU使用率。 -
NetworkIn/NetworkOut: EC2インスタンスの送受信ネットワークトラフィック。
さらに、アプリケーションのログをCloudWatch Logsに送信することで、アプリケーション内部のエラーやステータスも監視できます。
3. CloudWatchでアラームを設定する
メトリクスを監視するだけでなく、問題が発生した際に通知を受け取ることが重要です。CloudWatchのアラーム機能を使って、MSKクラスターのCPU使用率が異常なレベルに達した場合に通知を受け取る設定をしてみましょう。
ステップ1: CloudWatchコンソールを開く
AWSマネジメントコンソールで「CloudWatch」と検索し、サービスを開きます。
ステップ2: メトリクスを選択
左側のナビゲーションメニューから「アラーム」→「アラームを作成」をクリックします。
「メトリクスを選択」をクリックし、「Kafka」→「Broker」の順に選択します。
作成したMSKクラスター(例: kafka-challenge-cluster)のIDと一致するメトリクスの中から、「CpuUtilization」を選択し、「メトリクスを選択」をクリックします。
ステップ3: アラーム条件を設定
-
メトリクスと条件:
-
閾値タイプ: 「静的」を選択します。 -
条件:> (より大きい)を選択します。 -
しきい値:80と入力します(CPU使用率が80%を超えた場合)。
-
-
追加設定:
-
データポイント: 1つのデータポイントが閾値を超えた場合にアラームをトリガーするように設定します。
-
-
アクションの設定:
-
状態の変更: 「In alarm」を選択します。 -
通知の送信先: 「新しいトピックの作成」を選び、トピック名(例:msk-alarm-topic)と通知先のEメールアドレスを入力します。「トピックを作成」をクリックすると、指定したメールアドレスに確認メールが届くので、承認しておきましょう。
-
-
アラームの識別:
-
アラーム名:
MSK-High-CPU-Alarmなど、わかりやすい名前を付けます。
-
アラーム名:
ステップ4: アラームの作成
設定を確認し、「アラームを作成」をクリックします。
これで、MSKクラスターのCPU使用率が80%を超えると、指定したメールアドレスに通知が届くようになります。同様の手順で、EC2インスタンスのCPU使用率やディスク容量に関するアラームも設定できます。
まとめと次回予告
今日は、AWS CloudWatchを使って、Amazon MSKとEC2インスタンスのモニタリングとアラーム設定を行う方法を学びました。これにより、構築したデータパイプラインを安定して運用するための重要なスキルが身につきました。
明日からは、このデータパイプラインをさらに高度なものにしていきます。
20日目: Kafka Connectで他サービスとの連携を自動化する
お楽しみに!