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

Container Service for Kubernetes:Kubernetesクラスターイベントのモニタリング

最終更新日:Sep 17, 2026

イベントモニタリングは、リソースモニタリングを補完し、より優れたリアルタイムの応答性、正確性、およびシナリオカバレッジを提供します。たとえば、Pod の退去、イメージプルの失敗、ノードのハードウェア例外の報告などが該当します。Kubernetes は、デフォルトでこれらのイベントを 1 時間しか保持しません。データが期限切れになる前に異常を検出するために、Container Service for Kubernetes (ACK) は、クラスターイベントを収集、保存、アラート、およびアーカイブするエンドツーエンドのイベントモニタリングを提供します。

ACK は、デフォルトでクラスターイベントを Simple Log Service にシンクし、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 などのシンクに転送し、重要度レベルでイベントをフィルタリングし、リアルタイムの収集、アラート、非同期のアーカイブを可能にします。詳細については、「kube-eventer」をご参照ください。

image

Kubernetes は 2 種類のイベントを発行します。

タイプ

生成タイミング

例

正常

ステートマシンが期待される状態に遷移した場合

Pod のスケジューリング、コンテナの起動

警告

ステートマシンが予期しない状態に遷移した場合

Pod の退去、イメージプルの失敗、CrashLoopBackOff

ユースケース

モニタリングのニーズに基づいてシナリオを選択します。

シナリオ

使用する状況

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

迅速に利用を開始できます。すべてのクラスターイベントを Simple Log Service にシンクし、可視化、クエリ、アラートを 1 か所で実行します。

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

ディスクプレッシャー、ネットワークの問題、Docker デーモンの障害などのノードレベルの例外を検出し、クローズドループのアラート管理をトリガーします。

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

警告イベントを DingTalk グループにルーティングし、リアルタイムの ChatOps 通知を受け取ります。

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

Kubernetes イベントを専用の Logstore に永続化し、長期保存、インデックス作成、オフライン分析を行います。

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

イベント駆動型アーキテクチャを構築し、クラスターイベントから自動修復やダウンストリームのワークフローをトリガーします。

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

NPD はサードパーティのプラグインと連携してノードの例外を検出し、クラスターイベントを生成します。Simple Log Service イベントセンターは、これらのイベントを収集、保存、可視化し、組み込みのクエリおよびアラート機能を提供します。

手順1:ack-node-problem-detectorコンポーネントのインストール

クラスターの作成時に [Install node-problem-detector and Create Event Center] を選択した場合は、「手順2:イベントセンターの表示」に進んでください。クラスター作成時にインストールする方法については、「ACK マネージドクラスターの作成」をご参照ください。

それ以外の場合は、コンポーネントを手動でインストールします。

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

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

  3. オブザーバビリティ タブで、[ack-node-problem-detector] を見つけてインストールします。

手順2:イベントセンターの表示

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

  2. [クラスター] ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションペインで、[O&M] > [イベントセンター] を選択します。

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

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

NPD と kube-eventer を組み合わせることで、ノードイベントに対するクローズドループのアラート管理が可能になります。NPD が例外を検出すると、kube-eventer は設定されたシンクにイベントを転送し、アラートを発行します。

前提条件

開始する前に、次のことを確認してください。

DaemonSetが実行中であることの確認

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

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

ノード診断プラグイン

NPD 1.2.29 以降、GPU 異常検出プラグインは ack-accel-health-monitor という名前の別の DaemonSet としてデプロイされます。

プラグイン

チェック内容

デフォルトのしきい値

デフォルトで有効

ntp_check

システムクロックが Network Time Protocol (NTP) を介して同期されているかどうか

—

はい

network_problem_check

コネクショントラッキング (conntrack) テーブルの使用率がしきい値を超えているかどうか

90%

はい

inodes_usage_check

システムディスクの inode 使用率がしきい値 (調整可能) を超えているかどうか

80%

はい

pid_pressure_check

PID プロセス比率がカーネルの最大しきい値を超えているかどうか

85%

はい

docker_offline_check

Docker デーモンが実行されているかどうか

—

はい

fd_check

ファイルディスクリプタの使用率がしきい値 (調整可能) を超えているかどうか。

説明

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

80%

いいえ

ram_role_check

ノードに必要な RAM ロールと AccessKey ID/Secret が設定されているかどうか

—

いいえ

nvidia_gpu_check

