Visualizzare un argomento Google Cloud Managed Service per Apache Kafka

Per visualizzare le informazioni dettagliate su un singolo argomento, puoi utilizzare la consoleGoogle Cloud , Google Cloud CLI, la libreria client, l'API Managed Kafka o le API Apache Kafka open source.

Ruoli e autorizzazioni richiesti per visualizzare un argomento

Per ottenere le autorizzazioni necessarie per visualizzare un argomento, chiedi all'amministratore di concederti il ruolo IAM Visualizzatore Kafka gestito (roles/managedkafka.viewer) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per visualizzare un argomento. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per visualizzare un argomento sono necessarie le seguenti autorizzazioni:

  • Elenco degli argomenti: managedkafka.topics.list
  • Recupera argomento: managedkafka.topics.get

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più sul ruolo IAM Managed Kafka Viewer (roles/managedkafka.viewer), consulta la sezione Ruoli predefiniti di Managed Service per Apache Kafka.

Proprietà dell'argomento nella console

Nella console puoi visualizzare le seguenti proprietà dell'argomento:

  • Configurazioni: questa scheda fornisce dettagli di configurazione generali sull'argomento, tra cui:

    • Nome: l'identificatore univoco dell'argomento all'interno del cluster.

    • Partizioni: il numero di partizioni nell'argomento. Le partizioni dividono i dati dell'argomento in segmenti per la scalabilità e il parallelismo.

    • Replica: il numero di copie (repliche) mantenute per ogni partizione per garantire la ridondanza e la disponibilità dei dati.

    • Cluster: il nome del cluster Managed Service per Apache Kafka a cui appartiene l'argomento.

    • Regione: la regione Google Cloud in cui si trovano il cluster e l'argomento.

    • Parametri dell'argomento non predefiniti: eventuali override della configurazione a livello di argomento impostati per l'argomento, diversi dai valori predefiniti a livello di cluster.

  • Monitoraggio: questa scheda fornisce grafici visivi che mostrano le metriche chiave relative all'attività e al rendimento dell'argomento. Questi grafici includono quanto segue:

    • Conteggio byte: un grafico delle serie temporali che mostra la velocità con cui i byte vengono prodotti o inviati all'argomento. Indica il volume di dati pubblicati nell'argomento nel tempo. La metrica corrispondente è managedkafka.googleapis.com/byte_in_count.

    • Conteggio richieste: un grafico delle serie temporali che rappresenta la frequenza delle richieste inviate all'argomento. Riflette l'attività e l'utilizzo complessivi dell'argomento. La metrica correlata è managedkafka.googleapis.com/topic_request_count.

    • Segmenti di log per partizione: questo grafico mostra il numero di segmenti di log attivi per ciascuna partizione all'interno dell'argomento. I segmenti di log sono i file fisici sul disco in cui Kafka archivia i dati degli argomenti. La metrica pertinente è managedkafka.googleapis.com/log_segments.

  • Gruppi di consumatori: questa sezione elenca i gruppi di consumatori iscritti all'argomento. Un gruppo di consumatori è un insieme di consumatori che lavorano insieme per leggere i messaggi dell'argomento.

Visualizzare un argomento

Console

  1. Nella console Google Cloud , vai alla pagina Cluster.

    Vai a Cluster

    Viene visualizzato l'elenco dei cluster che hai creato in un progetto.

  2. Fai clic sul cluster per cui vuoi visualizzare gli argomenti.

    Viene visualizzata la pagina dei dettagli del cluster. Nella pagina dei dettagli del cluster, gli argomenti sono elencati nella scheda Risorse.

  3. Per visualizzare un argomento specifico, fai clic sul nome dell'argomento.

    Viene visualizzata la pagina dei dettagli dell'argomento.

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. Esegui il comando gcloud managed-kafka topics describe:

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

    Questo comando recupera e visualizza informazioni dettagliate sull'argomento specificato. Queste informazioni includono le impostazioni di configurazione, come il numero di partizioni, il fattore di replica e gli eventuali override della configurazione a livello di argomento.

    Sostituisci quanto segue:

    • TOPIC_ID: l'ID dell'argomento.
    • CLUSTER_ID: l'ID del cluster contenente l'argomento.
    • LOCATION_ID: la posizione del cluster.
  3. Il comando gcloud managed-kafka topics describe mostra informazioni minime su un argomento, come il numero di partizioni e il fattore di replica. Per informazioni più dettagliate, inclusi gli assegnamenti di partizioni e l'insieme completo delle impostazioni di configurazione, utilizza lo strumento a riga di comando kafka-topics.sh.

    Interfaccia a riga di comando Kafka

    Prima di eseguire questo comando, installa gli strumenti a riga di comando Kafka su una VM Compute Engine. La VM deve essere in grado di raggiungere una subnet connessa al cluster Managed Service per Apache Kafka. Segui le istruzioni riportate in Produci e utilizza messaggi con gli strumenti a riga di comando Kafka.

    Per visualizzare i dettagli di un argomento, esegui il comando kafka-topics.sh --describe:

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

    Sostituisci quanto segue:

    • BOOTSTRAP_ADDRESS: l'indirizzo di bootstrap del cluster Managed Service per Apache Kafka.
    • TOPIC_ID: l'ID dell'argomento.

    Questo comando restituisce un sottoinsieme delle proprietà dell'argomento, tra cui le seguenti:

    • Conteggio partizioni
    • Fattore di replica
    • Assegnazioni partizioni
    • Configurazione dinamica (impostazioni che hai impostato esplicitamente)
    • Configurazione statica (impostazioni applicate all'avvio del cluster)

    Per visualizzare l'insieme completo delle impostazioni di configurazione per un argomento, incluse le impostazioni con valori predefiniti, esegui il comando kafka-configs.sh --describe:

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

    L'output è un elenco di impostazioni come coppie chiave-valore. Il flag --all restituisce tutte le impostazioni di configurazione. Per ottenere un elenco delle sole impostazioni di configurazione dinamica, ometti il flag --all.

    REST

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • PROJECT_ID: il tuo Google Cloud ID progetto
    • LOCATION: la posizione del cluster
    • CLUSTER_ID: l'ID del cluster
    • TOPIC_ID: l'ID dell'argomento

    Metodo HTTP e URL:

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

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

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

    Go

    Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Installare le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Go di Managed Service per Apache Kafka.

    Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione(ADC). Per saperne di più, vedi Configura ADC per un ambiente di sviluppo locale.

    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

    Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Installare le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Managed Service per Apache Kafka.

    Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura ADC per un ambiente di sviluppo locale.

    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

    Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Installare le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Managed Service per Apache Kafka.

    Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura ADC per un ambiente di sviluppo locale.

    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}")
    

Passaggi successivi