Menggunakan log platform

Halaman ini menjelaskan cara menggunakan log platform yang dihasilkan oleh Live Stream API sebagai bagian dari Cloud Logging. Live Stream API menggunakan nama layanan Logging API livestream.googleapis.com untuk mencatat aktivitas terkait channel.

Sebelum memulai

Mengaktifkan logging platform

Secara default, log platform livestream.googleapis.com/channel_activities untuk Live Stream API dinonaktifkan. Untuk mengaktifkan log, Anda harus menentukan level keparahan saat membuat atau memperbarui resource saluran.

Untuk mengaktifkan log, tambahkan kolom berikut ke isi JSON permintaan metode projects.locations.channels.create atau projects.locations.channels.patch:

   "logConfig": {
     "logSeverity": "SEVERITY_LEVEL"
   },
  

dengan SEVERITY_LEVEL adalah salah satu dari berikut ini:

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

Setelah Anda memilih tingkat keparahan log untuk saluran, hanya log platform dengan tingkat keparahan yang lebih tinggi dari atau sama dengan tingkat keparahan yang dipilih yang akan dicatat ke dalam log. Misalnya, jika tingkat keparahannya adalah WARNING, hanya log dengan tingkat keparahan WARNING dan ERROR yang dicatat ke dalam log. Jika tingkat keparahannya adalah INFO, log dari semua tingkat keparahan kecuali DEBUG akan dicatat dalam log.

Untuk informasi selengkapnya tentang tingkat keparahan log, lihat LogSeverity.

Melihat log platform

Untuk melihat log platform, ikuti petunjuk di bawah:

Konsol

Untuk melihat log platform di konsol Google Cloud:

  1. Buka Logs Explorer:

    Buka Logs Explorer

  2. Pilih project Google Cloud yang sesuai.

  3. Di kolom Query, masukkan perintah kueri berikut:

    resource.labels.channel_id=CHANNEL_ID
    resource.labels.location=LOCATION
    logName="projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities"
    

    dengan:

    • CHANNEL_ID adalah ID channel yang ingin Anda debug atau pantau. Contoh, my-channel.

    • LOCATION adalah lokasi saluran yang ingin Anda debug atau pantau. Contoh, us-central1.

    • PROJECT_ID adalah ID project yang berisi saluran yang ingin Anda debug atau pantau. Contoh, my-project.

  4. Klik Run query.

Untuk mengetahui informasi selengkapnya tentang Logs Explorer, lihat Ringkasan Logs Explorer dan Menggunakan Logs Explorer.

gcloud

Alat command line gcloud menyediakan antarmuka command line ke Cloud Logging.

Untuk melihat log channel_activities untuk project Anda, jalankan perintah berikut:

gcloud logging read "logName:projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities" --project=PROJECT_ID

dengan PROJECT_ID sebagai project ID Google Cloud Anda.

Untuk mengetahui informasi selengkapnya tentang penggunaan alat gcloud dengan Cloud Logging, lihat gcloud logging.

Menggunakan log platform

Bagian ini menjelaskan cara menggunakan dan menafsirkan log platform tertentu untuk Live Stream API.

eventStateChange

Log eventStateChange dibuat saat status peristiwa saluran berubah. Tingkat keparahan log eventStateChange adalah ERROR saat status baru peristiwa saluran adalah FAILED. Jika tidak, tingkat keparahan log eventStateChange adalah INFO.

Berikut adalah contoh log eventStateChange:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    eventStateChange: {
      eventId: "my-ad-break"
      newState: "SCHEDULED"
      previousState: "PENDING"
    }
    message: "State of event "my-ad-break" changed from "PENDING" to "SCHEDULED"."
  }
  ...
  severity: "INFO"
  ...
}

scte35CommandReceived

Log scte35CommandReceived dibuat saat aliran input menerima perintah SCTE35. Tingkat keparahan untuk log scte35CommandReceived adalah INFO.

Hanya durationFlag, breakDuration, spliceTime, dan outOfNetworkIndicator yang diproses. Jika spliceTime tidak ada, perintah SCTE35 akan segera dieksekusi. Semua kolom lainnya diperlakukan sebagai no-ops.

Berikut adalah contoh log scte35CommandReceived:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    scte35CommandReceived: {
      spliceInfoSection: {
        ptsAdjustment: "123456789"
        spliceInsert: {
          availNum: 0
          availsExpected: 0
          breakDuration: null
          componentCount: 0
          components: [0]
          durationFlag: false
          outOfNetworkIndicator: true
          programSpliceFlag: true
          spliceEventCancelIndicator: false
          spliceEventId: 123456789
          spliceImmediateFlag: true
          spliceTime: null
          uniqueProgramId: 5
        }
      }
    }
    message: "Received inband SCTE35 command, eventID=123456789."
  }
  ...
  severity: "INFO"
  ...
}

streamingStateChange

Log streamingStateChange dibuat saat status streaming channel berubah. Tingkat keparahan log streamingStateChange adalah ERROR saat status baru saluran adalah STREAMING_ERROR. Jika tidak, tingkat keparahan log streamingStateChange adalah INFO.

