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

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

最終更新日:Aug 29, 2026

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

背景情報

Kubernetes アーキテクチャはステートマシンに基づいています。システムが状態間を遷移すると、イベントが生成されます。通常の状態間の遷移では Normal イベントが生成され、通常状態と異常状態の間の遷移では Warning イベントが生成されます。

Container Service for Kubernetes (ACK) は、コンテナ化された環境向けのすぐに使えるイベント監視ソリューションを提供します。ACK が保守する node-problem-detector (NPD) とその内蔵コンポーネントである kube-eventer を使用して、イベント監視を提供します。

  • node-problem-detector (NPD) は、Kubernetes ノードを診断するためのツールです。Docker Engine のハング、Linux カーネルのハング、パブリックネットワークアクセスの例外、ファイル記述子の問題など、ノードの異常をノードイベントに変換します。kube-eventer と組み合わせることで、ノードイベントのクローズドループアラートシステムを実現します。

  • kube-eventer は、Kubernetes イベントをアーカイブするために ACK が保守するオープンソースツールです。DingTalk、Simple Log Service (SLS)、EventBridge などの外部システムにクラスターイベントをプッシュできます。また、イベントレベルに基づくフィルタリング機能も提供します。これにより、イベントのリアルタイム収集、ターゲットを絞ったアラート、および非同期アーカイブが可能になります。

前提条件

Alibaba Cloud ACK クラスターやACK Serverless クラスターなどの Kubernetes クラスターが作成されています。

課金

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

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

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

例:

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

  • データ保持期間を 105 日に設定し、Kubernetes クラスターが 1 日あたり 1,000 イベントを生成する場合、90 日後から Logstore ストレージに対して課金されます。課金項目は「ログストレージ」。「ログストレージ」課金項目の詳細については、「従量課金モードの課金項目」をご参照ください。

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

ACK

ACK クラスタを使用する場合、ack-node-problem-detector コンポーネントはkube-eventernode-problem-detector の両方の機能を統合しているため、このコンポーネントをデプロイするだけで済みます。ACK Serverless クラスタを使用する場合、kube-eventer コンポーネントをデプロイする必要があります。

NPD は、設定とサードパーティプラグインを使用してノードの問題を検出し、対応するクラスターイベントを生成します。Kubernetes クラスターは、Pod の退去やイメージプル失敗などの状態遷移中に独自のイベントも生成します。Simple Log Service (SLS) の K8s イベントセンターは、すべての Kubernetes イベントをリアルタイムで一元化し、ストレージ、クエリ、分析、可視化、およびアラート機能を提供します。クラスターイベントを K8s イベントセンターと統合するには、次の手順を実行します。

  • クラスターの作成時に [node-problem-detector のインストールとイベントセンターの作成] を選択した場合は、 ステップ 2 に進み、Kubernetes イベントセンターを表示できます。 クラスター作成時に 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が設定されている場合、その値をタイムゾーンとして設定します
                  - 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

      string

      はい

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

      project

      string

      はい

      Simple Log Service プロジェクト。

      logStore

      string

      はい

      Simple Log Service の Logstore。

      internal

      string

      セルフマネージド Kubernetes クラスターでは必須。

      セルフマネージド Kubernetes クラスターの場合、このパラメータを false に設定する必要があります。

      regionId

      string

      セルフマネージド Kubernetes クラスターでは必須。

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

      accessKeyId

      string

      セルフマネージド Kubernetes クラスターでは必須。

      アクセスキー ID。Resource Access Management (RAM) ユーザーのアクセスキーペアを使用することを推奨します。詳細については、「アクセスキーペア」をご参照ください。

      accessKeySecret

      string

      セルフマネージド Kubernetes クラスターでは必須。

      アクセスキーシークレット。Resource Access Management (RAM) ユーザーのアクセスキーペアを使用することを推奨します。詳細については、「アクセスキーペア」をご参照ください。

    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 をデプロイします。

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

説明

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

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

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

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

  4. イベントセンターの追加 パネルで、パラメーターを設定し、次へ をクリックします。

    • 既存のプロジェクト を選択した場合は、[プロジェクト] ドロップダウンリストから既存のプロジェクトを選択し、Logstore やダッシュボードなどの K8s イベントセンターインスタンスのリソースを管理します。

    • Kubernetes クラスター を選択した場合は、K8s Cluster ドロップダウンリストから既存の K8s クラスターを選択します。 この方法を使用すると、Simple Log Service は、Logstore やダッシュボードなどの K8s イベントセンターインスタンスのリソースを管理するために、k8s-log-{cluster-id} という名前のプロジェクトを自動的に作成します。

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

K8s イベントセンターインスタンスを作成し、kube-eventernode-problem-detector をデプロイすると、イベントセンターの使用を開始できます。イベント概要の表示、イベント詳細のクエリ、Pod のライフサイクルの表示、ノードイベントの表示、コアコンポーネントイベントの表示、アラートの設定、カスタムクエリの実行、およびバージョンの更新を行うことができます。

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

操作

説明

イベント概要の表示

イベント概要 ページには、コアイベントの概要統計が表示されます。 統計には、イベントの総数、今日と昨日のエラーイベントの比較、アラート統計、エラーイベントの傾向、および Pod OOM の詳細が含まれます。

説明

Pod OOM 情報は特定の Pod を識別しません。イベントが発生したノード、プロセス名、およびプロセス ID のみを特定できます。カスタムクエリを実行して、Pod OOM の発生時刻付近で発生する 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/ の後のフィールドがプロジェクト名です。たとえば、k8s-log-xxxx です。

  • イベントセンター管理 タブで、インスタンス一覧から目的の K8s イベントセンターインスタンスを見つけ、対応するプロジェクト名を確認します。

バージョンの更新

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

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

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

サンプルログ

次のコードは、サンプルログを示しています。

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

string

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

level

string

ログレベル。有効な値:Normal および Warning。

pod_id

string

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

pod_name

string

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

event_id

json

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

よくある質問

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

K8s イベントセンターインスタンスをデプロイすると、新しいイベントが自動的に収集されます。 収集されたイベントはカスタムクエリ ページで検索できます。 右上の時間範囲を 1 Day に設定することをお勧めします。 データが見つからない場合、通常、原因は 2 つあります。

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

    kubectl get events --all-namespaces コマンドを実行して、クラスターで新しいイベントが生成されているかどうかを確認できます。

  • kube-eventernode-problem-detector のデプロイでパラメータが正しく設定されていない。

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

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

      2. クラスターリスト ページで、目的のクラスターの名前をクリックします。

      3. 左側のナビゲーションペインで、適用 > Helmを選択します。

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

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

    • セルフマネージド Kubernetes クラスターを使用する場合は、パラメータ設定について「Kubernetes イベントの収集」をご参照ください。

イベントのコンテナログを表示する方法

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

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

    2. クラスターリスト ページで、目的のクラスターの名前をクリックします。

    3. 左側のナビゲーションペインで、ワークロード > ポッドを選択します。

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

    5. ポッド リストで、目的のポッドの Log をクリックします。

  • 自己管理型 Kubernetes クラスターを使用している場合、[kube-system] 名前空間内の、ファイル名のプレフィックスが eventer-sls の Pod のログを確認してください。