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 tingkat keparahan saat membuat atau memperbarui resource channel.

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 channel, hanya log platform dengan tingkat keparahan yang lebih tinggi atau sama dengan tingkat keparahan yang dipilih yang akan dicatat dalam log. Misalnya, jika tingkat keparahannya adalah WARNING, hanya log dengan tingkat keparahan WARNING dan ERROR yang akan dicatat dalam log. Jika tingkat keparahannya adalah INFO, log dari semua tingkat keparahan kecuali DEBUG akan dicatat dalam log.

Untuk mengetahui 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 Google Cloud konsol:

  1. Buka Logs Explorer:

    Buka Logs Explorer

  2. Pilih Google Cloud projectyang 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. Misalnya, my-channel.

    • LOCATION adalah lokasi channel yang ingin Anda debug atau pantau. Misalnya, us-central1.

    • PROJECT_ID adalah ID project yang berisi channel yang ingin Anda debug atau pantau. Misalnya, 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 adalah ID untuk Google Cloud projectAnda.

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 channel berubah. Tingkat keparahan log eventStateChange adalah ERROR saat status baru peristiwa channel 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 stream 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-op.

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 channel adalah STREAMING_ERROR. Jika tidak, tingkat keparahan log streamingStateChange adalah INFO.

Berikut adalah contoh log streamingStateChange dengan status sebelumnya adalah STREAMING_ERROR dan status baru adalah 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 Query Logs Explorer untuk mempersempit log yang ditampilkan.

Tambahkan perintah berikut untuk menampilkan semua log streamingStateChange dengan status baru adalah 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 streamingError adalah ERROR.

Berikut adalah contoh log streamingError saat Live Stream API ditolak izinnya 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 kirimkan ke tim dukungan untuk pemecahan masalah.

inputAccept

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

Kolom inputStreamProperty dalam log inputAccept mencakup informasi berikut tentang sub-stream video dan audio dari stream 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 stream 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 stream tertentu:

jsonPayload.inputAccept.streamId="STREAM_ID"

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

inputError

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

Berikut adalah contoh log inputError saat stream input dikirim ke channel 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 channel 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 stream tertentu:

jsonPayload.inputError.streamId="STREAM_ID"

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

inputDisconnect

Log inputDisconnect dibuat saat stream input terputus dari Live Stream API. Anda dapat menggunakan log inputDisconnect untuk memeriksa pemutusan 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"
  ...
}