Streaming dan entri log tail live

Dokumen ini menjelaskan cara melihat entri log secara real time dengan streaming dan pelacakan langsung. Streaming log memungkinkan Anda melihat entri log secara real time dan tersedia di Logs Explorer. Live tailing memungkinkan Anda melihat entri log secara real time dan tersedia sebagai perintah gcloud CLI gcloud alpha logging tail dan sebagai metode Cloud Logging API entries.tail.

Saat melihat dan menganalisis log menggunakan Logs Explorer, gcloud logging read, atau metode API entries.list, Anda melihat entri log yang disimpan Cloud Logging. Saat melakukan streaming atau melihat entri log secara live, Anda melihat entri log saat aplikasi menulisnya ke Cloud Logging API.

Menjalankan streaming log di Logs Explorer

Di Logs Explorer, Anda dapat melihat data log secara real time menggunakan Stream log. Saat menggunakan Streaming log, Anda dapat menambahkan kueri untuk hanya melakukan streaming log yang cocok dengan kueri. Untuk melakukan streaming log, lakukan hal berikut:

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

    Buka Logs Explorer

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

  2. Di kotak teks Query, masukkan kueri, lalu klik Stream logs.

    Saat Logging menulis data log, hanya log yang cocok dengan kueri yang akan ditampilkan di panel Query results. Jika kueri tidak diberikan, Logging akan menampilkan entri log yang baru saja disimpan. Log akan terus di-streaming hingga Anda memilih scroll bar di panel log. Saat streaming dihentikan, tombol Mulai ulang streaming akan ditampilkan.

    Untuk informasi tentang kueri, lihat Membuat kueri di Logs Explorer.

Menggunakan live tailing di Google Cloud CLI

Pelacakan langsung memungkinkan Anda melihat entri log secara real time saat Cloud Logging menulisnya, menggunakan Google Cloud CLI atau Cloud Logging API.

Pelacakan langsung tidak didukung untuk bucket log dengan kontrol akses tingkat kolom, tetapi Anda dapat memutar log untuk bucket tersebut di Logs Explorer.

Untuk informasi tentang metode API untuk pelacakan langsung, lihat metode entries.tail.

Menginstal gcloud alpha logging tail

Untuk menggunakan gcloud alpha logging tail, Anda harus menginstal Python 3 dan paket Python grpcio.

Untuk petunjuk cara menginstal Python, lihat halaman Python. Untuk mengetahui petunjuk cara menginstal pengelola paket Python, pip, yang diperlukan untuk menginstal paket grpcio, lihat halaman Penginstal Paket Python.

Selesaikan langkah-langkah berikut untuk menginstal gcloud alpha logging tail:

  1. Pastikan Anda telah menginstal Google Cloud CLI. Untuk mengetahui petunjuk cara menginstal Google Cloud CLI, lihat Menginstal Google Cloud CLI.

  2. Pastikan Anda menggunakan gcloud CLI versi 302.0.0 atau yang lebih baru.

    gcloud version
    

    Untuk mengetahui petunjuk cara mengupdate gcloud CLI, lihat gcloud components update.

  3. Instal komponen gcloud CLI alpha:

    gcloud components install alpha
    
  4. Untuk pengguna MacOS, Linux, dan Cloud Shell:

    1. Instal library klien gRPC:

       sudo pip3 install grpcio
      
    2. Tetapkan variabel lingkungan CLOUDSDK_PYTHON_SITEPACKAGES ke nilai apa pun:

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Gunakan perintah berikut untuk menetapkan project ID Google Cloud Anda dan untuk melakukan autentikasi:

    gcloud config set project PROJECT_ID
    gcloud auth login
    

    Untuk mendapatkan ID project, lihat Membuat dan mengelola project.

  6. Pastikan gcloud alpha logging tail telah diinstal dengan menjalankan perintah berikut:

    gcloud alpha logging tail
    

    Perintah ini menampilkan pesan berikut:

    Initializing tail session.

    Sekarang Anda melihat entri log untuk project Google Cloud saat Logging menulisnya.

    Entri log selama sesi live-tail.

Untuk informasi selengkapnya tentang penggunaan live tailing, lihat panduan referensi gcloud alpha logging tail.

Buffering dan pengurutan

Karena Logging dapat menerima entri log di luar urutan kronologis, pelacakan langsung menyediakan setelan periode buffering sehingga Anda dapat menyeimbangkan kompromi antara melihat entri log saat ditulis dan melihatnya dalam urutan menaik. Anda dapat menetapkan periode buffering antara 0 dan 60 detik.

Perhatikan karakteristik jendela buffering berikut:

  • Periode buffering default adalah dua detik.

  • Logging menunda penulisan entri log ke bucket log selama durasi periode buffering.

  • Jika entri log ditulis di luar periode buffer, Logging akan menampilkan entri log saat diterima.

