Melakukan streaming dan memantau entri log secara live

Dokumen ini menjelaskan cara melihat entri log Anda secara real time dengan streaming dan live tailing. 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 Anda melihat dan menganalisis log menggunakan Logs Explorer, gcloud logging read, atau metode API entries.list, Anda melihat entri log yang telah disimpan Cloud Logging. Saat Anda melakukan streaming atau live tailing entri log, Anda melihat entri log saat aplikasi Anda menuliskannya ke Cloud Logging API.

Streaming log di Logs Explorer

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

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

    Buka Logs Explorer

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

  2. Di kolom Query , masukkan kueri, lalu klik Stream logs.

    Saat Logging menulis data log, hanya log yang cocok dengan kueri yang ditampilkan di panel Query results. Jika kueri tidak diberikan, Logging akan menampilkan entri log yang baru saja disimpan. Streaming log akan terus berlanjut hingga Anda memilih scroll bar di panel log. Saat streaming berhenti, tombol Restart streaming akan ditampilkan.

    Untuk mengetahui informasi selengkapnya 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 menuliskannya, 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 mengetahui informasi selengkapnya tentang metode API untuk live tailing, 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 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 variabel lingkungan CLOUDSDK_PYTHON_SITEPACKAGES ke nilai apa pun:

       export CLOUDSDK_PYTHON_SITEPACKAGES=1
      
  5. Gunakan perintah berikut untuk menetapkan Google Cloud project ID 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 ini akan menampilkan pesan berikut:

    Initializing tail session.

    Anda kini melihat entri log untuk Google Cloud project saat Logging menuliskannya.

    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 di luar urutan kronologis, live tailing menyediakan setelan jendela buffer sehingga Anda dapat menyeimbangkan kompromi antara melihat entri log saat ditulis dan melihatnya dalam urutan menaik. Anda dapat menetapkan jendela 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 diterima.

Saat mengonfigurasi jendela buffer, Anda membuat kompromi antara melihat log saat ditulis dan melihat entri di luar urutan.

Jendela buffer Kompromi
0 detik Entri log terbaru ditampilkan, tetapi kemungkinan besar 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 live tailing:

Batas dan kuota Nilai
Entri yang ditampilkan per menit 60.000
Jika lebih dari 60.000 entri cocok dengan filter, maka Logging akan menampilkan jumlah entri dalam respons.
Sesi live tailing terbuka per Google Cloud project 10

Batasan klien

Untuk a Google Cloud project 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 akan menampilkan jumlah entri yang tidak ditampilkan karena batasan klien.

Menggunakan live tailing dengan library klien

Live tailing memungkinkan Anda melihat entri log secara real time saat Cloud Logging menuliskannya. Untuk mengetahui informasi selengkapnya 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 live tailing 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