Memantau perubahan status respons VM


Dokumen ini menjelaskan cara melihat dan membaca entri log perubahan status respons VM dalam grup instance terkelola (MIG), dan memberikan kasus penggunaan khusus untuk membantu Anda memantau VM di grup.

Jika Anda telah mengonfigurasi health check berbasis aplikasi untuk MIG, Compute Engine akan menulis entri log setiap kali status respons instance terkelola berubah. Misalnya, saat status instance berubah dari HEALTHY menjadi UNHEALTHY. Entri log ini membantu Anda memantau dan men-debug status respons setiap instance terkelola serta keseluruhan kondisi MIG.

Sebelum memulai

  • Tinjau Menyiapkan health check dan autohealing.
  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Harga

Compute Engine menggunakan Cloud Logging guna menghasilkan entri log untuk perubahan status respons instance terkelola. Cloud Logging memberi Anda alokasi gratis per bulan. Setelah jumlahnya terlampaui, entri log akan ditagih berdasarkan volume data. Untuk mengetahui informasi lebih lanjut, lihat ringkasan harga Cloud Logging.

Untuk menghindari biaya logging, Anda dapat menonaktifkan log perubahan status respons.

Melihat log perubahan status respons

Asalkan log perubahan status respons tetap diaktifkan, Compute Engine akan menulis entri log ke log platform setiap kali status respons instance terkelola berubah. Anda dapat melihat log ini untuk suatu project, untuk MIG tertentu, atau untuk instance terkelola tertentu.

Melihat log untuk project atau MIG

Untuk melihat entri log project atau MIG tertentu, gunakan Google Cloud Console, gcloud CLI, atau REST.

Konsol

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Tetapkan parameter kueri berikut:

    • Resource - Pengelola Grup Instance GCE
    • Nama log - instance_group_manager_events
  3. Atau, Anda dapat menyalin kueri berikut di builder Kueri.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*
    

    Anda dapat mempersempit penelusuran ke grup instance terkelola tertentu menggunakan kueri berikut.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  4. Klik Jalankan kueri. Hasil kueri akan menampilkan log.

gcloud

Gunakan perintah gcloud logging read untuk melihat dan membaca entri log.

Untuk melihat semua log perubahan status respons di project Anda, gunakan perintah berikut:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*'\
    --limit 10

Untuk melihat semua log perubahan status respons untuk grup instance terkelola tertentu, gunakan perintah berikut:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"' \
    --limit 10

Ganti kode berikut:

  • PROJECT_ID: project id Anda.
  • MIG_NAME: MIG yang ingin Anda lihat log perubahan status respons-nya.

REST

Untuk melihat log perubahan status respons, buat permintaan POST ke metode entries.list.

Untuk melihat semua log perubahan status respons di project Anda, gunakan perintah berikut:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:*",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Untuk melihat log perubahan status respons untuk grup instance terkelola tertentu, gunakan perintah berikut:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name=MIG_NAME",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Ganti kode berikut:

  • OAUTH2_TOKEN: token akses aplikasi Anda. Untuk pengujian lokal, Anda dapat menggunakan perintah gcloud auth print-access-token untuk membuat token.
  • PROJECT_ID: project id Anda.
  • MIG_NAME: MIG yang ingin Anda lihat log perubahan status respons-nya.

Untuk mengetahui informasi selengkapnya tentang setiap entri log, lihat Format entri log.

Bergantung pada apakah Anda ingin mengarsipkan log, menggunakan log untuk analisis, mengirimkan log ke aplikasi lain, atau memicu Cloud Function, Anda dapat mengekspor log ke tujuan seperti Cloud Storage, BigQuery, atau Pub/Sub. Untuk mengetahui informasi selengkapnya tentang cara mengekspor log, lihat Ringkasan ekspor log.

Melihat log perubahan status respons untuk VM tertentu

Untuk melihat entri log instance terkelola tertentu, gunakan Google Cloud Console, gcloud CLI, atau REST.

Konsol

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Salin kueri berikut di builder Kueri.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Klik Jalankan kueri.

gcloud

Gunakan perintah gcloud logging read untuk melihat dan membaca entri log.

Untuk melihat log perubahan status respons instance terkelola, gunakan perintah berikut:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"' \
    --limit 10

Ganti kode berikut:

  • PROJECT_ID: project id Anda.
  • INSTANCE_NAME: instance terkelola yang ingin Anda lihat log perubahan status respons-nya.

REST

