Halaman ini menjelaskan cara Google Distributed Cloud terhubung mencatat berbagai jenis informasi operasinya ke dalam log dan cara melihat informasi tersebut. Pengumpulan beberapa jenis log dan metrik dikenakan biaya tambahan. Untuk mengetahui informasi selengkapnya, lihat Penagihan untuk log dan metrik.
Mengonfigurasi logging dan pemantauan
Sebelum dapat mulai mengumpulkan log dan metrik, Anda harus melakukan hal berikut:
Aktifkan Logging API menggunakan perintah berikut:
gcloud services enable opsconfigmonitoring.googleapis.com --project PROJECT_ID gcloud services enable logging.googleapis.com --project PROJECT_ID gcloud services enable monitoring.googleapis.com --project PROJECT_ID
Ganti
PROJECT_IDdengan ID target Google Cloud project.Berikan peran yang diperlukan untuk menulis log dan metrik:
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/opsconfigmonitoring.resourceMetadata.writer \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/metadata-agent]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/logging.logWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver-log-forwarder]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/monitoring.metricWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/gke-metrics-agent]"Ganti
PROJECT_IDdengan ID target Google Cloud project.
Log
Bagian ini mencantumkan jenis resource Cloud Logging yang didukung oleh Distributed Cloud. Untuk melihat log Distributed Cloud, gunakan Logs Explorer di Google Cloud konsol. Logging Distributed Cloud selalu diaktifkan.
Jenis resource yang dicatat lognya oleh Distributed Cloud terhubung adalah resource Kubernetes standar berikut:
k8s_containerk8s_node
Anda juga dapat mengambil dan mengambil log Distributed Cloud terhubung menggunakan Cloud Logging API. Untuk mengetahui informasi tentang cara mengonfigurasi mekanisme logging ini, lihat dokumentasi untuk library klien Cloud Logging.
Metrik
Bagian ini mencantumkan metrik Cloud Monitoring yang didukung oleh Distributed Cloud. Untuk melihat metrik Distributed Cloud, gunakan Metrics Explorer di Google Cloud konsol.
Metrik cluster Distributed Cloud terhubung
Untuk cluster Distributed Cloud terhubung, Distributed Cloud terhubung menyediakan jenis metrik berikut yang dihasilkan oleh node Distributed Cloud terhubung:
- Metrik resource memberikan informasi tentang performa node dan Pod Distributed Cloud terhubung, seperti beban CPU dan penggunaan memori.
- Metrik aplikasi sistem memberikan informasi tentang workload sistem Distributed Cloud terhubung, seperti
coredns.
Untuk mengetahui daftar metrik ini, lihat Metrik Google Distributed Cloud dan Google Distributed Cloud.
Distributed Cloud terhubung tidak menyediakan metrik yang dihasilkan oleh bidang kontrol Kubernetes yang terkait dengan cluster Distributed Cloud terhubung.
Metrik hardware Distributed Cloud terhubung
Distributed Cloud terhubung menyediakan metrik untuk hardware Distributed Cloud terhubung menggunakan jenis resource berikut:
edgecontainer.googleapis.com/Machineedgecontainer.googleapis.com/Rack
Metrik resource Machine
Distributed Cloud terhubung menulis metrik Cloud Monitoring API berikut untuk resource edgecontainer.googleapis.com/Machine:
| Metrik | Deskripsi |
|---|---|
/machine/cpu/total_cores
|
Jumlah total core prosesor fisik yang ada di mesin. |
/machine/cpu/usage_time
|
Waktu penggunaan CPU kumulatif untuk semua core di mesin. Jenisnya dapat berupa
workload (workload pelanggan)
atau system (semua hal lainnya). |
/machine/cpu/utilization
|
Persentase penggunaan CPU di mesin. Rentangnya adalah 0 hingga 1. Jenisnya dapat berupa
workload (workload pelanggan)
atau system (semua hal lainnya). |
/machine/memory/total_bytes
|
Jumlah byte total memori di mesin. |
/machine/memory/used_bytes
|
Jumlah byte memori yang digunakan di mesin. memory_type adalah
baik evictable (dapat diklaim oleh kernel) atau
non-evictable (tidak dapat diklaim). |
/machine/memory/utilization
|
Persentase penggunaan memori di mesin. Rentangnya adalah 0 hingga 1.
memory_type dapat berupa evictable (dapat diklaim
oleh kernel) atau non-evictable (tidak dapat diklaim). |
/machine/network/up
|
Menunjukkan apakah antarmuka jaringan aktif dan berjalan. Mencakup kartu utama, kartu sekunder, dan port. |
/machine/network/link_speed
|
Kecepatan link kartu antarmuka jaringan utama. |
/machine/network/received_bytes_count
|
Jumlah byte yang diterima untuk kartu antarmuka jaringan utama. |
/machine/network/sent_bytes_count
|
Jumlah byte yang dikirim untuk kartu antarmuka jaringan utama. |
/machine/network/connectivity
|
Menunjukkan apakah kartu antarmuka jaringan utama memiliki konektivitas internet konektivitas. |
/machine/disk/total_bytes
|
Jumlah byte total kapasitas disk di mesin. |
/machine/disk/used_bytes
|
Jumlah byte kapasitas disk yang digunakan di mesin. |
/machine/disk/utilization
|
Persentase penggunaan kapasitas disk di mesin. Rentangnya adalah 0 hingga 1. |
/machine/restart_count
|
Jumlah restart yang telah dilakukan mesin. |
/machine/uptime
|
Waktu aktif mesin sejak restart terakhir. |
/machine/connected
|
Menunjukkan apakah mesin terhubung ke Google Cloud. |
Metrik resource Rack
Distributed Cloud terhubung menulis metrik Cloud Monitoring API berikut untuk resource edgecontainer.googleapis.com/Rack:
| Metrik | Deskripsi |
|---|---|
/router/bgp_up
|
Menunjukkan apakah sesi peering BGP di router aktif dan
sehat.
router_id mengidentifikasi router tertentu (maksimal 2 per rack). |
/router/connected
|
Menunjukkan apakah router BGP terhubung ke Google Cloud.
router_id mengidentifikasi router tertentu (maksimal 2 per rack). |
Mengekspor log dan metrik aplikasi kustom
Distributed Cloud terhubung otomatis mengekspor log untuk aplikasi yang berjalan di workload Distributed Cloud terhubung. Untuk mengekspor metrik aplikasi yang berjalan di workload Distributed Cloud terhubung, Anda harus menganotasinya seperti yang dijelaskan di bagian berikutnya.
Anotasi workload untuk mengaktifkan ekspor metrik
Untuk mengaktifkan pengumpulan metrik kustom dari aplikasi, tambahkan anotasi berikut ke manifes Layanan atau Deployment aplikasi:
prometheus.io/scrape: "true"prometheus.io/path: "ENDPOINT_PATH". GantiENDPOINT_PATHdengan jalur lengkap ke endpoint metrik aplikasi target.prometheus.io/port: "PORT_NUMBER": port tempat endpoint metrik aplikasi memproses koneksi.
Menjalankan aplikasi contoh
Di bagian ini, Anda akan membuat aplikasi yang menulis log kustom dan mengekspos endpoint metrik kustom.
Simpan manifes Layanan dan Deployment berikut ke file bernama
my-app.yaml. Perhatikan bahwa Layanan memiliki anotasiprometheus.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: 100mBuat Deployment dan Layanan:
kubectl --kubeconfig apply -f my-app.yaml
Melihat log aplikasi
Konsol
Di konsol Google Cloud , buka halaman Logs Explorer.
Klik Resource.
Di daftar All resource types, pilih
Kubernetes Container.Untuk Cluster name, pilih nama cluster pengguna Anda.
Untuk Namespace name, pilih
default.Klik Add, lalu klik Run query.
Di bagian Query results, Anda dapat melihat entri log dari Deployment
monitoring-example. Contoh:{ "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
Gunakan perintah
gcloud logging read:gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'Ganti
PROJECT_IDdengan ID project Anda.Di output, Anda dapat melihat entri log dari Deployment
monitoring-example. Contoh: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'
Melihat metrik aplikasi
Aplikasi contoh Anda mengekspos metrik kustom bernama example_monitoring_up.
Anda dapat melihat nilai metrik tersebut di Google Cloud konsol.
Di Google Cloud konsol, buka halaman Metrics Explorer.
Untuk Resource type, pilih
Kubernetes Pod.Untuk Metric, pilih
external/prometheus/example_monitoring_up.Di diagram, Anda dapat melihat bahwa
example_monitoring_upmemiliki nilai 1 yang berulang.
Mengumpulkan metrik dengan Prometheus
Distributed Cloud terhubung mendukung solusi metrik Prometheus untuk mengumpulkan metrik pada workload Distributed Cloud terhubung Anda.
Untuk tujuan ini, Distributed Cloud terhubung membuat namespace yang tidak dikelola dengan nama prom-monitoring saat Anda membuat cluster Distributed Cloud terhubung.
Sebaiknya gunakan namespace ini untuk men-deploy Prometheus. Anda juga dapat menyalin resource yang diperlukan dari namespace prom-monitoring ke namespace pilihan Anda dan men-deploy Prometheus di sana.
Mengonfigurasi scraping metrik Prometheus
Untuk mengumpulkan metrik Distributed Cloud terhubung dengan Prometheus, Anda harus mengonfigurasi scraping metrik Prometheus. Untuk melakukannya, pasang ConfigMap prometheus-scrape-config di Pod Prometheus Anda dan tambahkan konfigurasi scraping dari ConfigMap ke konfigurasi Prometheus Anda. Contoh:
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-deployment
namespace: prom-monitoring
labels:
app: prom-monitoring
spec:
replicas: 1
selector:
matchLabels:
app: prom-monitoring
template:
metadata:
labels:
app: prom-monitoring
spec:
containers:
- name: prometheus
image: prom/prometheus:main
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus/"
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/
- name: prometheus-scrape-config-volume
mountPath: /etc/prometheus/scrape/
- name: prometheus-storage-volume
mountPath: /prometheus/
- name: prometheus-scrape-token
mountPath: /var/run/secrets/kubernetes.io/stackdriver-prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
mountPath: /certs/stackdriver-prometheus-scrape
- name: metrics-providers-ca
mountPath: /certs/metrics-providers
- name: stackdriver-prometheus-etcd-scrape
mountPath: /stackdriver-prometheus-etcd-scrape
volumes:
- name: prometheus-storage-volume
emptyDir: {}
- name: prometheus-config-volume
configMap:
defaultMode: 420
name: prometheus-config
- name: prometheus-scrape-config-volume
configMap:
defaultMode: 420
name: prometheus-scrape-config
- name: prometheus-scrape-token
secret:
defaultMode: 420
secretName: prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
secret:
defaultMode: 420
secretName: stackdriver-prometheus-scrape-cert
- name: metrics-providers-ca
secret:
defaultMode: 420
items:
- key: ca.crt
path: ca.crt
secretName: metrics-providers-ca
- name: stackdriver-prometheus-etcd-scrape
secret:
defaultMode: 420
optional: true
secretName: stackdriver-prometheus-etcd-scrape
Untuk mengumpulkan metrik workload dengan Prometheus, Anda harus menambahkan anotasi ke Layanan dan Pod yang menjalankan workload target sebagai berikut:
Untuk mengirim metrik ke Cloud Monitoring dan Prometheus, gunakan anotasi yang dijelaskan di Mengekspor log dan metrik kustom.
Untuk mengirim metrik hanya ke Prometheus, gunakan anotasi berikut:
prometheus.io/unmanaged_scrape: "true"
prometheus.io/unmanaged_path: "ENDPOINT_PATH"
prometheus.io/unmanaged_port: "PORT_NUMBER"
Mengumpulkan log dengan Kafka
Distributed Cloud terhubung mendukung solusi Apache Kafka untuk mengumpulkan log pada workload yang berjalan di deployment Distributed Cloud terhubung Anda.
Anda harus memiliki deployment Kafka yang berfungsi sebelum menyelesaikan langkah-langkah di bagian ini. Broker Kafka Anda harus mengiklankan pemrosesnya dalam mode PLAINTEXT. Variabel terkait SSL/SASL tidak didukung.
Untuk mengonfigurasi cluster untuk logging Kafka, Anda harus membuat file JSON yang mengonfigurasi add-on yang ingin Anda jalankan di cluster. Tentukan file ini saat membuat cluster menggunakan flag --system-addons-config. Jika perlu mengubah konfigurasi Kafka, Anda harus menghapus dan membuat ulang cluster dengan setelan Kafka baru.
Tambahkan bagian berikut ke file konfigurasi add-on sistem:
{
"systemAddonsConfig": {
"unmanagedKafkaConfig": {
"brokers": "BROKERS",
"topics": "TOPICS"
"topic_key": "TOPIC_KEY,
}
}
}
Ganti kode berikut:
BROKERS: daftar alamat IP broker dan pasangan port yang dipisahkan koma dalam formatip_address:port.TOPICS: daftar topik Kafka yang dipisahkan koma.TOPIC_KEY: kunci topik Kafka; hal ini memungkinkan Kafka memilih topik jika ada beberapa topik.
Jika Kafka tidak mengumpulkan log setelah Anda membuat cluster Distributed Cloud terhubung, periksa hal berikut:
- Sisi server: Periksa log error pada deployment Kafka Anda untuk mengetahui indikasi masalah.
- Sisi klien: Hubungi Dukungan Google untuk mengambil dan memeriksa log Pod sistem.