すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:イベントモニタリング

最終更新日:Mar 27, 2026

Kubernetes は、Pod の強制排除、イメージのプル失敗、ノードのハードウェア例外の報告など、クラスターの状態が変化したときにイベントを生成します。デフォルトでは、Kubernetes はこれらのイベントを 1 時間しか保持しません。異常をタイムリーに検出し、イベントデータの損失を防ぐために、Container Service for Kubernetes (ACK) は、クラスターイベントを収集、保存、アラート、アーカイブするためのエンドツーエンドのイベントモニタリングソリューションを提供します。

ACK は、デフォルトでクラスターイベントを Simple Log Service に sink し、90 日間無料で保存します。詳細については、「イベントセンターの作成と使用」をご参照ください。

仕組み

ACK は、イベントモニタリングのために 2 つのオープンソースツールを使用します:

  • node-problem-detector (NPD):Kubernetes ノードを診断します。NPD は、ノードの異常 (Docker エンジンのハング、Linux カーネルのハング、アウトバウンドトラフィックの異常、ファイルディスクリプタの異常) を検出し、ノードイベントを生成し、kube-eventer と連携してアラート管理のクローズドループを実現します。詳細については、「NPD」をご参照ください。

  • kube-eventer:ACK がメンテナンスするオープンソースのイベントエミッターです。kube-eventer は、Kubernetes イベントを DingTalk、Simple Log Service、EventBridge などの sink に転送します。重大度レベルでイベントをフィルターし、リアルタイム収集、特定イベントのアラート、非同期アーカイブを可能にします。詳細については、「kube-eventer」をご参照ください。

image

Kubernetes は 2 種類のイベントを生成します:

タイプ生成タイミング
Normalステートマシンが期待される状態に遷移した場合Pod のスケジュール、コンテナの開始
Warningステートマシンが予期しない状態に遷移した場合Pod の強制排除、イメージのプル失敗、CrashLoopBackOff

シナリオの選択

モニタリング要件に合ったシナリオを選択してください:

シナリオ使用タイミング
シナリオ 1:NPD と Simple Log Service イベントセンターの使用迅速に開始できます。すべてのクラスターイベントを Simple Log Service に sink し、一元的に可視化、クエリ、アラートを行います。
シナリオ 2:NPD ノード診断の実行ノードレベルの異常 (ディスクプレッシャー、ネットワーク問題、Docker デーモンの障害) を検出し、クローズドループのアラート管理をトリガーします。
シナリオ 3:DingTalk へのアラート送信`Warning` イベントを DingTalk グループにルーティングし、リアルタイムの ChatOps 通知を実現します。
シナリオ 4:Simple Log Service へのイベントのアーカイブKubernetes イベントを専用の Logstore に永続化し、長期保存、インデックス作成、オフライン分析を行います。
シナリオ 5:EventBridge へのイベントのルーティングイベント駆動型アーキテクチャを構築し、クラスターイベントから自動修復やダウンストリームのワークフローをトリガーします。

シナリオ 1:NPD と Simple Log Service イベントセンターの使用

NPD はサードパーティのプラグインと連携してノードの異常を検出し、クラスターイベントを生成します。また、Kubernetes は Pod の強制排除やイメージのプル失敗など、クラスターの状態が変化したときにもイベントを生成します。Simple Log Service の Kubernetes イベントセンターは、これらのイベントを収集、保存、可視化し、組み込みのクエリおよびアラート機能を提供します。

ステップ 1:ack-node-problem-detector コンポーネントのインストール

クラスター作成時に [node-problem-detector をインストールしてイベントセンターを作成] を選択した場合は、「ステップ 2:イベントセンターの表示」に進んでください。クラスター作成時のインストールに関する詳細については、「ACK マネージドクラスターの作成」をご参照ください。

このオプションを選択しなかった場合は、手動でコンポーネントをインストールしてください:

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

  3. [ログとモニタリング] タブで、ack-node-problem-detector を見つけてインストールします。

ステップ 2:イベントセンターの表示

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター]ページで、目的のクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[操作]>[イベントセンター]を選択します。

  3. [イベントセンター] ページで、[イベント概要 (イベントセンター)] タブをクリックします。このタブには、すべての Kubernetes イベント、その詳細情報、および Pod のライフサイクルが表示されます。詳細については、「Kubernetes イベントの収集」をご参照ください。

シナリオ 2:NPD ノード診断の実行

kube-eventer と統合された NPD は、ノードイベントに対するクローズドループのアラート管理を提供します。NPD が異常を検出すると、kube-eventer はイベントを設定済みの sink に転送し、アラートを発行します。

前提条件

開始する前に、以下を確認してください:

DaemonSet の実行状態の確認

  1. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] > [DaemonSet] を選択します。

  2. [DaemonSet] タブで、kube-system 名前空間を選択し、ack-node-problem-detector-daemonset が実行中であることを確認します。NPD と kube-eventer の両方が実行されている場合、システムは kube-eventer の設定に基づいてイベントを sink し、アラートを発行します。

