アプリケーションのロギングとモニタリングを有効にする

このページでは、ユーザー アプリケーションのカスタムログと指標が Cloud Logging と Cloud Monitoring へ送信されるように、ベアメタル版 Anthos クラスタのクラスタを構成する方法について説明します。

ユーザー アプリケーションの Logging と Monitoring の有効化

アプリケーションの Logging と Monitoring を有効化するには、クラスタ構成ファイルで spec.clusterOperations.enableApplication フィールドを使用します。

  1. クラスタ構成ファイルを更新して、enableApplicationtrue に設定します。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user-basic
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      clusterOperations:
        projectID: project-fleet
        location: us-central1
        enableApplication: true
        ...
    
  2. bmctl update を使用して変更を適用します。

    bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG
    

    以下を置き換えます。

    • CLUSTER_NAME: アップグレードするクラスタの名前。
    • ADMIN_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。

ワークロードにアノテーションを付加する

アプリケーションからのカスタム指標の収集を有効にするには、アプリケーションの Service マニフェストまたは Pod マニフェストに prometheus.io/scrape: "true" アノテーションを追加するか、Pod に渡されるようにするために Deployment または DaemonSet マニフェストの spec.template セクションに同じアノテーションを追加します。

サンプル アプリケーションを実行する

このセクションでは、カスタムログを書き込み、カスタム指標を公開するアプリケーションを作成します。

  1. 次の Service マニフェストと Deployment マニフェストを my-app.yaml という名前のファイルに保存します。Service に prometheus.io/scrape: "true" というアノテーションが付いていることに注意してください。

    kind: Service
    apiVersion: v1
    metadata:
      name: "monitoring-example"
      namespace: "default"
      annotations:
        prometheus.io/scrape: "true"
    spec:
      selector:
        app: "monitoring-example"
      ports:
        - name: http
          port: 9090
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: "monitoring-example"
      namespace: "default"
      labels:
        app: "monitoring-example"
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: "monitoring-example"
      template:
        metadata:
          labels:
            app: "monitoring-example"
        spec:
          containers:
          - image: gcr.io/google-samples/prometheus-dummy-exporter:latest
            name: prometheus-example-exporter
            imagePullPolicy: Always
            command:
            - /bin/sh
            - -c
            - ./prometheus-dummy-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090
            resources:
              requests:
                cpu: 100m
    
  2. Deployment と Service を作成します。

    kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-app.yaml

アプリケーション ログを表示

Console

  1. Google Cloud コンソールの [ログ エクスプローラ] に移動します。

    ログ エクスプローラに移動

  2. [リソース] をクリックします。[すべてのリソースタイプ] で [Kubernetes Container] を選択します。

  3. [CLUSTER_NAME] で、ユーザー クラスタの名前を選択します。

  4. [NAMESPACE_NAME] で [default] を選択します。

  5. [追加] をクリックしてから、[クエリを実行] をクリックします。

  6. [クエリ結果] で、monitoring-example Deployment からのログエントリを確認できます。例:

    {
      "textPayload": "2020/11/14 01:24:24 Starting to listen on :9090\n",
      "insertId": "1oa4vhg3qfxidt",
      "resource": {
        "type": "k8s_container",
        "labels": {
          "pod_name": "monitoring-example-7685d96496-xqfsf",
          "cluster_name": ...,
          "namespace_name": "default",
          "project_id": ...,
          "location": "us-west1",
          "container_name": "prometheus-example-exporter"
        }
      },
      "timestamp": "2020-11-14T01:24:24.358600252Z",
      "labels": {
        "k8s-pod/pod-template-hash": "7685d96496",
        "k8s-pod/app": "monitoring-example"
      },
      "logName": "projects/.../logs/stdout",
      "receiveTimestamp": "2020-11-14T01:24:39.562864735Z"
    }
    

gcloud

  1. 次のコマンドを実行します。

    gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \
        resource.type="k8s_container" AND resource.labels.namespace_name="default"'

    PROJECT_ID は、プロジェクトの ID に置き換えます。

  2. 出力で、monitoring-example Deployment からのログエントリを確認できます。例:

    insertId: 1oa4vhg3qfxidt
    labels:
      k8s-pod/app: monitoring-example
      k8s- pod/pod-template-hash: 7685d96496
    logName: projects/.../logs/stdout
    receiveTimestamp: '2020-11-14T01:24:39.562864735Z'
    resource:
      labels:
        cluster_name: ...
        container_name: prometheus-example-exporter
        location: us-west1
        namespace_name: default
        pod_name: monitoring-example-7685d96496-xqfsf
        project_id: ...
      type: k8s_container
    textPayload: |
      2020/11/14 01:24:24 Starting to listen on :9090
    timestamp: '2020-11-14T01:24:24.358600252Z'
    

Google Cloud コンソールでアプリケーションの指標を確認する

サンプル アプリケーションでは、example_monitoring_up という名前のカスタム指標が公開されています。Google Cloud コンソールで、その指標の値を確認できます。

  1. Google Cloud コンソールの Metrics Explorer に移動します。

    Metrics Explorer に移動

  2. [リソースタイプ] で、Kubernetes Pod または Kubernetes Container を選択します。

  3. [指標] で [external.googleapis.com/prometheus/example_monitoring_up] を選択します。

  4. このチャートでは、example_monitoring_up の繰り返し値が 1 であることがわかります。