11--- 
2- title : 使用 Vector 自动化  JSON 日志加载  
2+ title : 使用 Vector 自动加载  JSON 日志  
33--- 
44
5- 在本教程中,我们将模拟在本地生成日志,使用 [ Vector] ( https://vector.dev/ )  收集它们,将它们存储在  S3 中,并使用计划任务自动将它们导入到  Databend Cloud 中 。
5+ 在本教程中,我们将模拟在本地生成日志,使用 [ Vector] ( https://vector.dev/ )  收集日志,将其存储到  S3,并通过定时任务自动将其摄取到  Databend Cloud。
66
7- ![ 使用 Vector 自动化  JSON 日志加载 ] ( @site/static/img/documents/tutorials/vector-tutorial.png ) 
7+ ![ 使用 Vector 自动加载  JSON 日志 ] ( @site/static/img/documents/tutorials/vector-tutorial.png ) 
88
9- ## 开始之前  
9+ ## 准备工作  
1010
11- 在开始之前,请确保您已准备好以下先决条件 :
11+ 开始前,请确保已准备好以下先决条件 :
1212
13- -  ** Amazon S3 Bucket ** : 一个 S3 bucket,用于存储  Vector 收集的日志。[ 了解如何创建 S3 bucket ] ( https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html ) 。
14- -  ** AWS 凭证** :  AWS Access Key ID 和 Secret Access Key,具有访问您的 S3 bucket 的足够权限。 [ 管理您的  AWS 凭证] ( https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys ) 。
15- -  ** AWS CLI** :  确保已安装 [ AWS CLI] ( https://aws.amazon.com/cli/ )  并配置了访问您的  S3 bucket 的必要权限 。
16- -  ** Docker** : 确保您的本地机器上已安装  [ Docker] ( https://www.docker.com/ ) ,因为它将用于设置  Vector。
13+ -  ** Amazon S3 存储桶 ** :用于存放  Vector 收集的日志。  [ 了解如何创建 S3 存储桶 ] ( https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html ) 。
14+ -  ** AWS 凭证** :具备访问 S3 存储桶权限的  AWS Access Key ID 和 Secret Access Key。  [ 管理  AWS 凭证] ( https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys ) 。
15+ -  ** AWS CLI** : 确保已安装 [ AWS CLI] ( https://aws.amazon.com/cli/ )  并配置好访问  S3 存储桶所需的权限 。
16+ -  ** Docker** :确保本地已安装  [ Docker] ( https://www.docker.com/ ) ,用于部署  Vector。
1717
18- ## 步骤 1 :在 S3 Bucket 中创建目标文件夹  
18+ ## 第一步 :在 S3 存储桶中创建目标文件夹  
1919
20- 要存储  Vector 收集的日志,请在您的  S3 bucket 中创建一个名为  logs 的文件夹。在本教程中,我们使用  ` s3://databend-doc/logs/ `  作为目标位置 。
20+ 为存放  Vector 收集的日志,请在  S3 存储桶中创建一个名为  logs 的文件夹。本教程使用  ` s3://databend-doc/logs/ `  作为目标路径 。
2121
22- 此命令在  ` databend-doc `  bucket 中创建一个名为  ` logs `  的空文件夹:
22+ 以下命令在  databend-doc 存储桶中创建名为  logs 的空文件夹:
2323
2424``` bash 
2525aws s3api put-object --bucket databend-doc --key logs/
2626``` 
2727
28- ## 步骤 2 :创建本地日志文件 
28+ ## 第二步 :创建本地日志文件 
2929
30- 通过创建本地日志文件来模拟日志生成。在本教程中,我们使用  ` /Users/eric/Documents/logs/app.log `  作为文件路径。
30+ 通过创建本地日志文件来模拟日志生成。本教程使用  ` /Users/eric/Documents/logs/app.log `  作为文件路径。
3131
32- 将以下 JSON 行添加到文件中以表示示例日志事件 :
32+ 将以下 JSON 行添加到文件中,作为示例日志事件 :
3333
3434``` json  title='app.log'
3535{"user_id" : 1 , "event" : " login"  , "timestamp" : " 2024-12-08T10:00:00Z"  }
3636{"user_id" : 2 , "event" : " purchase"  , "timestamp" : " 2024-12-08T10:05:00Z"  }
3737``` 
3838
39- ## 步骤 3 :配置并运行 Vector 
39+ ## 第三步 :配置并运行 Vector 
4040
41- 1 .  在您的本地机器上创建一个名为  ` vector.yaml `  的 Vector 配置文件。在本教程中,我们在  ` /Users/eric/Documents/vector.yaml `  中创建它 ,内容如下:
41+ 1 .  在本地创建名为  ` vector.yaml `  的 Vector 配置文件。本教程将其放在  ` /Users/eric/Documents/vector.yaml ` ,内容如下:
4242
4343``` yaml  title='vector.yaml'
4444sources :
@@ -63,16 +63,16 @@ sinks:
6363      - " extract_message" 
6464    bucket : databend-doc 
6565    region : us-east-2 
66-     key_prefix : " logs/" 
67-     content_type : " text/plain" 
66+     key_prefix : " logs/"   
67+     content_type : " text/plain"   
6868    encoding :
69-       codec : " native_json" 
69+       codec : " native_json"   
7070    auth :
7171      access_key_id : " <your-access-key-id>" 
7272      secret_access_key : " <your-secret-access-key>" 
7373` ` ` 
7474
75- 2. 使用 Docker 启动 Vector,映射配置文件和本地日志目录 : 
75+ 2. 使用 Docker 启动 Vector,并映射配置文件和本地日志目录 : 
7676
7777` ` ` bash 
7878docker run \ 
@@ -84,35 +84,35 @@ docker run \
8484  timberio/vector:nightly-alpine 
8585``` 
8686
87- 3 .  稍等片刻,然后检查是否有任何日志已同步到  S3 上的  ` logs `  文件夹:
87+ 3 .  稍等片刻,然后检查日志是否已同步到  S3 的  logs 文件夹:
8888
8989``` bash 
9090aws s3 ls s3://databend-doc/logs/
9191``` 
9292
93- 如果日志文件已成功同步到  S3,您应该看到类似于以下的输出 :
93+ 若日志文件已成功同步到  S3,将看到类似以下输出 :
9494
9595``` bash 
96962024-12-10 15:22:13          0
97972024-12-10 17:52:42        112 1733871161-7b89e50a-6eb4-4531-8479-dd46981e4674.log.gz
9898``` 
9999
100- 您现在可以从您的 bucket 下载同步的日志文件 :
100+ 现在可从存储桶下载已同步的日志文件 :
101101
102102``` bash 
103103aws s3 cp s3://databend-doc/logs/1733871161-7b89e50a-6eb4-4531-8479-dd46981e4674.log.gz ~ /Documents/
104104``` 
105105
106- 与原始日志相比,同步的日志采用  NDJSON 格式,每个记录都包装在一个外部  ` log `  字段中:
106+ 与原始日志相比,同步后的日志为  NDJSON 格式,每条记录被包裹在外层  ` log `  字段中:
107107
108108``` json 
109109{"log" :{"event" :" login"  ,"timestamp" :" 2024-12-08T10:00:00Z"  ,"user_id" :1 }}
110110{"log" :{"event" :" purchase"  ,"timestamp" :" 2024-12-08T10:05:00Z"  ,"user_id" :2 }}
111111``` 
112112
113- ## 步骤 4 :在 Databend Cloud 中创建任务 
113+ ## 第四步 :在 Databend Cloud 中创建任务 
114114
115- 1 .  打开一个 worksheet,并创建一个外部 Stage,链接到您的 bucket 中的  ` logs `  文件夹 :
115+ 1 .  打开工作表,创建一个指向存储桶中  logs 文件夹的外部 Stage :
116116
117117``` sql 
118118CREATE STAGE mylog ' s3://databend-doc/logs/'   CONNECTION= (
@@ -121,7 +121,7 @@ CREATE STAGE mylog 's3://databend-doc/logs/' CONNECTION=(
121121);
122122``` 
123123
124- 成功创建  Stage 后,您可以列出其中的文件 :
124+ Stage 创建成功后,可列出其中的文件 :
125125
126126``` sql 
127127LIST @mylog;
@@ -133,7 +133,7 @@ LIST @mylog;
133133└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
134134``` 
135135
136- 2 .  创建一个表,其列映射到日志中的字段 :
136+ 2 .  创建与日志字段对应的表 :
137137
138138``` sql 
139139CREATE  TABLE  logs  (
@@ -143,21 +143,21 @@ CREATE TABLE logs (
143143);
144144``` 
145145
146- 3 .  创建一个计划任务 ,将日志从外部 Stage 加载到 ` logs `  表中 :
146+ 3 .  创建定时任务 ,将日志从外部 Stage 加载到 logs 表 :
147147
148148``` sql 
149149CREATE TASK IF NOT EXISTS myvectortask
150150    WAREHOUSE =  ' eric' 
151151    SCHEDULE =  1  MINUTE
152152    SUSPEND_TASK_AFTER_NUM_FAILURES =  3 
153153AS 
154- COPY INTO logs
154+ COPY INTO logs  
155155FROM  (
156156    SELECT  $1 :log:event, $1 :log:timestamp , $1 :log:user_id
157157    FROM  @mylog/ 
158158)
159- FILE_FORMAT =  (TYPE =  NDJSON, COMPRESSION =  AUTO)
160- MAX_FILES =  10000 
159+ FILE_FORMAT =  (TYPE =  NDJSON, COMPRESSION =  AUTO)  
160+ MAX_FILES =  10000   
161161PURGE =  TRUE;
162162``` 
163163
@@ -167,7 +167,7 @@ PURGE = TRUE;
167167ALTER TASK myvectortask RESUME;
168168``` 
169169
170- 稍等片刻,然后检查日志是否已加载到表中 :
170+ 稍等片刻,检查日志是否已加载到表中 :
171171
172172``` sql 
173173SELECT  *  FROM  logs;
@@ -180,16 +180,16 @@ SELECT * FROM logs;
180180└──────────────────────────────────────────────────────────┘
181181``` 
182182
183- 如果您现在运行  ` LIST @mylog; ` ,您将看不到任何列出的文件。这是因为该任务配置为  ` PURGE = TRUE ` ,这会在加载日志后从  S3 中删除同步的文件 。
183+ 此时若运行  ` LIST @mylog; ` ,将看不到任何文件。这是因为任务配置了  ` PURGE = TRUE ` ,加载日志后会从  S3 删除已同步的文件 。
184184
185- 现在,让我们模拟在本地日志文件  ` app.log `  中生成另外两个日志 :
185+ 现在,让我们在本地日志文件  ` app.log `  中再模拟生成两条日志 :
186186
187187``` bash 
188188echo  ' {"user_id": 3, "event": "logout", "timestamp": "2024-12-08T10:10:00Z"}'   >>  /Users/eric/Documents/logs/app.log
189189echo  ' {"user_id": 4, "event": "login", "timestamp": "2024-12-08T10:15:00Z"}'   >>  /Users/eric/Documents/logs/app.log
190190``` 
191191
192- 稍等片刻,让日志同步到  S3(新文件应出现在  ` logs `  文件夹中)。然后,计划任务会将新日志加载到表中。如果您再次查询该表,您将找到这些日志 :
192+ 稍等片刻,日志将同步到  S3(logs 文件夹中会出现新文件)。随后定时任务会把新日志加载到表中。再次查询表,即可看到这些日志 :
193193
194194``` sql 
195195SELECT  *  FROM  logs;
@@ -202,4 +202,4 @@ SELECT * FROM logs;
202202│ login            │ 2024 - 12 - 08  10 :00 :00  │               1  │
203203│ purchase         │ 2024 - 12 - 08  10 :05 :00  │               2  │
204204└──────────────────────────────────────────────────────────┘
205- ``` 
205+ ``` 
0 commit comments