Saat mengonfigurasi periode buffering, Anda harus melakukan kompromi antara melihat log saat ditulis dan melihat entri secara tidak berurutan.

Jendela buffer Tradeoff
0 detik Entri log terbaru ditampilkan, tetapi kemungkinan besar entri tersebut tidak berurutan.
60 detik Penundaan 60 detik sebelum melihat entri yang ditampilkan, tetapi sebagian besar log ditampilkan dalam urutan menaik.

Batas dan kuota

Tabel berikut mencantumkan batas dan kuota untuk pelacakan langsung:

Batas dan kuota Nilai
Entri yang ditampilkan per menit 60.000
Jika lebih dari 60.000 entri cocok dengan filter, logging akan menampilkan jumlah entri dalam respons.
Membuka sesi live-tailing per project Google Cloud 10

Batasan klien

Untuk project Google Cloud yang menulis banyak entri dengan cepat, klien Anda mungkin tidak dapat menggunakannya secepat saat ditulis. Dalam hal ini, Logging membatasi jumlah total entri yang dikirim, dengan memprioritaskan entri terbaru. Di akhir sesi tail, logging menampilkan jumlah entri yang tidak ditampilkan karena batas klien.

Menggunakan pelacakan langsung dengan library klien

Pelacakan langsung memungkinkan Anda melihat entri log secara real time saat Cloud Logging menulisnya. Untuk informasi tentang metode API untuk pelacakan langsung, lihat metode entries.tail.

Pelacakan langsung tidak didukung untuk bucket log dengan kontrol akses tingkat kolom, tetapi Anda dapat memutar log untuk bucket tersebut di Logs Explorer.

Contoh ini menunjukkan entri log tailing live dari logger tertentu.

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Logging, lihat Library klien Logging.

Untuk melakukan autentikasi ke Logging, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import (
	"context"
	"fmt"
	"io"

	logging "cloud.google.com/go/logging/apiv2"
	"cloud.google.com/go/logging/apiv2/loggingpb"
)

// tailLogs creates a channel to stream log entries that were recently ingested for a project
func tailLogs(projectID string) error {
	// projectID := "your_project_id"

	ctx := context.Background()
	client, err := logging.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("NewClient error: %w", err)
	}
	defer client.Close()

	stream, err := client.TailLogEntries(ctx)
	if err != nil {
		return fmt.Errorf("TailLogEntries error: %w", err)
	}
	defer stream.CloseSend()

	req := &loggingpb.TailLogEntriesRequest{
		ResourceNames: []string{
			"projects/" + projectID,
		},
	}
	if err := stream.Send(req); err != nil {
		return fmt.Errorf("stream.Send error: %w", err)
	}

	// read and print two or more streamed log entries
	for counter := 0; counter < 2; {
		resp, err := stream.Recv()
		if err == io.EOF {
			break
		}
		if err != nil {
			return fmt.Errorf("stream.Recv error: %w", err)
		}
		fmt.Printf("received:\n%v\n", resp)
		if resp.Entries != nil {
			counter += len(resp.Entries)
		}
	}
	return nil
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Logging, lihat Library klien Logging.

Untuk melakukan autentikasi ke Logging, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.LogEntryServerStream;
import com.google.cloud.logging.Logging;
import com.google.cloud.logging.Logging.TailOption;
import com.google.cloud.logging.LoggingOptions;

public class TailLogEntries {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Optionally provide the logname as an argument.
    String logName = args.length > 0 ? args[0] : "";

    LoggingOptions options = LoggingOptions.getDefaultInstance();
    try (Logging logging = options.getService()) {

      // Optionally compose a filter to tail log entries only from specific log
      LogEntryServerStream stream;

      if (logName != "") {
        stream =
            logging.tailLogEntries(
                TailOption.filter(
                    "logName=projects/" + options.getProjectId() + "/logs/" + logName));
      } else {
        stream = logging.tailLogEntries();
      }
      System.out.println("start streaming..");
      for (LogEntry log : stream) {
        System.out.println(log);
        // cancel infinite streaming after receiving first entry
        stream.cancel();
      }
    }
  }
}

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Logging, lihat Library klien Logging.

Untuk melakukan autentikasi ke Logging, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const {Logging} = require('@google-cloud/logging');
const logging = new Logging();

/**
 * TODO(developer): Replace logName with the name of your log.
 */
const log = logging.log(logName);
console.log('running tail log entries test');

const stream = log
  .tailEntries({
    filter: 'timestamp > "2021-01-01T23:00:00Z"',
  })
  .on('error', console.error)
  .on('data', resp => {
    console.log(resp.entries);
    console.log(resp.suppressionInfo);
    // If you anticipate many results, you can end a stream early to prevent
    // unnecessary processing and API requests.
    stream.end();
  })
  .on('end', () => {
    console.log('log entry stream has ended');
  });

// Note: to get all project logs, invoke logging.tailEntries