このトピックでは、eventerコンポーネントを使用してKubernetesからイベントを収集し、イベントをLog Serviceに送信する方法について説明します。

Log Serviceでは、kube-eventerまたはK8s Event Centerアプリケーションを使用して、Kubernetesからイベントを収集できます。

  • Kube-eventer

    Kubernetesイベントコレクションのソースコードの詳細については、『GitHub』をご参照ください。

  • K8sイベントセンター (推奨)

    Kubernetesイベントデータを収集し、視覚化されたグラフとアラートを設定するには、Log ServiceコンソールにあるK8s event Centerアプリケーションを使用します。 詳しくは、「t1857672.html#task_2389213」をご参照ください。

イベントコレクションの設定

説明
  • Container Service for Kubernetes (ACK) を使用する場合は、「t1857672.html#task_2389213」をご参照ください。
  • セルフマネージドKubernetesを使用する場合、endpointprojectlogStoreregionIdinternalaccessKeyId、およびaccessKeySecretパラメーターを設定する必要があります。
イベント収集の設定例を次に示します。
apiVersion: apps/v1
kind: 配置
メタデータ:
  ラベル:
    名前: kube-eventer
  名前: kube-eventer
  名前空間: kube-system
spec:
  replicas: 1
  セレクタ:
    matchLabels:
      アプリ: kube-eventer
  template:
    metadata:
      labels:
        アプリ: kube-eventer
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    仕様:
      dnsPolicy: ClusterFirstWithHostNet
      serviceAccount: kube-eventer
      コンテナ:
        -画像: registry.cn-hangzhou.aliyuncs.com/acs/kube-eventer:v1.2.5-cc7ec54-aliyun
          名前: kube-eventer
          command:
            -"/kube-eventer"
            -"-ソース=kubernetes:https://kubernetes.de障害"
            ## 。slsに送信
            ## -- sink=sls:https://{endpoint}?project={project}&logStore=k8s-event&regionId={region-id}&internal=false&accessKeyId={accessKeyId}&accessKeySecret={accessKeySecret}
            --シンク=sls:https://cn-beijing.log.aliyuncs.com? プロジェクト=k8s-xxxx&logStore=k8s-event&regionId=cn-北京&内部=偽&accessKeyId=xxx&accessKeySecret=xxx
          env:
          # TZが割り当てられている場合は、TZ値をタイムゾーンとして設定します。
          -名前: TZ
            値: 「アジア /上海」 
          volumeMounts:
            - name: localtime
              mountPath: /etc/localtime
              readOnly: true
            -name: zoneinfo
              mountPath: /usr/share/zoneinfo
              readOnly: true
          resources:
            requests:
              cpu: 10m
              メモリ: 50Mi
            limits:
              cpu: 500m
              メモリ: 250Mi
      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        -name: zoneinfo
          hostPath:
            パス: /usr/share/zoneinfo
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
メタデータ:
  名前: kube-eventer
ルール:
  - apiGroups:
      - ""
    resources:
      -イベント
    verbs:
      - get
      - list
      腕時計
---
apiVersion: rbac。承認。k8s.io/v1
種類: ClusterRoleBinding
メタデータ:
  名前: kube-eventer
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  名前: kube-eventer
主題:
  - kind: ServiceAccount
    名前: kube-eventer
    名前空間: kube-system
---
apiVersion: v1
種類: ServiceAccount
メタデータ:
  名前: kube-eventer
  namespace: kube-system
パラメーターデータ型必須/任意説明
endpointString必須Log Service のエンドポイント。 詳細については、「エンドポイント」をご参照ください。
projectString必須Log Service のプロジェクト。
logStoreString必須Log Service の Logstore。
internalString自己管理型Kubernetesに必要自己管理型Kubernetesを使用する場合は、値をfalseに設定します。
regionIdString自己管理型Kubernetesに必要Log Service のリージョン ID。 詳細については、「エンドポイント」をご参照ください。
accessKeyIdStringRequired自己管理KubernetesAccessKey ID。 RAM ユーザーの AccessKey ID の使用を推奨します。
accessKeySecretString自己管理型Kubernetesに必要AccessKeyシークレット。 RAMユーザーのAccessKeyシークレットを使用することを推奨します。

サンプルログエントリ

収集されたサンプルログエントリの例を次に示します。
ホスト名: cn-hangzhou.i-***********"
レベル: 正常
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":"
}
ログフィールド種類説明
hostnameStringイベントが発生するサーバーのホスト名。
levelStringログエントリのレベル。 有効な値: Normal および Warning。
pod_idStringポッドの一意の識別子。 このフィールドは、イベントタイプがポッドに関連している場合にのみ使用できます。
pod_nameStringポッドの名前。 このフィールドは、イベントタイプがポッドに関連している場合にのみ使用できます。
event_idJSONイベントの詳細。 このフィールドの値はJSON文字列です。