このページでは、ユーザー アプリケーションのカスタムログと指標が Cloud Logging と Cloud Monitoring へ送信されるように、ベアメタル版 Anthos クラスタのクラスタを構成する方法について説明します。
ユーザー アプリケーションの Logging と Monitoring の有効化
アプリケーションの Logging と Monitoring を有効化するには、クラスタ構成ファイルで spec.clusterOperations.enableApplication
フィールドを使用します。
クラスタ構成ファイルを更新して、
enableApplication
をtrue
に設定します。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 ...
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
セクションに同じアノテーションを追加します。
サンプル アプリケーションを実行する
このセクションでは、カスタムログを書き込み、カスタム指標を公開するアプリケーションを作成します。
次の 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
Deployment と Service を作成します。
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f my-app.yaml
アプリケーション ログを表示
Console
Google Cloud コンソールの [ログ エクスプローラ] に移動します。
[リソース] をクリックします。[すべてのリソースタイプ] で [
Kubernetes Container
] を選択します。[CLUSTER_NAME] で、ユーザー クラスタの名前を選択します。
[NAMESPACE_NAME] で [
default
] を選択します。[追加] をクリックしてから、[クエリを実行] をクリックします。
[クエリ結果] で、
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
次のコマンドを実行します。
gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'
PROJECT_ID
は、プロジェクトの ID に置き換えます。出力で、
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 コンソールで、その指標の値を確認できます。
Google Cloud コンソールの Metrics Explorer に移動します。
[リソースタイプ] で、
Kubernetes Pod
またはKubernetes Container
を選択します。[指標] で [
external.googleapis.com/prometheus/example_monitoring_up
] を選択します。このチャートでは、
example_monitoring_up
の繰り返し値が 1 であることがわかります。