當資料分別儲存在Log Service的LogStore和RDS MySQL資料庫中時,您可以使用Log Service的資料加工功能,通過RDS的內網地址訪問RDS MySQL資料庫以擷取資料,進而實現資料富化。
工作原理
使用Log Service資料加工功能,通過RDS內網地址訪問RDS MySQL擷取資料進行資料富化的過程如圖所示:
方案概覽
使用Log Service資料加工功能,通過RDS內網地址訪問RDS MySQL擷取資料進行資料富化,只需三步:
-
擷取資料加工任務中進階參數配置資訊:先登入RDS控制台擷取RDS MySQL執行個體資訊,再通過OpenAPI調試頁面調用介面擷取進階參數配置資訊。
-
在源LogStore中開啟資料加工任務:然後配置資料加工規則進行資料富化。
-
將加工結果儲存到目標LogStore中:最後將加工結果資料儲存到目標LogStore。
前提條件
-
已擷取原始日誌資料。
-
RDS MySQL執行個體與Log ServiceProject需處於同一地區。
步驟一:擷取資料加工任務中進階參數配置資訊
-
登入雲資料庫RDS控制台。
-
設定IP位址區段白名單。有關白名單更多操作,請參見設定白名單。
-
在左側功能表列,單擊,填入分組名稱以及組內白名單,組內白名單需固定設定為
100.104.0.0/16。
在左側功能表列,單擊執行個體列表找到目標執行個體並單擊進入。
-
-
擷取目標執行個體ID、內網連接埠。
-
在左側功能表列,單擊基本資料,在基本資料頁面找到執行個體ID並複製。
-
在左側功能表列,單擊資料庫連接,在資料庫連接頁面查看內網連接埠:並複製。
-
-
擷取目標執行個體
VpcId和VpcCloudInstanceId。-
開啟OpenAPI調試頁面,在頁面找到DBInstanceId執行個體ID文字框並填入複製好的目標執行個體ID。關於調用的介面方法。具體詳情,請參見查詢執行個體詳情。
-
點擊調用,在調用結果頁面複製
VpcId和VpcCloudInstanceId。"VSwitchId": "xxx", "TipsLevel": 0, "PayType": "Postpaid", "LockMode": "Unlock", "DeletionProtection": false, "DBInstanceStorageType": "general_essd", "InsId": 1, "VpcId": "xxx", "ConnectionMode": "Standard", "VpcCloudInstanceId": "xxx", "RegionId": "cn-hangzhou", "ConnectionString": "xxx", "ExpireTime": ""
-
步驟二:在源LogStore中開啟資料加工任務
-
-
進入資料加工頁面。
-
在Project列表地區,單擊目標Project。
-
在頁簽中,單擊目標LogStore。
-
在查詢與分析頁面,單擊數據加工。
-
在資料加工頁面,單擊切換至資料加工(舊版)。
-
-
添加進階參數配置。
-
在頁面右上方選擇進階,單擊預覽數據。
-
在添加預覽配置頁面,單擊高級選項,添加如下配置。
重要表格裡所有配置參數中的
your_name可自訂但需保持一致,並且與加工規則中your_name也需保持一致。參數
參數值
說明
config.vpc.vpc_id.your_name
vpc-uf6mskb0b****n9yj
目標執行個體VpcId。
如何擷取請參見,擷取目標執行個體VpcId。
config.vpc.instance_id.your_name
rm-uf6e61k****ahd7-2024091513
目標執行個體ID。
如何擷取請參見,擷取目標執行個體VpcCloudInstanceId。
對於阿里雲同地區自建MySQL資料庫,使用參數config.vpc.instance_ip.your_name指定資料庫在VPC內的IP。
config.vpc.instance_port.your_name
3306
目標執行個體內網地址連接埠號碼。
如何擷取請參見,擷取目標執行個體內網連接埠。
-
配置無誤後單擊右下角確定完成配置。
-
-
編輯加工規則。
-
在編輯框中添加如下語句。
文法格式樣本如下,有關資料富化函數以及資源函數具體介紹,請參見,從RDS MySQL資料庫擷取資料進行資料富化和資源函數。
/* e_table_map() 資料富化函數。 res_rds_mysql() 拉取函數,從RDS MySQL資料庫中拉取資料庫表內容或SQL執行結果。 str_format() 字串格式化函數,res_local()中的your_name需和進階參數配置中your_name保持一致。 field 匹配欄位,在Logstore中的日誌資料與RDS MySQL資料庫表中的資料之間進行匹配時的依據欄位,只有當這個欄位在兩者中的值相同時,才能匹配成功。 output_fields 輸出欄位集合,當匹配成功後,會返回這些欄位的值,進而產生一條新的日誌。 */ e_table_map( res_rds_mysql( str_format("{}:{}", res_local("config.vpc.instance_id.your_name"), res_local("config.vpc.instance_port.your_name")), "資料庫帳號", "資料庫密碼", "資料庫名稱", table="資料庫表名" ), "field", "output_fields" )加工語句如下:
以下規則通過Log ServiceLogStore中
process_time_in_ms欄位和RDS MySQL資料庫表process_time_in_ms欄位進行匹配,只有process_time_in_ms欄位的值完全相同,才能匹配成功。匹配成功後,返回RDS MySQL資料庫表中model和purchase_price欄位及其欄位值,與LogStore中的資料拼接,產生新的資料。e_table_map( res_rds_mysql( str_format("{}:{}", res_local("config.vpc.instance_id.test"), res_local("config.vpc.instance_port.test")), "xxx", "xxx","xxx xxx", "database", table="bicycles", primary_keys="process_time_in_ms"), "process_time_in_ms", ["model","purchase_price"] )
-
-
查看加工結果。
加工結果頁簽右側運行結果資訊匯總顯示:源日誌總數 2000、丟棄條數 0、分發條數 2000、失敗 0。主表格中日誌的輸出目標均為
__default__,內容包含原始索引值對欄位(如remote_addr、request_method、request_uri、status、body_bytes_sent等),表明加工規則未對日誌進行匹配轉換,資料保持原始狀態分發至預設目標。加工規則匹配成功的日誌記錄中包含
model(XTC 800)、purchase_price(3000.00)和process_time_in_ms(788)等關鍵字段,完整結構化日誌內容:__source__ :127.0.0.1 __tag__:__receive_time__ :1725962982 __tag__:_container_ip_ :183.227.33.184 __tag__:_container_name_ :container3 __tag__:_image_name_ :image3 __tag__:_path_ :/home/local __topic__ :tomcat_access_log body_bytes_sent :6344 model :XTC 800 process_time_in_ms :788 purchase_price :3000.00 referer :www.phn.mock.com remote_addr :202.92.0.182 remote_user :v-0 request_method :GET request_protocol :HTTP/2.0 request_uri :/request/path-3/file-1 status :200 time :10/Sep/2024:09:09:35 user_agent :Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24單擊右上方預覽數據進行資料加工。
步驟三:將加工結果儲存到目標LogStore中
-
單擊右下角儲存資料加工(舊版),依次填入圖中所需資訊後點擊確定儲存。
在建立資料加工任務對話方塊中,填寫任務名稱(以etl-為首碼)、顯示名稱和任務描述,授權方式選擇預設角色。在儲存目標地區,配置目標名稱、目標Region、目標Project和目標庫,授權方式選擇預設角色。在加工範圍(資料接收時間)地區選取項目時間範圍,可選所有、某時間開始或特定時間範圍。
-
在左側日誌庫中單擊儲存了加工結果的目標LogStore,在頁面右上方,選擇資料的時間範圍。
選擇時間範圍後,請確認原始日誌頁簽中是否成功儲存加工結果資料。
加工後的日誌中包含新增的 model(值為 XTC 800)和 purchase_price(值為 3000.00)欄位,表明資料加工結果已寫入目標 LogStore。
附錄:使用內網地址訪問AnalyticDB MySQL或PolarDB MySQL資料庫
Log Service除了支援通過阿里雲內網地址訪問RDS MySQL資料庫外,還支援通過內網地址訪問AnalyticDB MySQL和PolarDB MySQL資料庫。相關配置如下所示:
-
AnalyticDB MySQL資料庫
設定進階參數配置時,config.vpc.instance_id.your_name的值需配置為AnalyticDB MySQL執行個體ID加-controller,其餘配置參考此文檔即可。
同時需配置
config.vpc.vpc_id.test1的值為對應 VPC ID,config.vpc.instance_port的值為3306。 -
PolarDB MySQL資料庫相關配置參考此文檔即可。