Entri log streaming dan tailing live

Dokumen ini menjelaskan cara melihat entri log Anda secara real time melalui streaming dan live tailing. Log streaming memungkinkan Anda melihat entri log secara real time dan tersedia di Logs Explorer. Dengan live tailing, Anda dapat 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 Anda melihat dan menganalisis log menggunakan Logs Explorer, gcloud logging read, atau metode API entries.list, Anda melihat entri log yang telah disimpan oleh Cloud Logging. Saat melakukan streaming atau entri log tail live, Anda melihat entri log saat aplikasi menulisnya ke Cloud Logging API.

Melakukan streaming log di Logs Explorer

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

  1. Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:

    Buka Logs Explorer

  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. Streaming akan terus berlanjut hingga Anda memilih scroll bar di panel log. Saat streaming berhenti, tombol Mulai ulang streaming akan ditampilkan.

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

Menggunakan live tailing di Google Cloud CLI

Live tailing memungkinkan Anda melihat entri log secara real time saat Cloud Logging menulisnya, dengan menggunakan Google Cloud CLI atau Cloud Logging API.

Live tailing tidak didukung untuk bucket log dengan kontrol akses tingkat kolom, tetapi Anda dapat melakukan streaming log untuk bucket tersebut di Logs Explorer.

Untuk informasi tentang metode API untuk live tailing, lihat metode entries.tail.

Menginstal gcloud alpha logging tail

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

Untuk mengetahui 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 alfa gcloud CLI:

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

    1. Instal library klien gRPC:

       sudo pip3 install grpcio
      
    2. Tetapkan CLOUDSDK_PYTHON_SITEPACKAGES variabel lingkungan 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 project ID, lihat Membuat dan mengelola project.

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

    gcloud alpha logging tail
    

    Perintah akan menampilkan pesan berikut:

    Initializing tail session.

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

    Entri log selama sesi live-tail.

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

Buffering dan pengurutan

Karena Logging dapat menerima entri log secara tidak kronologis, tailing live menyediakan setelan jendela buffer sehingga Anda dapat menyeimbangkan keseimbangan antara melihat entri log saat ditulis dan melihatnya dalam urutan menaik. Anda dapat menetapkan periode buffer antara 0 dan 60 detik.

Perhatikan karakteristik jendela buffer berikut:

  • Jendela buffer default adalah dua detik.

  • Logging menunda penulisan entri log ke bucket log selama durasi jendela buffer.

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

Saat mengonfigurasi jendela buffer, Anda membuat kompromi antara melihat log saat ditulis dan melihat entri secara tidak berurutan.

Jendela buffer Kompromi
0 detik Entri log terbaru yang ditampilkan, tetapi dengan kemungkinan yang lebih besar adalah entri yang tidak berurutan.
60 detik Penundaan selama 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 live tailing:

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

Batasan klien

Untuk project Google Cloud yang menulis banyak entri dengan cepat, klien Anda mungkin tidak dapat menggunakannya secepat mungkin. 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 live tailing dengan library klien

Dengan live tailing, Anda dapat melihat entri log secara real time saat Cloud Logging menulisnya. Untuk informasi tentang metode API untuk live tailing, lihat metode entries.tail.

Live tailing tidak didukung untuk bucket log dengan kontrol akses tingkat kolom, tetapi Anda dapat melakukan streaming log untuk bucket tersebut di Logs Explorer.

Contoh ini menunjukkan entri log tailing live dari pencatat log tertentu.

Go

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

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

import (
	"context"
	"fmt"
	"io"

	logging "cloud.google.com/go/logging/apiv2"
	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
)

// 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 Logging library klien.

Untuk mengautentikasi ke Logging, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 Logging library klien.

Untuk mengautentikasi ke Logging, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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