Untuk melihat log perubahan status respons instance terkelola, buat permintaan POST ke metode entries.list.

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
        logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
        jsonPayload.instanceHealthStateChange:* AND
        labels.\"compute.googleapis.com/instance_name\"=\"INSTANCE_NAME\"",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Ganti kode berikut:

  • OAUTH2_TOKEN: token akses aplikasi Anda. Untuk pengujian lokal, Anda dapat menggunakan perintah gcloud auth print-access-token untuk membuat token.
  • PROJECT_ID: project id Anda.
  • INSTANCE_NAME: instance terkelola yang ingin Anda lihat log perubahan status respons-nya.

Format entri log

Entri log perubahan status respons instance berisi informasi yang berguna untuk memantau dan men-debug status instance terkelola Anda.

Log ditulis ke log platform dengan nama log instance_group_manager_events. Log platform membantu Anda melakukan debug dan memecahkan masalah.

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events"

Entri log perubahan status respons berisi jenis informasi berikut:

  • Informasi umum yang ditampilkan di sebagian besar log, seperti tingkat keparahan, project ID, nama dan ID MIG, nomor project, stempel waktu, dan sebagainya.
  • Kolom khusus untuk status respons instance.

Dalam setiap entri log perubahan status respons, kolom jsonPayload.instanceHealthStateChange berisi informasi berikut:

Kolom Deskripsi
instance URL untuk instance, berdasarkan project ID string dan nama instance.
instanceWithId URL untuk instance, berdasarkan project ID numerik dan ID instance-nya.
ipAddress Alamat IP instance, seperti yang diperiksa oleh health check.
network URL resource jaringan untuk instance ini, berdasarkan project ID string dan nama jaringan.
networkWithId URL resource jaringan untuk instance ini, berdasarkan project ID numerik dan ID jaringannya.
healthCheck URL untuk health check yang dikonfigurasi bagi grup instance terkelola.
previousDetailedHealthState Status respons instance sebelumnya. Untuk mengetahui daftar status yang memungkinkan, lihat status respons.
detailedHealthState Status respons instance saat ini. Untuk mengetahui daftar status yang memungkinkan, lihat status respons.
notificationTime Stempel waktu saat perubahan status respons terjadi.

Kolom log berjenis boolean biasanya hanya muncul jika memiliki nilai true. Jika kolom boolean memiliki nilai false, kolom tersebut akan dihilangkan dari log.

Encoding UTF-8 diterapkan untuk kolom log. Karakter yang bukan karakter UTF-8 akan diganti dengan tanda tanya.

Contoh entri log

Contoh berikut menunjukkan perubahan status respons instance VM dari HEALTHY menjadi UNHEALTHY:

  {
    "logName": "projects/my-project/logs/compute.googleapis.com%2Finstance_group_manager_events",
    "resource": {
      "type": "gce_instance_group_manager",
      "labels": {
        "instance_group_manager_id": "3138236342290985981",
        "instance_group_manager_name": "my-mig",
        "project_id": "my-project",
        "location": "europe-west3"
      }
    },
    "labels": {
      "compute.googleapis.com/instance_id": "6498902454451155884",
      "compute.googleapis.com/instance_location": "europe-west3-a",
      "compute.googleapis.com/instance_name": "my-mig-a"
    },
    "timestamp": "2019-11-19T15:47:57.127Z",
    "severity": "INFO",
    "jsonPayload": {
      "@type": "type.googleapis.com/compute.InstanceGroupManagerEvent",
      "instanceHealthStateChange": {
        "instance": "projects/my-project/zones/europe-west3-a/instances/my-mig-a",
        "instanceWithId": "projects/123456/zones/europe-west3-a/instances/6498902454451155884",
        "ipAddress": "10.0.0.4",
        "network": "projects/my-project/global/networks/net-1",
        "networkWithId": "projects/123456/global/networks/456",
        "healthCheck": "projects/my-project/global/healthChecks/my-mig-health-check",
        "previousDetailedHealthState": "HEALTHY",
        "detailedHealthState": "UNHEALTHY",
        "notificationTime": "2019-11-19T15:47:56.444Z"
      }
    },
    "receiveTimestamp": "2019-11-19T15:47:57.296439184Z"
  }
  

Kasus penggunaan

Anda dapat menggunakan log perubahan status respons dalam skenario pemantauan atau proses debug berikut:

  • Mencari tahu seberapa sering instance VM tertentu mengubah status respons dari waktu ke waktu.
  • Evaluasi seberapa sering MIG mengalami perubahan status response pada instance-nya.
  • Identifikasi instance VM bermasalah yang sering mengalami UNHEALTHY.
  • Cari tahu penyebab upaya autohealing.
  • Cari tahu apakah upaya autohealing berhasil untuk instance VM tertentu.
  • Sempurnakan konfigurasi health check untuk aplikasi dengan menentukan penundaan awal yang sesuai untuk autohealing.

