Log dan metrik

Halaman ini menjelaskan cara Google Distributed Cloud terhubung mencatat berbagai jenis informasi tentang operasinya dan cara melihat informasi tersebut. Pengumpulan beberapa jenis log dan metrik dikenai 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:

  1. Aktifkan API logging 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_ID dengan ID project Google Cloud target.

  2. 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_ID dengan ID project Google Cloud target.

Log

Bagian ini mencantumkan jenis resource Cloud Logging yang didukung oleh Distributed Cloud. Untuk melihat log Distributed Cloud, gunakan Logs Explorer di konsol Google Cloud . Logging Distributed Cloud selalu diaktifkan.

Jenis resource yang dicatat dan terhubung ke Distributed Cloud adalah resource Kubernetes standar berikut:

  • k8s_container
  • k8s_node

Anda juga dapat merekam dan mengambil log yang terhubung ke Distributed Cloud dengan 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 konsolGoogle Cloud .

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 Pod dan node yang terhubung ke Distributed Cloud, 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 connected tidak menyediakan metrik yang dihasilkan oleh bidang kontrol Kubernetes yang terkait dengan cluster Distributed Cloud connected.

Metrik hardware Distributed Cloud terhubung

Distributed Cloud terhubung menyediakan metrik untuk hardware Distributed Cloud terhubung menggunakan jenis resource berikut:

  • edgecontainer.googleapis.com/Machine

Metrik resource Machine

Distributed Cloud connected menulis metrik Cloud Monitoring API berikut untuk resource edgecontainer.googleapis.com/Machine:

Metrik Deskripsi
/machine/cpu/total_cores
  • Jenis: GAUGE
  • Jenis: INT
Jumlah total core prosesor fisik yang ada di mesin.
/machine/cpu/usage_time
  • Jenis: CUMULATIVE
  • Jenis: DOUBLE
  • Unit: Seconds
Waktu penggunaan CPU kumulatif untuk semua core di mesin. Jenis dapat berupa workload (beban kerja pelanggan) atau system (semua yang lain).
/machine/cpu/utilization
  • Jenis: GAUGE
  • Jenis: DOUBLE
Persentase pemakaian CPU di mesin. Rentangnya adalah 0 hingga 1. Jenis dapat berupa workload (beban kerja pelanggan) atau system (semua yang lain).
/machine/memory/total_bytes
  • Jenis: GAUGE
  • Jenis: INT64
Jumlah byte total memori di komputer.
/machine/memory/used_bytes
  • Jenis: GAUGE
  • Jenis: INT64
Jumlah byte memori yang digunakan di komputer. memory_type adalah evictable (dapat diklaim kembali oleh kernel) atau non-evictable (tidak dapat diklaim kembali).
/machine/memory/utilization
  • Jenis: GAUGE
  • Jenis: DOUBLE
Persentase penggunaan memori di komputer. Rentangnya adalah 0 hingga 1. memory_type adalah evictable (dapat diambil kembali oleh kernel) atau non-evictable (tidak dapat diambil kembali).
/machine/network/up
  • Jenis: GAUGE
  • Jenis: BOOL
Menunjukkan apakah antarmuka jaringan sudah aktif dan berjalan. Mencakup kartu utama, kartu sekunder, dan port.
/machine/network/link_speed
  • Jenis: GAUGE
  • Jenis: DOUBLE
  • Unit: Byte per detik
Kecepatan link kartu antarmuka jaringan utama.
/machine/network/received_bytes_count
  • Jenis: CUMULATIVE
  • Jenis: DOUBLE
Jumlah byte yang diterima untuk kartu antarmuka jaringan utama.
/machine/network/sent_bytes_count
  • Jenis: CUMULATIVE
  • Jenis: DOUBLE
Jumlah byte yang dikirim untuk kartu antarmuka jaringan utama.
/machine/network/connectivity
  • Jenis: GAUGE
  • Jenis: BOOL
