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

Simple Log Service:K8s イベントセンターの作成と使用

最終更新日:Mar 26, 2026

Kubernetes (K8s) イベントは、Pod の作成、実行、削除、コンポーネントの例外など、クラスターの状態変化を記録します。K8s イベントセンターは、ご利用の Kubernetes クラスターからすべてのイベントをリアルタイムで収集し、ストレージ、クエリ、分析、可視化、およびアラート機能を提供します。このトピックでは、K8s イベントセンターの作成方法と使用方法について説明します。

背景情報

Kubernetes のアーキテクチャは状態機械に基づいています。状態間の遷移は、対応するイベントを生成します。正常な状態間の遷移は Normal レベルのイベントを生成し、正常な状態と異常な状態の間の遷移は Warning レベルのイベントを生成します。

Container Service for Kubernetes (ACK) は、コンテナシナリオ向けにすぐに使えるイベントモニタリングソリューションを提供します。ACK がメンテナンスする NPD とそれに含まれる kube-eventer を使用して、コンテナイベントのモニタリングを提供します。

image
  • Node Problem Detector (NPD) は、Kubernetes ノードの診断ツールです。Docker Engine のハング、Linux カーネルのハング、ネットワーク出力の問題、ファイルディスクリプタの異常など、ノードの異常をノードイベントに変換します。kube-eventer と組み合わせることで、NPD はノードイベントアラートのクローズドループシステムを実現します。詳細については、「NPD」をご参照ください。

  • kube-eventer は、Kubernetes イベントのオフライン処理のために ACK がメンテナンスするオープンソースツールです。クラスターイベントを DingTalk、SLS、EventBridge などの外部システムにプッシュします。また、さまざまなイベントレベルのフィルター条件を提供し、リアルタイム収集、ターゲットを絞ったアラート、非同期アーカイブを可能にします。詳細については、「kube-eventer」をご参照ください。

前提条件

ACK クラスターや ACK Serverless クラスターなどの Kubernetes クラスターが作成されていること。

課金

以下の条件を満たす場合、K8s イベントセンターは無料です。

  • K8s イベントセンターに関連付けられた Logstore のデータ保持期間が 90 日 (デフォルト値) であること。

  • K8s イベントセンターに書き込まれるデータ量が 1 日あたり 256 MB 未満 (約 250,000 イベント) であること。

例:

  • デフォルトの 90 日間の保持期間を使用し、K8s クラスターが 1 日に 1,000 イベントを生成する場合、K8s イベントセンターの使用は無料です。

  • 保持期間を 105 日に変更し、K8s クラスターが 1 日に 1,000 イベントを生成する場合、最初の 90 日間を過ぎると Logstore のストレージ料金が発生します。課金項目はストレージスペース - ログストレージです。この課金項目の詳細については、「機能別課金モデルの課金項目」をご参照ください。

ステップ 1: kube-eventer と node-problem-detector のデプロイ

Alibaba Cloud Kubernetes

ACK クラスターの場合、ack-node-problem-detector コンポーネントには既に eventer と node-problem-detector の機能が統合されています。このコンポーネントをデプロイするだけで済みます。詳細については、「イベントモニタリング」をご参照ください。ACK Serverless クラスターの場合、kube-eventer コンポーネントをデプロイする必要があります。

NPD は、設定とサードパーティのプラグインに基づいてノードの問題や障害を検出し、対応するクラスターイベントを生成します。Kubernetes クラスターは、Pod のエビクションやイメージのプル失敗など、状態遷移によってさまざまなイベントも生成します。Simple Log Service (SLS) の Kubernetes イベントセンターは、すべての Kubernetes イベントをリアルタイムで集約し、ストレージ、クエリ、分析、可視化、およびアラート機能を提供します。以下の手順では、クラスターイベントを SLS の Kubernetes イベントセンターに送信する方法について説明します。

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

  • クラスターの作成時に [node-problem-detector のインストールとイベントセンターの作成] を選択しなかった場合は、手動でインストールできます。

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

    2. クラスター」ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、運用管理 > コンポーネント を選択します。

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