Memantau perubahan status respons VM

Anda dapat memantau seberapa sering status respons instance VM berubah dengan membuat metrik yang melacak perubahan status respons VM tertentu tersebut.

Untuk membuat metrik dan memantau perubahan, lakukan tindakan berikut:

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Masukkan kueri berikut di builder Kueri menggunakan project ID dan nama instance Anda.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Di bagian hasil kueri, klik Tindakan, lalu klik Buat metrik.

  4. Di halaman Buat metrik log, lakukan tindakan berikut:

    1. Tetapkan Jenis Metrik sebagai Penghitung.
    2. Masukkan Nama metrik log, misalnya health-mig-xyzq.

      Bagian Filter build menampilkan kueri log dari Logs Explorer. Anda juga dapat mengonfigurasi filter metrik agar hanya memperhitungkan status yang mengganggu, seperti UNHEALTHY dan TIMEOUT, dengan menambahkan severity>=WARNING ke filter.

    3. Pada Label, klik Tambahkan label.

    4. Masukkan Nama label, misalnya health_state.

    5. Tetapkan Jenis label sebagai STRING.

    6. Tetapkan Nama kolom menjadi jsonPayload.instanceHealthStateChange.detailedHealthState. Ini akan memungkinkan Anda membedakan perubahan status respons yang berbeda.

    7. Klik Selesai untuk menambahkan label.

    8. Klik Buat Metrik.

  5. Buka halaman Metrik berbasis Log dan cari metrik yang baru dibuat.

  6. Klik menu pada baris metrik dan pilih Lihat di Metrics Explorer. Metrics Explorer terbuka dan menampilkan grafik yang menampilkan perubahan status respons instance VM yang Anda tentukan dalam kueri.

Memantau perubahan status respons semua VM di MIG

Anda dapat memantau perubahan status respons semua instance terkelola dengan membuat metrik yang melacak perubahan status respons instance terkelola.

Untuk membuat metrik dan memantau perubahan, lakukan tindakan berikut:

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Masukkan kueri berikut di builder Kueri menggunakan project ID dan nama grup instance terkelola Anda.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. Di bagian hasil kueri, klik Tindakan, lalu klik Buat metrik.

  4. Di halaman Buat metrik log, lakukan tindakan berikut:

    1. Tetapkan Jenis Metrik sebagai Penghitung.
    2. Masukkan Nama metrik log, misalnya health-mig-xyzq.
    3. Pada Label, klik Tambahkan label.
    4. Masukkan Nama label, misalnya health_state.
    5. Tetapkan Jenis label sebagai STRING.
    6. Tetapkan Nama kolom menjadi jsonPayload.instanceHealthStateChange.detailedHealthState. Ini akan memungkinkan Anda membedakan perubahan status respons yang berbeda.
    7. Klik Selesai untuk menambahkan label.
    8. Klik Buat Metrik.
  5. Buka halaman Metrik berbasis Log dan cari metrik yang baru dibuat.

  6. Klik menu pada baris metrik dan pilih Lihat di Metrics Explorer. Metrics Explorer terbuka dan menampilkan grafik yang menampilkan perubahan status respons semua instance VM dalam grup instance terkelola yang Anda tentukan dalam kueri.

Mengidentifikasi VM yang sering tidak responsif

Anda dapat mengidentifikasi VM bermasalah yang sering mengalami UNHEALTHY dengan membuat metrik yang melacak perubahan status respons semua instance VM di MIG Anda dan mengelompokkan metrik berdasarkan instance.