Menunjukkan apakah kartu antarmuka jaringan utama memiliki konektivitas internet.
/machine/disk/total_bytes
  • Jenis: GAUGE
  • Jenis: INT64
Jumlah byte total ruang disk di komputer.
/machine/disk/used_bytes
  • Jenis: GAUGE
  • Jenis: INT64
Jumlah byte ruang disk yang digunakan di komputer.
/machine/disk/utilization
  • Jenis: GAUGE
  • Jenis: DOUBLE
Persentase penggunaan ruang penyimpanan disk di komputer. Rentangnya adalah 0 hingga 1.
/machine/restart_count
  • Jenis: CUMULATIVE
  • Jenis: INT
Jumlah mulai ulang yang telah dilakukan komputer.
/machine/uptime
  • Jenis: GAUGE
  • Jenis: INT
  • Unit: Seconds
Waktu aktif mesin sejak dimulai ulang terakhir kali.
/machine/connected
  • Jenis: GAUGE
  • Jenis: INT64
Menunjukkan apakah komputer terhubung ke Google Cloud.

Metrik operasi pencadangan virtual machine

Distributed Cloud terhubung mengumpulkan dan mengekspor metrik berikut yang terkait dengan agen pencadangan mesin virtual:

Metrik Deskripsi
gdc_backup_backups_completed
  • Jenis: COUNTER
Jumlah pencadangan virtual machine yang berhasil diselesaikan.
gdc_backup_backups_latency
  • Jenis: HISTOGRAM
Latensi pencadangan mesin virtual, dalam menit.
gdc_backup_volume_backups_created
  • Jenis: COUNTER
Jumlah cadangan volume yang dibuat hingga saat ini.
gdc_backup_volume_backups_completed
  • Jenis: COUNTER
Jumlah cadangan volume yang telah diselesaikan hingga saat ini.
gdc_backup_restores_completed
  • Jenis: COUNTER
Jumlah pemulihan mesin virtual yang telah diselesaikan hingga saat ini.
gdc_backup_restores_latency
  • Jenis: HISTOGRAM
Latensi pemulihan mesin virtual, dalam menit.
gdc_backup_volume_restores_created
  • Jenis: COUNTER
Jumlah pemulihan volume yang dibuat hingga saat ini.
gdc_backup_volume_restores_completed
  • Jenis: COUNTER
Jumlah pemulihan volume yang telah diselesaikan hingga saat ini.

Distributed Cloud terhubung mengumpulkan dan mengekspor metrik berikut yang terkait dengan bidang kontrol pencadangan mesin virtual:

Metrik Deskripsi
gdc_backup_controlplane_live
  • Jenis: GAUGE
Menunjukkan apakah bidang kontrol cadangan beroperasi.
gdc_backup_backup_repositories_attached
  • Jenis: GAUGE
Jumlah repositori cadangan terlampir.
gdc_backup_backups_created
  • Jenis: COUNTER
Jumlah cadangan virtual machine yang dibuat hingga saat ini.
gdc_backup_backups_deleted
  • Jenis: COUNTER
Jumlah cadangan virtual machine yang dihapus hingga saat ini.
gdc_backup_restores_created
  • Jenis: COUNTER
Jumlah pemulihan virtual machine yang dibuat hingga saat ini.
gdc_gdc_backup_backups_pile_up
  • Jenis: GAUGE
Menunjukkan apakah rencana cadangan telah mencapai batas jumlah pencadangan yang sedang berlangsung.

Distributed Cloud terhubung mengumpulkan dan mengekspor metrik berikut yang terkait dengan penagihan untuk fungsi pencadangan virtual machine:

Metrik Deskripsi
metering_protected_resources_total
  • Sumber: Agen pencadangan VM
  • Jenis: COUNTER
Jumlah total virtual machine yang dicadangkan hingga saat ini.
metering_deleted_resources_total
  • Sumber: Bidang kontrol pencadangan VM
  • Jenis: COUNTER
Jumlah total cadangan mesin virtual yang dihapus hingga saat ini.

Mengekspor log dan metrik aplikasi kustom