Whether NVIDIA GPUs can generate Xid messages

—

No

csi_hang_check

Container Storage Interface (CSI) プラグインが実行されているかどうか

—

いいえ

ps_hang_check

割り込み不可能なスリープ (D) 状態のプロセスが存在するかどうか

—

いいえ

public_network_check

ノードがインターネットにアクセスできるかどうか

—

いいえ

irqbalance_check

irqbalance デーモンが実行されているかどうか

—

いいえ

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

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

前提条件

開始する前に、次のことを確認してください。

手順1:DingTalkチャットボットの追加

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

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

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

    パラメーター

    説明

    プロフィール画像の編集

    チャットボットのアバター (任意)

    チャットボット名

    チャットボットの表示名

    グループに追加

    チャットボットを追加する DingTalk グループ

    セキュリティ設定

    3 つのオプションがあります:[カスタムキーワード]、追加の署名、および IP アドレス (または CIDR ブロック)。クラスターイベントのアラートをフィルタリングできるのは [カスタムキーワード] のみです。[カスタムキーワード] を選択し、Warning と入力します。フィルターを絞り込むために最大 10 個のキーワードを追加できます。

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

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

手順2:kube-eventerがDingTalkにイベントを送信するように設定

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

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

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

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

    • eventer.sinks.dingtalk.enabled を true に設定します。

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

結果

kube-eventer はデプロイ後 30 秒で有効になります。警告レベルのイベントは、DingTalk グループでアラートをトリガーします。

Message notification

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

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

前提条件

開始する前に、次のことを確認してください。

手順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 を作成します。

    [Logstoreの作成] パネルの主要な設定項目は次のとおりです。

    • Logstore タイプ:標準

    • データ保持期間:30 日 (固定日数)

    • シャード数:2

    • 自動シャード分割:有効、最大 64 分割

    • パブリック IP の記録:有効

    • WebTracking:デフォルトで無効

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

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

    データソース設定ページの [ログの説明] エリアでは、Log4j は優先度レベル (ERROR、WARN、INFO、DEBUG)、出力先、出力形式の 3 つのコンポーネントで構成されると説明されています。Alibaba Cloud Log Log4j Appender は、ログを Simple Log Service (SLS) に出力できます (ダウンロードアドレスと使用手順については、GitHub をご参照ください)。[使用上の注意] エリアで、[ヘルプの表示] リンクをクリックして詳細な取り込みガイダンスを取得し、[次へ] をクリックします。

手順2:kube-eventerがSimple Log Serviceにイベントをシンクするように設定

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

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

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

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

    • eventer.sinks.sls.enabled を true に設定します。

手順3:イベント収集の確認とインデックスの設定

  1. Pod の削除やアプリケーションの作成など、クラスターイベントをトリガーします。

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

    [消費プレビュー] ダイアログボックスで、インデックス名 (例:k8s-event) を選択し、[シャード] と時間範囲を設定してから、[プレビュー] をクリックします。ログデータが正常にアップロードされると、テーブルには level、eventId、namespace、reason、message などのフィールドを含む、JSON 形式の Kubernetes イベントのログレコードが表示されます。

  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) アプリケーションを、標準化された一元的な方法で接続するサーバーレスのイベントサービスです。ACK イベントを EventBridge にルーティングすることで、疎結合のイベント駆動型アーキテクチャを構築できます。たとえば、特定のイベントが発生したときに自動修復をトリガーするなどです。詳細については、「EventBridge とは」をご参照ください。

前提条件

開始する前に、次のことを確認してください。

EventBridgeをイベントシンクとして有効にする

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

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

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

    
    eventer:
      accessKeyId: ""
      accessKeySecret: ""
      enabled: true
      env:
      - TZ: Asia/Shanghai
      image:
        pullPolicy: Always
        repository: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/kube-eventer
        tag: v1.2.11-0620284-aliyun
      othersinks: null
      resources:
        limits:
          cpu: "1.0"
          memory: 1024Mi
        requests:
          cpu: 100m
          memory: 200Mi
      sinks:
        dingtalk:
          enabled: false
          label: ""
          level: Warning
          monitorkinds: Node,Pod
          monitornamespaces: ""
          token: ""
        eventbridge:
          enabled: true
    

EventBridgeでKubernetesイベントを表示する

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. オブザーバビリティ タブで、[ack-node-problem-detector] を見つけて再インストールします。