その他の Kubernetes

  1. kube-eventer をデプロイします。

    1. kubectl ツールをインストールします。詳細については、「kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。

    2. 以下の内容で `eventer.yaml` という名前のファイルを作成します。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          name: kube-eventer
        name: kube-eventer
        namespace: kube-system
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: kube-eventer
        template:
          metadata:
            labels:
              app: kube-eventer
            annotations:
              scheduler.alpha.kubernetes.io/critical-pod: ''
          spec:
            dnsPolicy: ClusterFirstWithHostNet
            serviceAccount: kube-eventer
            containers:
              - image: registry.cn-hangzhou.aliyuncs.com/acs/kube-eventer:v1.2.5-cc7ec54-aliyun
                name: kube-eventer
                command:
                  - "/kube-eventer"
                  - "--source=kubernetes:https://kubernetes.default"
                  ## .sls に送信
                  ## --sink=sls:https://{endpoint}?project={project}&logStore=k8s-event&regionId={region-id}&internal=false&accessKeyId={accessKeyId}&accessKeySecret={accessKeySecret}
                  - --sink=sls:https://cn-beijing.log.aliyuncs.com?project=k8s-xxxx&logStore=k8s-event&regionId=cn-beijing&internal=false&accessKeyId=xxx&accessKeySecret=xxx
                env:
                  # TZ が割り当てられている場合、TZ の値をタイムゾーンとして設定します
                  - name: TZ
                    value: "Asia/Shanghai"
                volumeMounts:
                  - name: localtime
                    mountPath: /etc/localtime
                    readOnly: true
                  - name: zoneinfo
                    mountPath: /usr/share/zoneinfo
                    readOnly: true
                resources:
                  requests:
                    cpu: 10m
                    memory: 50Mi
                  limits:
                    cpu: 500m
                    memory: 250Mi
            volumes:
              - name: localtime
                hostPath:
                  path: /etc/localtime
              - name: zoneinfo
                hostPath:
                  path: /usr/share/zoneinfo
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: kube-eventer
      rules:
        - apiGroups:
            - ""
          resources:
            - events
          verbs:
            - get
            - list
            - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: kube-eventer
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: kube-eventer
      subjects:
        - kind: ServiceAccount
          name: kube-eventer
          namespace: kube-system
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: kube-eventer
        namespace: kube-system

      パラメーター

      タイプ

      必須

      説明

      endpoint

      文字列

      はい

      Simple Log Service のエンドポイント。詳細については、「エンドポイント」をご参照ください。

      project

      文字列

      はい

      Simple Log Service のプロジェクト。

      logStore

      文字列

      はい

      Simple Log Service の Logstore。YAML ファイルではパラメーター名が logStore であることに注意してください。

      internal

      文字列

      自己管理型 Kubernetes の場合は必須。

      内部エンドポイントを使用するかどうかを指定します。自己管理型 Kubernetes クラスターの場合は、このパラメーターを false に設定します。

      regionId

      文字列

      自己管理型 Kubernetes の場合は必須。

      Simple Log Service プロジェクトが存在するリージョンの ID。詳細については、「エンドポイント」をご参照ください。

      accessKeyId

      文字列

      自己管理型 Kubernetes の場合は必須。

      AccessKey ID。RAM ユーザーの AccessKey ペアを使用することを推奨します。詳細については、「AccessKey ペア」をご参照ください。

      accessKeySecret

      文字列

      自己管理型 Kubernetes の場合は必須。

      AccessKey Secret。RAM ユーザーの AccessKey ペアを使用することを推奨します。詳細については、「AccessKey ペア」をご参照ください。

    3. 次のコマンドを実行して、eventer.yaml の設定をクラスターに適用します。

      kubectl apply -f eventer.yaml

      期待される出力:

      deployment.apps/kube-eventer created
      clusterrole.rbac.authorization.k8s.io/kube-eventer created
      clusterrolebinding.rbac.authorization.k8s.io/kube-eventer created
      serviceaccount/kube-eventer created
  2. node-problem-detector をデプロイします。

    詳細については、「GitHub の node-problem-detector」をご参照ください。

ステップ 2: K8s イベントセンターインスタンスの作成