ノード診断プラグイン

NPD は、以下のノード診断プラグインをサポートしています:

プラグインチェック内容デフォルトのしきい値デフォルトで有効
ntp_checkシステムクロックが Network Time Protocol (NTP) を介して同期されているかどうかはい
network_problem_checkコネクショントラッキング (conntrack) テーブルの使用量がしきい値を超えているかどうか90%はい
inodes_usage_checkシステムディスクの inode 使用量がしきい値 (調整可能) を超えているかどうか80%はい
pid_pressure_checkpid プロセス比率がカーネルの最大値のしきい値を超えているかどうか85%はい
docker_offline_checkDocker デーモンが実行中であるかどうかはい
fd_checkファイルディスクリプタの使用量がしきい値 (調整可能) を超えているかどうか。
説明

このプラグインは大量のリソースを消費します。必要な場合にのみ有効にしてください。

80%いいえ
ram_role_checkノードに必要な RAM ロールと AccessKey ID/シークレットが設定されているかどうかいいえ
nvidia_gpu_checkNVIDIA GPU が Xid メッセージを生成できるかどうかいいえ
csi_hang_checkContainer Storage Interface (CSI) プラグインが実行中であるかどうかいいえ
ps_hang_check割り込み不可能なスリープ (D) 状態のプロセスが存在するかどうかいいえ
public_network_checkノードがインターネットにアクセスできるかどうかいいえ
irqbalance_checkirqbalance デーモンが実行中であるかどうかいいえ

シナリオ 3:DingTalk へのアラート送信

DingTalk チャットボットを使用して Kubernetes イベントアラートを受信するのは、典型的な ChatOps の実装です。`Warning` レベルのイベントが発生すると、kube-eventer は Webhook を介して DingTalk グループにメッセージをプッシュします。

前提条件

開始する前に、以下を確認してください:

ステップ 1:DingTalk チャットボットの追加

  1. チャットボックスの右上隅にある 群设置 をクリックして [グループ設定] を開きます。

  2. [Bot] をクリックし、次に [ロボットを追加] をクリックします。チャットボットの種類として [カスタム] を選択します。

    自定义机器人

  3. [ロボットの詳細] ページで、[追加] をクリックして [ロボットを追加] ページを開きます。以下のパラメーターを設定し、DingTalk カスタムロボットサービス利用規約に同意して、[完了] をクリックします:

    パラメーター説明
    プロフィール画像の編集チャットボットのアバターです。任意です。
    チャットボット名チャットボットの表示名です。
    グループに追加チャットボットを追加する DingTalk グループです。
    セキュリティ設定3 つのオプションがサポートされています:[カスタムキーワード]、追加の署名、IP アドレス (または CIDR ブロック)。クラスターイベントアラートのフィルタリングには [カスタムキーワード] のみがサポートされています。[カスタムキーワード] を選択し、Warning と入力します。フィルターを絞り込むために、最大 10 個のキーワードを追加できます。

    添加机器人

  4. [コピー] をクリックして Webhook URL をコピーします。

    [ChatBot] ページで、チャットボットの横にある 设置按钮 をクリックすると、アバターと名前の変更、メッセージプッシュの有効化/無効化、Webhook URL のリセット、またはチャットボットの削除ができます。

    复制webhook

ステップ 2:kube-eventer の設定 (DingTalk へのイベント送信)

  1. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  2. [Helm] ページで ack-node-problem-detector を見つけ、[操作] 列の [更新] をクリックします。

  3. 以下のパラメーターを設定し、[OK] をクリックします:

    • npd セクションで、enabledfalse に設定します。

    • eventer.sinks.dingtalk.enabledtrue に設定します。

    • コピーした Webhook URL からトークンを入力します。

結果

kube-eventer はデプロイ後 30 秒で有効になります。`Warning` レベルのイベントが発生すると、アラートが DingTalk グループに送信されます。

消息提醒

シナリオ 4:Simple Log Service へのイベントのアーカイブ

Kubernetes イベントを Simple Log Service に sink して、永続的な保存、インデックス作成、および監査を行います。長期保存やオフラインでのアーカイブのためには、Logstore の設定と、オプションで MaxCompute または Object Storage Service (OSS) へのデータ転送を設定します。詳細については、「イベントセンターの作成と使用」をご参照ください。

前提条件

開始する前に、以下を確認してください:

  • ack-node-problem-detector コンポーネントがインストールされていること。インストール時にプロジェクトと Logstore を指定します。すでにインストールされている場合は、まず再インストールしてください。詳細については、「ack-node-problem-detector コンポーネントの再インストール」をご参照ください。

