為 Managed Service for Apache Kafka 叢集生成合成資料
瞭解如何使用 Google Cloud 控制台,為 Google Cloud Managed Service for Apache Kafka 叢集產生合成測試資料。
本指南使用 Dataflow 串流資料產生器範本,自動將遊戲遙測資料範例發布至 Managed Service for Apache Kafka 主題。串流資料產生器是 Dataflow 範本,可根據指定結構定義,以可設定的速率產生合成測試記錄。產生合成資料後,您就能觀察叢集活動、測試負載處理作業,以及驗證監控指標,不必安裝本機 Kafka 用戶端或編寫自訂的生產者程式碼。如要進一步瞭解範本,請參閱「Dataflow Streaming Data Generator 範本」。
事前準備
開始本教學課程前,請先建立新的 Managed Service for Apache Kafka 叢集。如果已有叢集,可以略過這個步驟。如要瞭解建立叢集所需的角色和權限,請參閱「建立及查看叢集」。如果按照該指南操作,請只完成「建立叢集」一節,然後返回本指南。
如何建立叢集
控制台
- 前往「Managed Service for Apache Kafka」>「Clusters」(叢集) 頁面。
- 按一下 「建立」。
- 在「Cluster name」(叢集名稱) 方塊中輸入叢集的名稱。
- 在「Region」(區域) 清單中,選取叢集的位置。
-
如要進行「網路設定」,請設定可存取叢集的子網路:
- 在「Project」(專案) 部分,選取專案。
- 在「Network」(網路) 中選取虛擬私有雲網路。
- 在「子網路」中,選取子網路。
- 按一下「完成」。
- 點選「建立」。
按一下「建立」後,叢集狀態會顯示為 Creating。叢集準備就緒時,狀態會顯示 Active。
gcloud
如要建立 Kafka 叢集,請執行 managed-kafka clusters
create 指令。
gcloud managed-kafka clusters create KAFKA_CLUSTER \ --location=REGION \ --cpu=3 \ --memory=3GiB \ --subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --async
更改下列內容:
KAFKA_CLUSTER:Kafka 叢集名稱REGION:叢集位置PROJECT_ID:專案 IDSUBNET_NAME:要建立叢集的子網路,例如default
如要瞭解支援的位置,請參閱「 Managed Service for Apache Kafka 位置」。
這項指令會以非同步方式執行,並傳回作業 ID:
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
如要追蹤建立作業的進度,請使用 gcloud managed-kafka
operations describe 指令:
gcloud managed-kafka operations describe OPERATION_ID \ --location=REGION
叢集準備就緒後,這項指令的輸出內容會包含 state:
ACTIVE 項目。詳情請參閱「 監控叢集建立作業」。
必要的角色
如要取得為叢集產生合成資料所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Dataflow 開發人員 (
roles/dataflow.developer) - 專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備為叢集生成合成資料所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要為叢集產生合成資料,必須具備下列權限:
-
dataflow.jobs.create -
dataflow.jobs.get -
managedkafka.clusters.get -
managedkafka.topics.get -
managedkafka.topics.create -
managedkafka.topics.publish -
resourcemanager.projects.setIamPolicy
如要確保 Compute Engine 預設服務帳戶具備執行 Dataflow 工作所需的權限,請要求管理員在專案中,將下列 IAM 角色授予 Compute Engine 預設服務帳戶:
- Dataflow 工作者 (
roles/dataflow.worker) - 代管 Kafka 用戶端 (
roles/managedkafka.client)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,將必要權限授予 Compute Engine 預設服務帳戶。
如果您有權授予 IAM 角色,Google Cloud 控制台會在生成合成資料的過程中,提示您授予必要角色。如果您沒有授予角色的權限,控制台會顯示訊息,要求您請管理員授予必要權限。
產生合成資料
如要建立及啟動 Dataflow 工作,為 Kafka 主題生成合成資料,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「Managed Service for Apache Kafka」>「Clusters」(叢集) 頁面。
按一下叢集名稱,例如
test-cluster。選取「來源」分頁標籤。
在「來源」頁面的「產生合成資料」資訊卡中,按一下「建立 Dataflow 工作」。「產生資料」窗格隨即開啟。
在「Produce Data」窗格中,從「Kafka topic」下拉式清單選取主題,例如
test-topic。如果沒有主題,請建立一個:- 在「Kafka topic」(Kafka 主題) 下拉式清單中,按一下「Create topic」(建立主題)。「建立主題」窗格隨即開啟。
- 在「Topic name」(主題名稱) 欄位中輸入
test-topic。 - 保留「Partition count」(分區計數) (
3) 和「Replication factor」(複寫因數) (3) 的預設值。 - 點選「建立」。
在「輸出率 (QPS)」欄位中,輸入您希望產生器產生的每秒查詢次數率,例如
100。這可讓您測試叢集如何處理不同負載。如果出現警告,指出 Dataflow 服務帳戶缺少必要權限,請按一下「授權」,指派下列角色:
- Dataflow 工作者 (
roles/dataflow.worker) - 代管 Kafka 用戶端 (
roles/managedkafka.client)
- Dataflow 工作者 (
在「產生資料」窗格中,按一下「建立」,啟動 Dataflow 工作。
系統會顯示通知,指出已建立 Dataflow 工作。
在通知中按一下「查看工作」,開啟「Dataflow Job details」(Dataflow 工作詳細資料) 頁面,觀察工作圖表、狀態和執行指標。
查看叢集指標
Dataflow 工作啟動後,請觀察流入叢集的合成資料:
在
test-cluster的「Cluster details」(叢集詳細資料) 頁面中,按一下「Monitoring」(監控) 分頁標籤。查看「位元率」和「生產處理量最高的前 5 個主題」圖表,確認資料是否正積極產生至主題。
查看訊息
請使用下列其中一種方法,確認合成訊息是否發布至主題。
在 Kafka 指令列工具中查看
如要使用用戶端 VM 上的 Kafka CLI 工具,直接從叢集取用訊息,請按照下列步驟操作:
使用 SSH 連線至用戶端 VM。如果尚未設定用戶端 VM,請參閱「建立用戶端 VM」。
從 Google Cloud 控制台取得叢集的啟動伺服器位址,並在用戶端 VM 上設為環境變數:
在 Google Cloud 控制台中,前往「Managed Service for Apache Kafka」>「Clusters」(叢集) 頁面。
按一下叢集名稱,例如
test-cluster。在「叢集詳細資料」頁面中,按一下「設定」。
複製「Bootstrap URL」(啟動網址) 下方列出的值。
在用戶端 VM 上設定環境變數:
```sh export BOOTSTRAP="BOOTSTRAP_URL" ```將
BOOTSTRAP_URL替換為您複製的啟動程序位址。執行
kafka-console-consumer.sh指令來讀取訊息:kafka-console-consumer.sh \ --bootstrap-server $BOOTSTRAP \ --topic TOPIC_ID \ --from-beginning \ --consumer.config client.properties將 TOPIC_ID 替換為主題名稱,例如
test-topic。主控台會顯示所取用的串流合成遊戲資料記錄。
按下 Ctrl+C 鍵即可停止取用訊息。
在 BigQuery 中查看
如要將 Kafka 主題的資料串流至 BigQuery,並查看記錄,請按照下列步驟操作:
由於合成資料是原始 JSON,您必須先在 BigQuery 中手動建立目的地資料表,才能建立連接器。如要瞭解如何建立資料表,請參閱建立含有結構定義的空白資料表。在資料集中建立名為
test-topic的資料表,並套用下列結構定義:[ {"name": "eventId", "type": "STRING"}, {"name": "eventTimestamp", "type": "INTEGER"}, {"name": "ipv4", "type": "STRING"}, {"name": "ipv6", "type": "STRING"}, {"name": "country", "type": "STRING"}, {"name": "username", "type": "STRING"}, {"name": "quest", "type": "STRING"}, {"name": "score", "type": "INTEGER"}, {"name": "completed", "type": "BOOLEAN"} ]在 Connect 叢集中建立 BigQuery 接收器連接器,將主題中的訊息串流至 BigQuery 資料表。設定連接器時,請使用下列範例屬性,並將
PROJECT_ID替換為您的專案 ID:bigQueryPartitionDecorator=false connector.class=com.wepay.kafka.connect.bigquery.BigQuerySinkConnector defaultDataset=test_dataset key.converter=org.apache.kafka.connect.storage.StringConverter project=PROJECT_ID tasks.max=3 topics=test-topic value.converter=org.apache.kafka.connect.json.JsonConverter value.converter.schemas.enable=false連接器開始串流資料後,請前往 Google Cloud 控制台的「BigQuery」BigQuery頁面。
在「Explorer」面板中展開專案 ID,然後選取資料集
test_dataset。按一下資料表名稱
test-topic。按一下「預覽」分頁標籤,查看串流的綜合記錄。 或者,按一下「撰寫新查詢」,然後執行下列 SQL 查詢:
SELECT * FROM `PROJECT_ID.DATASET_ID.TABLE_ID` LIMIT 10;更改下列內容:
- PROJECT_ID:專案 ID
- DATASET_ID:資料集 ID,例如
test_dataset - TABLE_ID:資料表 ID,例如
test-topic
按一下「執行」,即可在「查詢結果」窗格中查看範例記錄。
注意:請勿使用
SELECT COUNT(*)查詢驗證記錄。 由於連接器使用 BigQuery Streaming API,資料一開始會寫入串流緩衝區。使用SELECT *時,資料會立即顯示,但列數可能需要幾分鐘才會更新。
清除所用資源
為了避免系統向您的 Google Cloud 帳戶收取本頁面所用資源的費用,請按照下列步驟操作。
前往 Google Cloud 控制台的「Dataflow Jobs」(Dataflow 工作) 頁面。
按一下為主題建立的工作名稱。
按一下「停止」。
選取「取消」,然後點按「停止工作」。
選用:如果不再需要 Kafka 叢集,請前往「Managed Service for Apache Kafka Clusters」(Managed Service for Apache Kafka 叢集) 頁面,選取
test-cluster,然後按一下「Delete」(刪除)。