Distributed Cloud connected otomatis mengekspor log untuk aplikasi yang berjalan di workload Distributed Cloud connected. Untuk mengekspor metrik untuk aplikasi yang berjalan di beban kerja yang terhubung ke Distributed Cloud, Anda harus memberikan anotasi seperti yang dijelaskan di bagian berikutnya.

Anotasikan 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". Ganti ENDPOINT_PATH dengan 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.

  1. Simpan manifes Service dan Deployment berikut ke file bernama my-app.yaml. Perhatikan bahwa Service memiliki anotasi 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. Buat Deployment dan Layanan:

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

Lihat log aplikasi

Konsol

  1. Di konsol Google Cloud , buka halaman Logs Explorer.

    Buka Logs Explorer

  2. Klik Resource.

  3. Di daftar Semua jenis resource, pilih Kubernetes Container.

  4. Untuk Cluster name, pilih nama cluster pengguna Anda.

  5. Untuk Nama namespace, pilih default.

  6. Klik Tambahkan, lalu klik Jalankan kueri.

  7. 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

  1. 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_ID dengan ID project Anda.

  2. Dalam 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 konsol Google Cloud .

  1. Di konsol Google Cloud , buka halaman Metrics explorer.

    Buka Metrics Explorer

  2. Untuk Resource type, pilih Kubernetes Pod.

  3. Untuk Metrik, pilih external/prometheus/example_monitoring_up.

  4. Dalam diagram, Anda dapat melihat bahwa example_monitoring_up memiliki 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 connected membuat namespace yang tidak dikelola dengan nama prom-monitoring saat Anda membuat cluster Distributed Cloud connected. 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 yang terhubung ke Distributed Cloud 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: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-local-rolebinding
  namespace: prom-monitoring
subjects:
- kind: ServiceAccount
  name: prometheus-scrape
  namespace: prom-monitoring
roleRef:
  kind: ClusterRole
  name: gke-metrics-agent
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: prom-monitoring
data:
  prometheus.yml: |
    global:
      scrape_interval: 5s
      evaluation_interval: 5s
    rule_files:
    scrape_config_files:
    - /etc/prometheus/scrape/*.yml
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
  namespace: prom-monitoring
spec:
  selector:
    app: prom-monitoring
  ports:
  - port: 9090
    targetPort: 9090
  type: LoadBalancer
---
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:
      serviceAccountName: prometheus-scrape
      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: 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
            optional: true
            secretName: stackdriver-prometheus-scrape-cert
        - 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 dalam 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 connected mendukung solusi Apache Kafka untuk mengumpulkan log pada workload yang berjalan di deployment Distributed Cloud connected 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 pasangan alamat IP dan port broker yang dipisahkan koma dalam format ip_address:port.
  • TOPICS: daftar topik Kafka yang dipisahkan koma.
  • TOPIC_KEY: kunci topik Kafka; ini memungkinkan Kafka memilih topik jika ada beberapa topik.

Jika Kafka tidak mengumpulkan log setelah Anda membuat cluster yang terhubung ke Distributed Cloud, 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.

Mengumpulkan log workload mentah untuk pemrosesan eksternal

Anda dapat mengonfigurasi Distributed Cloud yang terhubung untuk mengekspor log Pod workload mentah (tidak diproses dan tidak diberi tag) ke /var/logs/export, yang memungkinkan Anda menggunakan pengumpul log sendiri untuk pemrosesan log.

Untuk mengonfigurasi ekspor log workload mentah, buat resource kustom LogExport dengan konten berikut, lalu terapkan ke cluster Anda:

apiVersion: gdc.addons.gke.io/v1
kind: LogExport
metadata:
  name: my-log-export
spec:
  namespaces:
  - namespace1
  - namespace2
  - namespace3

Di kolom namespaces, cantumkan namespace beban kerja yang log Pod mentahnya ingin Anda ekspor. Kolom ini tidak menerima namespace sistem, seperti yang tercantum dalam Pembatasan namespace pengelolaan.

Langkah berikutnya