説明

K8s イベントセンターを作成すると、Simple Log Service は対象プロジェクトに k8s-event という名前の Logstore と関連するダッシュボードを自動的に作成します。

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

  2. [ログアプリケーション] セクションの [インテリジェント O&M] タブで、[K8s イベントセンター] をクリックします。

  3. [イベントセンター管理] ページで、右上隅の [追加] をクリックします。

  4. [イベントセンターの作成] パネルで、パラメーターを設定してから、[次へ] をクリックします。

    • 既存のプロジェクトを選択」を選択した場合、K8s イベントセンターのリソース(例:Logstore およびダッシュボード)を管理するために、[プロジェクト] ドロップダウンリストから既存のプロジェクトを選択します。

    • Container Service For Kubernetes から Kubernetes クラスターを選択」を選択した場合、[K8s クラスター] ドロップダウンリストから既存の K8s クラスターを選択します。この方法では、Simple Log Service がデフォルトで k8s-log-{cluster-id} という名前のプロジェクトを作成し、K8s イベントセンターのリソースを管理します。

ステップ 3: K8s イベントセンターインスタンスの使用

K8s イベントセンターを作成し、eventer と NPD コンポーネントをデプロイした後、K8s イベントセンターでイベント統計の表示、イベント詳細のクエリ、Pod ライフサイクルの表示、ノードイベントの表示、コアコンポーネントイベントの表示、アラートの設定、カスタムクエリの実行、バージョンの更新ができます。

[K8s イベントセンター] ページで、目的の K8s イベントセンターインスタンスを探し、k8s事件中心-002 アイコンをクリックして以下の操作を実行します。

image

操作

説明

イベント概要の表示

[イベントの概要]」ページには、イベント総数、本日のエラーイベントと昨日のエラーイベントの比較、アラート統計、エラーイベントの傾向、Pod OOM の詳細など、コアイベントのサマリ統計が表示されます。

説明

現在、Pod OOM 情報は特定の Pod を特定できません。イベントが発生したノード、プロセス名、プロセス ID のみを識別できます。カスタムクエリを使用して、OOM イベント発生前後の Pod 再起動イベントを検索し、特定の Pod を特定できます。

イベント詳細のクエリ

[イベントの詳細] ページでは、イベントタイプ、イベントオブジェクト、ホスト、ネームスペース、および名前などのさまざまなディメンションでフィルター処理されたイベントの詳細情報を表示します。

Pod ライフサイクルの表示

[Pod ライフサイクル]」ページでは、Pod の全体のライフサイクルにわたるイベント情報をグラフィカルに表示します。また、イベントレベル別に重要度の高い Pod イベントをフィルター処理できます。

ノードイベントの表示

[ノードイベント] ページには、ノードのライフサイクルやイベントリストなど、ノードイベントの詳細が表示されます。

コアコンポーネントイベントの表示

[コアコンポーネントイベント]」ページでは、ECS の再起動失敗や URL モードが実装されていないなどのコアコンポーネントイベントの詳細を表示します。

アラートの設定

[アラート設定] ページでは、K8s イベントセンターのアラートを設定できます。詳細については、「アラートを設定する」をご参照ください。

カスタムクエリ

[カスタムクエリ]」ページでは、独自のクエリと分析文を作成および実行できます。

K8s イベントセンターのすべてのイベントは Logstore に保存されます。カスタムクエリ、イベント消費、カスタムレポート、カスタムアラートなど、Logstore のすべての機能を使用できます。詳細については、「検索と分析のクイックスタート」をご参照ください。

K8s イベントセンターを含むプロジェクトにアクセスするには、次のいずれかの方法でプロジェクト名を見つけることができます。

  • プロジェクトは、[カスタムクエリ] ページの URL で確認できます。URL の形式は、https://sls.console.alibabacloud.com/lognext/app/k8s-event/project/k8s-log-xxxx/logsearch/k8s-event です。「project」 フィールドの後に続く値が Simple Log Service プロジェクトの名前になります(例:k8s-log-xxxx)。

  • [イベントセンター管理] タブで、リスト内の対象の K8s イベントセンター インスタンスを見つけ、対応するプロジェクト名を確認できます。