Untuk membuat metrik dan mengelompokkan berdasarkan instance, lakukan tindakan berikut:

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Masukkan kueri berikut di builder Kueri menggunakan project ID dan nama grup instance terkelola Anda.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. Di bagian hasil kueri, klik Tindakan, lalu klik Buat metrik.

  4. Di halaman Buat metrik log, lakukan tindakan berikut:

    1. Tetapkan Jenis Metrik sebagai Penghitung.
    2. Masukkan Nama metrik log, misalnya health-mig-xyzq.
    3. Pada Label, klik Tambahkan label.
    4. Masukkan Nama label, misalnya health_state.
    5. Tetapkan Jenis label sebagai STRING.
    6. Tetapkan Nama kolom menjadi jsonPayload.instanceHealthStateChange.detailedHealthState. Ini akan memungkinkan Anda membedakan perubahan status respons yang berbeda.
    7. Klik Selesai untuk menambahkan label.
    8. Demikian pula, tambahkan label kedua, misalnya instance, dengan Nama kolom ditetapkan ke jsonPayload.instanceHealthStateChange.instance.
    9. Klik Buat Metrik.
  5. Buka halaman Metrik berbasis Log dan cari metrik yang baru dibuat.

  6. Klik menu pada baris metrik dan pilih Lihat di Metrics Explorer. Metrics Explorer terbuka dan menampilkan grafik yang menampilkan perubahan status respons semua instance VM dalam grup instance terkelola yang Anda tentukan dalam kueri.

  7. Tetapkan Kelompokkan Menurut ke instance untuk melihat jumlah gabungan perubahan status respons untuk setiap instance.

Instance dengan perubahan status respons terbanyak secara agregat adalah instance yang paling sering tidak responsif.

Memeriksa penyebab upaya autohealing

Anda dapat mengetahui penyebab upaya autohealing dengan memfilter log untuk operasi repair bagi instance VM tertentu.

Untuk memfilter operasi perbaikan, lakukan hal berikut:

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Masukkan kueri berikut di builder Kueri menggunakan project ID Anda dan nama instance.

    resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$"
    
  3. Klik Jalankan kueri. Hasil kueri akan menampilkan semua upaya autohealing di VM dengan alasan autohealing di protoPayload.status.message.

Memeriksa apakah autohealing berhasil untuk VM atau tidak

Anda dapat mengetahui apakah upaya autohealing berhasil untuk sebuah instance VM dengan memfilter log untuk operasi repair dan perubahan respons berdasarkan nama instance VM. Jika status respons instance berubah menjadi HEALTHY setelah operasi perbaikan, Anda akan melihat log perubahan status respons yang sesuai. Ikuti langkah-langkahnya:

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Masukkan kueri berikut di builder Kueri menggunakan project ID Anda dan nama instance.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$")
    OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    Bagian pertama kueri menampilkan operasi perbaikan instance, yang menunjukkan bahwa pembuatan ulang dipicu oleh autohealing MIG untuk membuat instance kembali responsif. Bagian kedua kueri menampilkan semua perubahan status respons instance VM.

    Di Hasil kueri, peristiwa perubahan status respons dengan detailedHealthState yang ditetapkan ke HEALTHY segera setelah operasi perbaikan menunjukkan bahwa upaya autohealing berhasil.

Menentukan nilai penundaan awal MIG

Menentukan nilai penundaan awal yang sesuai untuk autohealing MIG lebih mudah dengan logging status respons instance VM. Anda dapat menggunakan log untuk mengamati waktu antara saat operasi instances.insert selesai dan saat sinyal responsif pertama diterima untuk sekumpulan instance dalam sebuah grup. Interval waktu ini menampilkan waktu yang diperlukan instance untuk melakukan booting sepenuhnya. Karena beberapa VM mungkin melakukan booting lebih lambat dari yang lain, Google merekomendasikan penambahan sejumlah margin ke waktu inisialisasi yang diamati (dari operasi penyisipan hingga status responsif) saat menentukan penundaan awal dalam kebijakan autohealing.

Untuk mengukur waktu antara operasi penyisipan instance dan instance menjadi responsif, jalankan kueri untuk operasi insert dan log perubahan respons berdasarkan nama instance VM. Gunakan stempel waktu dari kedua operasi untuk menghitung waktu inisialisasi instance. Ikuti langkah-langkahnya:

  1. Buka Logs Explorer di Konsol Google Cloud.

    Buka Logs Explorer

  2. Masukkan kueri berikut di builder Kueri menggunakan project ID Anda dan nama instance.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND
    protoPayload.request.@type="type.googleapis.com/compute.instances.insert" AND
    operation.last="true" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$") OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    Bagian pertama kueri menunjukkan penyelesaian operasi penyisipan VM. Bagian kedua menampilkan semua perubahan status respons untuk VM.

    Dalam Hasil kueri, stempel waktu peristiwa perubahan status respons dengan detailedHealthState yang ditetapkan ke HEALTHY segera setelah operasi penyisipan menunjukkan waktu yang diperlukan VM ini untuk melakukan booting.

  3. Ulangi langkah-langkah tersebut untuk beberapa VM lainnya guna mendapatkan perkiraan nilai parameter penundaan awal yang lebih baik.