Melihat topik Google Cloud Managed Service for Apache Kafka

Untuk melihat informasi mendetail tentang satu topik, Anda dapat menggunakan konsolGoogle Cloud , Google Cloud CLI, library klien, Managed Kafka API, atau Apache Kafka API open source.

Peran dan izin yang diperlukan untuk melihat topik

Untuk mendapatkan izin yang diperlukan guna melihat topik, minta administrator untuk memberi Anda peran IAM Managed Kafka Viewer (roles/managedkafka.viewer) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk melihat topik. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk melihat topik:

  • Daftar topik: managedkafka.topics.list
  • Dapatkan topik: managedkafka.topics.get

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi selengkapnya tentang peran IAM Managed Kafka Viewer (roles/managedkafka.viewer), lihat Peran bawaan Managed Service for Apache Kafka.

Properti topik di konsol

Di konsol, Anda dapat melihat properti topik berikut:

  • Konfigurasi: Tab ini memberikan detail konfigurasi umum tentang topik, termasuk:

    • Nama: ID unik topik dalam cluster.

    • Partisi: Jumlah partisi dalam topik. Partisi membagi data topik menjadi beberapa segmen untuk skalabilitas dan paralelisme.

    • Replika: Jumlah salinan (replika) yang dipertahankan untuk setiap partisi guna memastikan redundansi dan ketersediaan data.

    • Cluster: Nama cluster Managed Service for Apache Kafka tempat topik berada.

    • Region: Region Google Cloud tempat cluster dan topik berada.

    • Parameter topik non-default: Setiap penggantian konfigurasi tingkat topik yang telah ditetapkan untuk topik, yang berbeda dari default seluruh cluster.

  • Pemantauan: Tab ini menyediakan diagram visual yang menampilkan metrik utama terkait aktivitas dan performa topik. Diagram ini mencakup:

    • Jumlah byte: Diagram deret waktu yang menunjukkan kecepatan byte diproduksi atau dikirim ke topik. Ini menunjukkan volume data yang dipublikasikan ke topik dari waktu ke waktu. Metrik yang sesuai adalah managedkafka.googleapis.com/byte_in_count.

    • Jumlah permintaan: Diagram deret waktu yang menampilkan rasio permintaan yang dibuat ke topik. Bagian ini mencerminkan keseluruhan aktivitas dan penggunaan topik. Metrik terkait adalah managedkafka.googleapis.com/topic_request_count.

    • Segmen log menurut partisi: Diagram ini menampilkan jumlah segmen log aktif untuk setiap partisi dalam topik. Segmen log adalah file fisik di disk tempat Kafka menyimpan data topik. Metrik yang relevan adalah managedkafka.googleapis.com/log_segments.

  • Grup konsumen: Bagian ini mencantumkan grup konsumen yang berlangganan topik. Grup konsumen adalah sekumpulan konsumen yang bekerja sama untuk membaca pesan dari topik.

Melihat topik

