Membuat kueri, mengekspor, dan menyimpan log Service Health

Personalized Service Health mencatat peristiwa kondisi layanan di Cloud Logging. Fungsi ini mencatat semua pembaruan pada deskripsi, relevansi, atau status peristiwa sebagai log yang berbeda.

Dokumen ini menjelaskan cara melihat, mengekspor, dan menyimpan log Kesehatan Layanan.

Sebelum memulai

Anda harus memiliki akses ke log Kondisi Layanan.

Skema log

Lihat Referensi skema log untuk mengetahui kolom yang dapat Anda tetapkan dalam kueri.

Melihat log Service Health

Untuk melihat log Service Health:

  1. Buka konsol Google Cloud.
  2. Pilih Operations > Logging > Logs Explorer.
  3. Pilih project Google Cloud di bagian atas halaman.
  4. Di menu drop-down Log name, pilih Service Health.

    Logs Explorer

    Nama log

    Daftar log untuk type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog akan muncul.

  5. Luaskan entri log untuk melihat detail peristiwa. Contoh berikut menunjukkan peristiwa umum.

    "insertId":"1pw1msgf6a3zc6",
    "timestamp":"2022-06-14T17:17:55.722035096Z",
    "receiveTimestamp":"2022-06-14T17:17:55.722035096Z",
    "logName":"projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
    "resource":{
        "type":"servicehealth.googleapis.com/Event",
        "labels":{
            "resource_container":"797731824162",
            "location":"global",
            "event_id":"U4AqrjwFQYi5fFBmyAX-Gg"
        }
    }
    "labels":{
        "new_event":"true"
        "updated_fields": "[]"
    },
    "jsonPayload":{
        "@type":"type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
        "category":"INCIDENT",
        "title":"We are experiencing a connectivity issue affecting Cloud SQL in us-east1, australia-southeast2.",
        "description":"We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
        "updateTime":"2023-11-14T22:26:40Z",
        "endTime":"2023-11-14T22:13:20Z",
        "impactedLocations":"['us-east1','australia-southeast2']",
        "impactedProducts":"['Google Cloud SQL']",
        "impactedProductIds":"['hV87iK5DcEXKgWU2kDri']",
        "nextUpdateTime":"2023-11-14T22:40:00Z",
        "startTime":"2020-09-13T12:26:40Z",
        "state":"ACTIVE",
        "detailedState":"CONFIRMED",
        "relevance":"RELATED",
    }
    

Mengkueri log Service Health

Anda dapat menggunakan Logs Explorer untuk membuat kueri log Status Layanan. Anda mungkin memerlukan referensi berikut untuk membuat kueri:

Contoh:

Kondisi Kueri
Mendapatkan log dengan relevansi insiden tertentu jsonPayload.relevance = ("IMPACTED" OR "RELATED")
Menggabungkan beberapa filter jsonPayload.impactedLocations : "us-central1" AND jsonPayload.impactedProducts : "Google Compute Engine" AND jsonPayload.state = "ACTIVE"

Mengekspor log Service Health

Anda dapat mengekspor log Kondisi Layanan ke tujuan sink Cloud Logging menggunakan Konsol Google Cloud, API, atau gcloud CLI. Untuk menyiapkan sink Cloud Logging, lihat Mengonfigurasi dan mengelola sink.

Anda dapat menyertakan dan mengecualikan log Kesehatan Layanan dengan mengonfigurasi filter penyertaan dan pengecualian untuk sink.

Saat menetapkan produk atau lokasi, gunakan nilai yang ditemukan di Google Cloud products dan locations.

Menggabungkan log Service Health di tingkat folder

Mengirim log terkait Service Health dari semua project dalam folder ke project yang dibuat untuk log Service Health memungkinkan Anda melakukan kueri yang lebih kompleks pada log tersebut.

Anda akan membuat sink di tingkat folder untuk mengirim semua log terkait Kesehatan Layanan ke project baru di bawah folder tersebut. Lakukan tindakan berikut:

  1. Membuat project baru dalam folder. Project ini dialokasikan ke log Service Health.

    gcloud projects create PROJECT_ID --folder FOLDER_ID
    
  2. Buat sink gabungan di tingkat folder untuk project lain dalam folder.

    gcloud logging sinks create SINK_NAME \
    SINK_DESTINATION  --include-children \
    --folder=FOLDER_ID --log-filter="LOG_FILTER"
    

    Untuk mendapatkan log semua insiden yang relevan, tetapkan nilai LOG_FILTER ke hal berikut:

    resource.type=servicehealth.googleapis.com/Event AND jsonPayload.category=INCIDENT AND jsonPayload.relevance!=NOT_IMPACTED AND jsonPayload.@type=type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog
    
  3. Tetapkan izin untuk Akun Layanan sink.

    gcloud projects add-iam-policy-binding PROJECT_ID --member=SERVICE_ACCT_NAME --role=roles/logging.bucketWriter
    
    gcloud projects add-iam-policy-binding PROJECT_ID --member=SERVICE_ACCT_NAME --role=roles/logging.logWriter
    
  4. (Opsional) Jika Anda tidak ingin mengirim log ke sink _Default, buat bucket log untuk log terkait Kesehatan Layanan di project.

    gcloud logging buckets create BUCKET_ID --location=LOCATION --enable-analytics --async
    

    Jika Anda membuat bucket log, buat sink untuk mengirim log tersebut ke bucket.

    gcloud logging sinks create SINK_NAME_BUCKET \
    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID \
    --project=PROJECT_ID --log-filter="LOG_FILTER"
    

Mengkueri log Kesehatan Layanan dengan BigQuery

Anda dapat membuat kueri log yang dikirim ke Cloud Logging menggunakan BigQuery dengan:

  1. Membuat kueri SQL.
  2. Menggunakan BigQuery API untuk memasukkan hasil kueri ke sistem eksternal.

Lakukan tindakan berikut:

  1. Buat bucket log di project yang Anda buat untuk log Status Layanan.

    gcloud logging buckets create BUCKET_ID  --location=LOCATION  --enable-analytics --async
    
  2. Aktifkan Log Analytics.

    gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics --async
    
  3. Buat set data BigQuery baru yang ditautkan ke bucket dengan log Status Layanan.

    gcloud logging links create LINK_ID --bucket=BUCKET_ID --location=LOCATION
    
  4. Jika perlu, aktifkan BigQuery API.

    gcloud services enable bigquery.googleapis.com
    

Sekarang Anda dapat menjalankan kueri SQL yang kompleks terhadap BigQuery, seperti:

Kondisi Kueri
Mendapatkan log dengan relevansi insiden tertentu gcloud query --use_legacy_sql=false 'SELECT * FROM `PROJECT_ID.LINK_ID._AllLogs` WHERE JSON_VALUE(json_payload["relevance"]) = "IMPACTED"'
Mendapatkan semua peristiwa log turunan untuk peristiwa induk gcloud query --use_legacy_sql=false 'SELECT * FROM `PROJECT_ID.LINK_ID._AllLogs` WHERE JSON_VALUE(json_payload["parentEvent"]) = "projects/PROJECT_ID/locations/global/events/EVENT_ID"'

Mempertahankan peristiwa sebelumnya

Personalized Service Health menyediakan retensi peristiwa yang terbatas.

Jika Anda perlu menyimpan catatan peristiwa kondisi layanan sebelumnya selama beberapa bulan, sebaiknya simpan log Kondisi Layanan.

  1. Mengonfigurasi log Kesehatan Layanan.
  2. Menyimpan log di bucket log.