本页面介绍如何为 Anthos clusters on Bare Metal 配置集群,以便将用户应用中的自定义日志和指标发送到 Cloud Logging 和 Cloud Monitoring。
为用户应用启用 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 文件的路径。
为工作负载添加注解
如需从应用收集自定义指标,请将 prometheus.io/scrape: "true"
注解添加到应用的 Service 或 Pod 清单中,或将相同的注解添加到 Deployment 或 DaemonSet 清单中的 spec.template
部分,以便传递给其 Pod。
运行一个示例应用
在本部分中,您将创建一个应用,用于编写自定义日志并公开自定义指标。
将以下 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
查看应用日志
控制台
前往 Google Cloud 控制台中的日志浏览器。
点击资源。在 ALL_RESOURCE_TYPES 下,选择
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 Console 中查看应用指标
您的示例应用将公开一个名为 example_monitoring_up
的自定义指标。您可以在 Google Cloud 控制台中查看该指标的值。
前往 Google Cloud 控制台中的 Metrics Explorer。
对于资源类型,请选择
Kubernetes Pod
或Kubernetes Container
。对于指标,请选择
external.googleapis.com/prometheus/example_monitoring_up
。在图表中,您可以看到
example_monitoring_up
的重复值为 1。