Melakukan streaming dan memantau entri log secara live

Dokumen ini menjelaskan cara melihat entri log secara real time dengan melakukan streaming dan live tailing. Log streaming memungkinkan Anda melihat entri log secara real time dan tersedia di Logs Explorer. Tailing langsung 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 oleh Cloud Logging. Saat melakukan streaming atau melihat entri log secara langsung, Anda melihat entri log saat aplikasi Anda menuliskannya ke Cloud Logging API.

Menjalankan streaming log di Logs Explorer

Di Logs Explorer, Anda dapat melihat data log secara real time menggunakan Streaming log. Saat menggunakan Streaming log, Anda dapat menambahkan kueri untuk melakukan streaming hanya log yang cocok dengan kueri tersebut. 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 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. Log terus di-streaming hingga Anda memilih scroll bar di panel log. Setelah 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

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

Penelusuran langsung 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 tentang metode API untuk mengikuti secara 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 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 tentang cara memperbarui 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 ID project Google Cloud dan untuk mengautentikasi:

    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 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 mengetahui informasi selengkapnya tentang penggunaan penelusuran langsung, 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 pertukaran antara melihat entri log saat sedang 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 harus memilih antara melihat log saat ditulis dan melihat entri yang tidak berurutan.

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 penelusuran langsung:

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.
Membuka sesi live-tailing per Google Cloud project 10

Batasan klien

Untuk project yang menulis banyak entri dengan cepat, klien Anda mungkin tidak dapat menggunakan entri tersebut secepat penulisan entri. Google Cloud Dalam hal ini, Logging membatasi jumlah total entri yang dikirim, dengan memprioritaskan entri terbaru. Di akhir sesi ekor, Logging menampilkan jumlah entri yang tidak ditampilkan karena batas klien.

Menggunakan tailing langsung dengan library klien

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

Penelusuran langsung 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