バージョン更新

[バージョンアップデート] ページでは、K8s イベントセンターのバージョンをアップグレードできます。

K8s イベントセンターインスタンスの削除

[K8s イベントセンター] > [イベントセンター管理] ページで、削除するインスタンスを見つけ、[アクション] 列の K8s イベントセンター アイコンをクリックします。

ログサンプル

以下は収集されたログのサンプルです。

hostname:  cn-hangzhou.i-***********"
level:  Normal
pod_id:  2a360760-****
pod_name:  logtail-ds-blkkr
event_id:  {  
   "metadata":{  
      "name":"logtail-ds-blkkr.157b7cc90de7e192",
      "namespace":"kube-system",
      "selfLink":"/api/v1/namespaces/kube-system/events/logtail-ds-blkkr.157b7cc90de7e192",
      "uid":"2aaf75ab-****",
      "resourceVersion":"6129169",
      "creationTimestamp":"2019-01-20T07:08:19Z"
   },
   "involvedObject":{  
      "kind":"Pod",
      "namespace":"kube-system",
      "name":"logtail-ds-blkkr",
      "uid":"2a360760-****",
      "apiVersion":"v1",
      "resourceVersion":"6129161",
      "fieldPath":"spec.containers{logtail}"
   },
   "reason":"Started",
   "message":"Started container",
   "source":{  
      "component":"kubelet",
      "host":"cn-hangzhou.i-***********"
   },
   "firstTimestamp":"2019-01-20T07:08:19Z",
   "lastTimestamp":"2019-01-20T07:08:19Z",
   "count":1,
   "type":"Normal",
   "eventTime":null,
   "reportingComponent":"",
   "reportingInstance":""
}

フィールド

タイプ

説明

hostname

文字列

イベントが発生したホスト名。

level

文字列

イベントレベル。有効な値: Normal と Warning。

pod_id

文字列

Pod の一意の ID。このフィールドは、イベントが Pod に関連する場合にのみ存在します。

pod_name

文字列

Pod の名前。このフィールドは、イベントが Pod に関連する場合にのみ存在します。

event_id

json

イベントの詳細な内容。このフィールドの値は JSON 文字列です。

よくある質問

K8s イベントセンターにデータがない場合

K8s イベントセンターをデプロイすると、新しく生成されたイベントは自動的に収集されます。[カスタムクエリ] ページで検索できます。右上隅の時間範囲を 1 日に設定することをお勧めします。データが表示されない場合は、以下の考えられる原因を確認してください。

  • K8s イベントセンターをデプロイしてから、K8s クラスターで新しいイベントが生成されていない。

    kubectl get events --all-namespaces コマンドを実行して、クラスター内の新しいイベントを確認できます。

  • eventer および node-problem-detector コンポーネントをデプロイする際に、パラメーターが正しく設定されていなかった。

    • ACK クラスターを使用している場合は、次の手順に従ってください。

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

      2. [クラスター]」ページで、対象のクラスターをクリックします。

      3. 左側のナビゲーションウィンドウで、[O&M] > [コンポーネント管理] を選択します。

      4. Helm」ページで、「ack-node-problem-detector」を探し、「更新」をクリックします。

      5. パラメーター設定を確認し、変更します。詳細については、「ステップ 1: kube-eventer と node-problem-detector のデプロイ」をご参照ください。

    • 自己管理型 Kubernetes クラスターを使用している場合は、パラメーター設定について「Kubernetes イベントの収集」をご参照ください。

イベントコンテナログの表示

  • ACK クラスターを使用している場合は、次の手順に従ってください。

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

    2. [クラスター] ページで、対象のクラスターをクリックします。

    3. 左側のナビゲーションウィンドウで、[ワークロード] > [Pod] を選択します。

    4. [名前空間][kube-system] に設定します。

    5. [Pods] リストで、対象の Pod を見つけ、[ログ] をクリックします。

  • 自己管理型 Kubernetes クラスターを使用している場合、[kube-system] Namespace の eventer-sls で始まるプレフィックスを持つ Pod のログを表示します。