Konsol

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

    Cluster yang Anda buat dalam project akan dicantumkan.

  2. Klik cluster yang topiknya ingin Anda lihat.

    Halaman detail cluster akan ditampilkan. Di halaman detail cluster, untuk tab Resources, topik akan dicantumkan.

  3. Untuk melihat topik tertentu, klik nama topik.

    Halaman detail topik akan ditampilkan.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Jalankan perintah gcloud managed-kafka topics describe:

    gcloud managed-kafka topics describe TOPIC_ID \
      --cluster=CLUSTER_ID --location=LOCATION_ID
    

    Perintah ini mengambil dan menampilkan detail komprehensif tentang topik yang ditentukan. Informasi ini mencakup setelan konfigurasinya, seperti jumlah partisi, faktor replikasi, dan penggantian konfigurasi level topik.

    Ganti kode berikut:

    • TOPIC_ID: ID topik.
    • CLUSTER_ID: ID cluster yang berisi topik.
    • LOCATION_ID: Lokasi cluster.
  3. Perintah gcloud managed-kafka topics describe menampilkan informasi minimal tentang suatu topik, seperti jumlah partisi dan faktor replikasi. Untuk mendapatkan informasi yang lebih mendetail, termasuk penetapan partisi dan kumpulan lengkap setelan konfigurasi, gunakan alat command line kafka-topics.sh.

    Kafka CLI

    Sebelum menjalankan perintah ini, instal alat command line Kafka di VM Compute Engine. VM harus dapat menjangkau subnet yang terhubung ke cluster Managed Service untuk Apache Kafka. Ikuti petunjuk di Membuat dan menggunakan pesan dengan alat command line Kafka.

    Untuk melihat detail tentang topik, jalankan perintah kafka-topics.sh --describe:

    kafka-topics.sh --describe \
      --bootstrap-server=BOOTSTRAP_ADDRESS \
      --command-config client.properties \
      --topic TOPIC_ID
    

    Ganti kode berikut:

    • BOOTSTRAP_ADDRESS: Alamat bootstrap cluster Managed Service untuk Apache Kafka.
    • TOPIC_ID: ID topik.

    Perintah ini menampilkan subset properti topik, termasuk berikut ini:

    • Jumlah partisi
    • Faktor replikasi
    • Penetapan partisi
    • Konfigurasi dinamis (setelan yang telah Anda tetapkan secara eksplisit)
    • Konfigurasi statis (setelan yang diterapkan saat cluster dimulai)

    Untuk melihat kumpulan lengkap setelan konfigurasi untuk topik, termasuk setelan dengan nilai default, jalankan perintah kafka-configs.sh --describe:

    kafka-configs.sh --describe \
    --bootstrap-server=BOOTSTRAP_ADDRESS \
    --command-config client.properties \
    --entity-type topics \
    --entity-name TOPIC_ID \
    --all
    

    Outputnya adalah daftar setelan sebagai key-value pair. Flag --all menampilkan semua setelan konfigurasi. Untuk mendapatkan daftar hanya setelan konfigurasi dinamis, hilangkan flag --all.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: Project ID Google Cloud Anda
    • LOCATION: lokasi cluster
    • CLUSTER_ID: ID cluster
    • TOPIC_ID: ID topik

    Metode HTTP dan URL:

    GET https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID",
      "partitionCount": PARTITION_COUNT,
      "replicationFactor": REPLICATION_FACTOR
    }
    

    Go

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Menginstal library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Managed Service for Apache Kafka Go API.

    Untuk melakukan autentikasi ke Managed Service untuk Apache Kafka, siapkan Kredensial Default Aplikasi(ADC). Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/managedkafka/apiv1/managedkafkapb"
    	"google.golang.org/api/option"
    
    	managedkafka "cloud.google.com/go/managedkafka/apiv1"
    )
    
    func getTopic(w io.Writer, projectID, region, clusterID, topicID string, opts ...option.ClientOption) error {
    	// projectID := "my-project-id"
    	// region := "us-central1"
    	// clusterID := "my-cluster"
    	// topicID := "my-topic"
    	ctx := context.Background()
    	client, err := managedkafka.NewClient(ctx, opts...)
    	if err != nil {
    		return fmt.Errorf("managedkafka.NewClient got err: %w", err)
    	}
    	defer client.Close()
    
    	clusterPath := fmt.Sprintf("projects/%s/locations/%s/clusters/%s", projectID, region, clusterID)
    	topicPath := fmt.Sprintf("%s/topics/%s", clusterPath, topicID)
    	req := &managedkafkapb.GetTopicRequest{
    		Name: topicPath,
    	}
    	topic, err := client.GetTopic(ctx, req)
    	if err != nil {
    		return fmt.Errorf("client.GetTopic got err: %w", err)
    	}
    	fmt.Fprintf(w, "Got topic: %#v\n", topic)
    	return nil
    }
    

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Menginstal library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Managed Service for Apache Kafka Java API.

    Untuk melakukan autentikasi ke Managed Service for Apache Kafka, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

    import com.google.api.gax.rpc.ApiException;
    import com.google.cloud.managedkafka.v1.ManagedKafkaClient;
    import com.google.cloud.managedkafka.v1.Topic;
    import com.google.cloud.managedkafka.v1.TopicName;
    import java.io.IOException;
    
    public class GetTopic {
    
      public static void main(String[] args) throws Exception {
        // TODO(developer): Replace these variables before running the example.
        String projectId = "my-project-id";
        String region = "my-region"; // e.g. us-east1
        String clusterId = "my-cluster";
        String topicId = "my-topic";
        getTopic(projectId, region, clusterId, topicId);
      }
    
      public static void getTopic(String projectId, String region, String clusterId, String topicId)
          throws Exception {
        try (ManagedKafkaClient managedKafkaClient = ManagedKafkaClient.create()) {
          // This operation is being handled synchronously.
          Topic topic =
              managedKafkaClient.getTopic(TopicName.of(projectId, region, clusterId, topicId));
          System.out.println(topic.getAllFields());
        } catch (IOException | ApiException e) {
          System.err.printf("managedKafkaClient.getTopic got err: %s", e.getMessage());
        }
      }
    }
    

    Python

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Menginstal library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Managed Service for Apache Kafka Python API.

    Untuk melakukan autentikasi ke Managed Service for Apache Kafka, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

    from google.api_core.exceptions import NotFound
    from google.cloud import managedkafka_v1
    
    # TODO(developer)
    # project_id = "my-project-id"
    # region = "us-central1"
    # cluster_id = "my-cluster"
    # topic_id = "my-topic"
    
    client = managedkafka_v1.ManagedKafkaClient()
    
    topic_path = client.topic_path(project_id, region, cluster_id, topic_id)
    request = managedkafka_v1.GetTopicRequest(
        name=topic_path,
    )
    
    try:
        topic = client.get_topic(request=request)
        print("Got topic:", topic)
    except NotFound as e:
        print(f"Failed to get topic {topic_id} with error: {e.message}")
    

Apa langkah selanjutnya?