Berikut adalah contoh log streamingStateChange dengan status sebelumnya STREAMING_ERROR dan status baru STREAMING:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    message: "streaming state of channel "CHANNEL_ID" changes from "STREAMING_ERROR" to "STREAMING""
    streamingStateChange: {
      newState: "STREAMING"
      previousState: "STREAMING_ERROR"
      ...
    type: "livestream.googleapis.com/Channel"
  }
  severity: "INFO"
  ...
}

Anda dapat menambahkan perintah tambahan di kolom Kueri Logs Explorer untuk mempersempit log yang ditampilkan.

Tambahkan perintah berikut untuk menampilkan semua log streamingStateChange dengan status baru STREAMING:

jsonPayload.streamingStateChange.newState="STREAMING"

Tambahkan perintah berikut untuk hanya menampilkan log streamingStateChange:

jsonPayload.streamingStateChange.newState:*

streamingError

Log streamingError dibuat saat channel mengalami error terkait streaming. Tingkat keparahan log dari log streamingError adalah ERROR.

Berikut adalah contoh log streamingError saat Live Stream API menolak izin untuk mengupload file output ke bucket Cloud Storage yang ditentukan:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    message: "A live streaming encounters an error."
    streamingError: {
      error: {
        ...
        message: "Permission denied to access the Cloud Storage bucket "STORAGE_BUCKET_NAME""
  ...
  severity: "ERROR"
  ...
}

Error ini juga dapat terjadi jika bucket Cloud Storage yang ditentukan tidak ada.

Jika streamingError.message menampilkan pesan This is due to an internal error. If the error persists, please contact support team, salin konten log dan kirim ke tim dukungan untuk pemecahan masalah.

inputAccept

Log inputAccept dibuat saat aliran input berhasil terhubung ke endpoint input Live Stream API. Tingkat keparahan log inputAccept adalah INFO.

Kolom inputStreamProperty dalam log inputAccept menyertakan informasi berikut tentang sub-aliran video dan audio dari aliran input:

Streaming video
  • indeks
  • codec
  • kecepatan frame
  • resolusi
Streaming audio
  • indeks
  • jumlah channel
  • tata letak channel
  • informasi codec

Anda dapat menggunakan log inputAccept untuk memverifikasi format dan status penerimaan aliran input:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    inputAccept: {
      inputAttachment: "input-primary"
      inputStreamProperty: {
        audioStreams: [
          0: {
            audioFormat: {
              channelCount: 2
              channelLayout: [
                0: "fl"
                1: "fr"
              ]
              codec: "aac"
            }
            index: 1
          }
        ]
        videoStreams: [
          0: {
            videoFormat: {
              codec: "h264"
              frameRate: 60
              heightPixels: 720
              widthPixels: 1280
      ...
      streamId: "STREAM_ID"
    }
    message: "Input stream "STREAM_ID" is accepted by channel "CHANNEL_ID" for input attachment "input-primary""
  }
  ...
  severity: "INFO"
  ...
}

Tambahkan perintah berikut di kolom Query Logs Explorer untuk hanya menampilkan log inputAccept untuk aliran tertentu:

jsonPayload.inputAccept.streamId="STREAM_ID"

dengan STREAM_ID adalah ID unik untuk streaming yang disertakan dalam URI endpoint input.

inputError

Log inputError dibuat saat aliran input ditolak oleh Live Stream API. Tingkat keparahan untuk log inputError adalah ERROR.

Berikut adalah contoh log inputError saat aliran input dikirim ke saluran yang belum dimulai:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    inputError: {
      error: {
        ...
        message: "The channel has not been started yet"
      }
      streamId: "STREAM_ID"
  ...
  severity: "ERROR"
  ...
}

Berikut adalah contoh log inputError saat stream input duplikat dikirim ke saluran yang sudah melakukan streaming:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    inputError: {
      error: {
        code: 9
        message: "input stream "STREAM_ID" has been accepted. Please verify if another input stream has been streaming to the same endpoint."
      }
      streamId: "STREAM_ID"
  ...
  severity: "ERROR"
  ...
}

Tambahkan perintah berikut di kolom Query Logs Explorer untuk hanya menampilkan log inputError untuk aliran tertentu:

jsonPayload.inputError.streamId="STREAM_ID"

dengan STREAM_ID adalah ID unik untuk streaming yang disertakan dalam URI endpoint input.

inputDisconnect

Log inputDisconnect dibuat saat aliran input terputus dari Live Stream API. Anda dapat menggunakan log inputDisconnect untuk memeriksa pemutusan koneksi live stream yang tidak terduga. Tingkat keparahan untuk log inputDisconnect adalah INFO.

Berikut adalah contoh log inputDisconnect:

{
  jsonPayload: {
    @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity"
    inputDisconnect: {
      inputAttachment: "input-primary"
      streamId: "STREAM_ID"
    }
    message: "Input stream "STREAM_ID" is disconnected by channel "CHANNEL_ID" for input attachment "input-primary""
  ...
  severity: "INFO"
  ...
}