ステップ 1:Simple Log Service プロジェクトと Logstore の作成

  1. Simple Log Service コンソールにログインします。

  2. [プロジェクト] セクションで、[プロジェクトの作成] をクリックします。[プロジェクトの作成] パネルで、パラメーターを設定し、[作成] をクリックします。

    Simple Log Service プロジェクトは、ご利用のクラスターと同じリージョンに作成してください。同一リージョン内の転送は内部ネットワークを使用するため、レイテンシーが短縮され、リージョン間の帯域幅コストが不要になります。この例では、中国 (杭州) リージョンに k8s-log4j という名前のプロジェクトを作成します。
  3. [プロジェクト] セクションで、k8s-log4j をクリックしてプロジェクトの詳細ページを開きます。

  4. [Logstore] ペインで、[+] をクリックして [Logstore の作成] パネルを開きます。

  5. パラメーターを設定し、[OK] をクリックします。この例では、k8s-logstore という名前の Logstore を作成します。

    image

  6. Logstore が作成されたら、[データインポートウィザード] をクリックします。[データのインポート] ダイアログボックスが表示されます。

  7. [Log4j 1/2] を選択し、設定手順を完了します。この例では、デフォルト設定を使用します。

    自定义数据

ステップ 2:kube-eventer の設定 (Simple Log Service へのイベント sink)

  1. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  2. [Helm] ページで ack-node-problem-detector を見つけ、[操作] 列の [更新] をクリックします。

  3. 以下のパラメーターを設定し、[OK] をクリックします:

    • npd セクションで、enabledfalse に設定します。

    • eventer.sinks.sls.enabledtrue に設定します。

ステップ 3:イベント収集の確認とインデックス作成の設定

  1. クラスターイベントをトリガーします。たとえば、Pod を削除したり、アプリケーションを作成したりします。

  2. Simple Log Service コンソールにログインして、収集されたイベントを表示します。詳細については、「Simple Log Service SDK を使用したログデータの消費」をご参照ください。

    查看采集数据

  3. クエリと分析のためにインデックス作成を設定します。詳細については、「インデックスの作成」をご参照ください。

    1. [プロジェクト] セクションで、プロジェクト名をクリックします。

    2. Logstore 名の横にある Logstore management icon をクリックし、[検索と分析] を選択します。

    3. 右上隅で、[インデックスを有効化] をクリックします。

    4. [検索と分析] パネルで、パラメーターを設定し、[OK] をクリックします。ログのクエリと分析ページが表示されます。日志分析页面 > 注:インデックス設定は 1 分以内に有効になり、インデックスが有効化または変更された後に取り込まれたデータにのみ適用されます。

    5. (オプション) オフライン分析のためにイベントをアーカイブするには、Logstore から MaxCompute または Object Storage Service (OSS) にデータを転送します。詳細については、「MaxCompute にデータを転送するための新しいバージョンのデータ転送ジョブの作成」および「OSS データ転送ジョブの作成 (新バージョン)」をご参照ください。

シナリオ 5:EventBridge へのイベントのルーティング

EventBridge は、Alibaba Cloud サービス、カスタムアプリケーション、および SaaS (Software as a Service) アプリケーションが標準化された集中管理方式で接続できるサーバーレスイベントサービスです。ACK イベントを EventBridge にルーティングすることで、疎結合のイベント駆動型アーキテクチャを構築できます。たとえば、特定のイベントが発生したときに自動修復ワークフローをトリガーするなどです。詳細については、「EventBridge とは」をご参照ください。

前提条件

開始する前に、以下を確認してください:

イベント sink としての EventBridge の有効化

  1. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  2. [Helm] ページで ack-node-problem-detector を見つけ、[操作] 列の [更新] をクリックします。

  3. eventer.sinks.eventbridge.enabletrue に設定し、[OK] をクリックします。

    image

EventBridge での Kubernetes イベントの表示

  1. EventBridge コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。

  3. [イベントバス] ページで、対象のイベントバスをクリックします。

  4. 左側のナビゲーションウィンドウで、[イベント追跡] をクリックします。

  5. クエリメソッドを選択し、クエリ条件を設定して、[クエリ] をクリックします。

  6. イベントを見つけ、[操作] 列の [詳細] をクリックします。詳細については、「イベント ID によるイベントのクエリ」をご参照ください。

ack-node-problem-detector コンポーネントの再インストール

sink ターゲットを変更する場合 (例:Simple Log Service から DingTalk への切り替え) や、コンポーネントの設定を更新する場合には、コンポーネントを再インストールします。

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、目的のクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] > [ジョブ] を選択します。

  3. [ジョブ] ページで、kube-eventer-init-v1.7-xxxx の横にある [その他] をクリックし、[削除] をクリックします。

  4. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  5. [Helm] ページで、ack-node-problem-detector コンポーネントを削除します。

  6. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[運用管理] > [アドオン] を選択します。

  7. [ログとモニタリング] タブで、ack-node-problem-detector を見つけて再インストールします。