|
| 1 | +--- |
| 2 | +title: ไฝฟ็จ Vector ่ชๅจๅๅ ่ฝฝ JSON ๆฅๅฟ |
| 3 | +--- |
| 4 | + |
| 5 | +ๅจๆฌๆ็จไธญ๏ผๆไปฌๅฐๆจกๆๆฌๅฐ็ๆๆฅๅฟ๏ผไฝฟ็จ [Vector](https://vector.dev/) ๆถ้ๆฅๅฟ๏ผๅฐๅฎไปฌๅญๅจๅจ S3 ไธญ๏ผๅนถไฝฟ็จ่ฎกๅไปปๅก่ชๅจๅๅฐๅฎไปฌๅ ่ฝฝๅฐ Databend Cloud ไธญใ |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | +## ๅผๅงไนๅ |
| 10 | + |
| 11 | +ๅจๅผๅงไนๅ๏ผ่ฏท็กฎไฟๅทฒๅๅคๅฅฝไปฅไธๅ
ๅณๆกไปถ๏ผ |
| 12 | + |
| 13 | +- **Amazon S3 ๅญๅจๆกถ**๏ผไธไธช S3 ๅญๅจๆกถ๏ผ็จไบๅญๅจ Vector ๆถ้็ๆฅๅฟใ[ไบ่งฃๅฆไฝๅๅปบ S3 ๅญๅจๆกถ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)ใ |
| 14 | +- **AWS ๅญ่ฏ**๏ผๅ
ทๆ่ถณๅคๆ้่ฎฟ้ฎๆจ็ S3 ๅญๅจๆกถ็ AWS ่ฎฟ้ฎๅฏ้ฅ ID ๅ็งๅฏ่ฎฟ้ฎๅฏ้ฅใ[็ฎก็ๆจ็ 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ใ |
| 17 | + |
| 18 | +## ๆญฅ้ชค 1๏ผๅจ S3 ๅญๅจๆกถไธญๅๅปบ็ฎๆ ๆไปถๅคน |
| 19 | + |
| 20 | +ไธบไบๅญๅจ Vector ๆถ้็ๆฅๅฟ๏ผ่ฏทๅจๆจ็ S3 ๅญๅจๆกถไธญๅๅปบไธไธชๅไธบ `logs` ็ๆไปถๅคนใๅจๆฌๆ็จไธญ๏ผๆไปฌไฝฟ็จ `s3://databend-doc/logs/` ไฝไธบ็ฎๆ ไฝ็ฝฎใ |
| 21 | + |
| 22 | +ๆญคๅฝไปคๅจ `databend-doc` ๅญๅจๆกถไธญๅๅปบไธไธชๅไธบ `logs` ็็ฉบๆไปถๅคน๏ผ |
| 23 | + |
| 24 | +```bash |
| 25 | +aws s3api put-object --bucket databend-doc --key logs/ |
| 26 | +``` |
| 27 | + |
| 28 | +## ๆญฅ้ชค 2๏ผๅๅปบๆฌๅฐๆฅๅฟๆไปถ |
| 29 | + |
| 30 | +้่ฟๅๅปบๆฌๅฐๆฅๅฟๆไปถๆฅๆจกๆๆฅๅฟ็ๆใๅจๆฌๆ็จไธญ๏ผๆไปฌไฝฟ็จ `/Users/eric/Documents/logs/app.log` ไฝไธบๆไปถ่ทฏๅพใ |
| 31 | + |
| 32 | +ๅฐไปฅไธ JSON ่กๆทปๅ ๅฐๆไปถไธญ๏ผไปฅ่กจ็คบ็คบไพๆฅๅฟไบไปถ๏ผ |
| 33 | + |
| 34 | +```json title='app.log' |
| 35 | +{"user_id": 1, "event": "login", "timestamp": "2024-12-08T10:00:00Z"} |
| 36 | +{"user_id": 2, "event": "purchase", "timestamp": "2024-12-08T10:05:00Z"} |
| 37 | +``` |
| 38 | + |
| 39 | +## ๆญฅ้ชค 3๏ผ้
็ฝฎๅนถ่ฟ่ก Vector |
| 40 | + |
| 41 | +1. ๅจๆฌๅฐๆบๅจไธๅๅปบไธไธชๅไธบ `vector.yaml` ็ Vector ้
็ฝฎๆไปถใๅจๆฌๆ็จไธญ๏ผๆไปฌๅจ `/Users/eric/Documents/vector.yaml` ๅๅปบๅฎ๏ผๅ
ๅฎนๅฆไธ๏ผ |
| 42 | + |
| 43 | +```yaml title='vector.yaml' |
| 44 | +sources: |
| 45 | + logs: |
| 46 | + type: file |
| 47 | + include: |
| 48 | + - "/logs/app.log" |
| 49 | + read_from: beginning |
| 50 | + |
| 51 | +transforms: |
| 52 | + extract_message: |
| 53 | + type: remap |
| 54 | + inputs: |
| 55 | + - "logs" |
| 56 | + source: | |
| 57 | + . = parse_json(.message) ?? {} |
| 58 | +
|
| 59 | +sinks: |
| 60 | + s3: |
| 61 | + type: aws_s3 |
| 62 | + inputs: |
| 63 | + - "extract_message" |
| 64 | + bucket: databend-doc |
| 65 | + region: us-east-2 |
| 66 | + key_prefix: "logs/" |
| 67 | + content_type: "text/plain" |
| 68 | + encoding: |
| 69 | + codec: "native_json" |
| 70 | + auth: |
| 71 | + access_key_id: "<your-access-key-id>" |
| 72 | + secret_access_key: "<your-secret-access-key>" |
| 73 | +``` |
| 74 | +
|
| 75 | +2. ไฝฟ็จ Docker ๅฏๅจ Vector๏ผๆ ๅฐ้
็ฝฎๆไปถๅๆฌๅฐๆฅๅฟ็ฎๅฝ๏ผ |
| 76 | +
|
| 77 | +```bash |
| 78 | +docker run \ |
| 79 | + -d \ |
| 80 | + -v /Users/eric/Documents/vector.yaml:/etc/vector/vector.yaml:ro \ |
| 81 | + -v /Users/eric/Documents/logs:/logs \ |
| 82 | + -p 8686:8686 \ |
| 83 | + --name vector \ |
| 84 | + timberio/vector:nightly-alpine |
| 85 | +``` |
| 86 | + |
| 87 | +3. ็จ็ญ็ๅป๏ผ็ถๅๆฃๆฅๆฏๅฆๆๆฅๅฟๅทฒๅๆญฅๅฐ S3 ็ `logs` ๆไปถๅคนไธญ๏ผ |
| 88 | + |
| 89 | +```bash |
| 90 | +aws s3 ls s3://databend-doc/logs/ |
| 91 | +``` |
| 92 | + |
| 93 | +ๅฆๆๆฅๅฟๆไปถๅทฒๆๅๅๆญฅๅฐ S3๏ผๆจๅบ่ฏฅไผ็ๅฐ็ฑปไผผไปฅไธ็่พๅบ๏ผ |
| 94 | + |
| 95 | +```bash |
| 96 | +2024-12-10 15:22:13 0 |
| 97 | +2024-12-10 17:52:42 112 1733871161-7b89e50a-6eb4-4531-8479-dd46981e4674.log.gz |
| 98 | +``` |
| 99 | + |
| 100 | +็ฐๅจ๏ผๆจๅฏไปฅไปๅญๅจๆกถไธญไธ่ฝฝๅๆญฅ็ๆฅๅฟๆไปถ๏ผ |
| 101 | + |
| 102 | +```bash |
| 103 | +aws s3 cp s3://databend-doc/logs/1733871161-7b89e50a-6eb4-4531-8479-dd46981e4674.log.gz ~/Documents/ |
| 104 | +``` |
| 105 | + |
| 106 | +ไธๅๅงๆฅๅฟ็ธๆฏ๏ผๅๆญฅ็ๆฅๅฟไธบ NDJSON ๆ ผๅผ๏ผๆฏไธช่ฎฐๅฝ้ฝๅ
่ฃนๅจไธไธชๅค้จ็ `log` ๅญๆฎตไธญ๏ผ |
| 107 | + |
| 108 | +```json |
| 109 | +{"log":{"event":"login","timestamp":"2024-12-08T10:00:00Z","user_id":1}} |
| 110 | +{"log":{"event":"purchase","timestamp":"2024-12-08T10:05:00Z","user_id":2}} |
| 111 | +``` |
| 112 | + |
| 113 | +## ๆญฅ้ชค 4๏ผๅจ Databend Cloud ไธญๅๅปบไปปๅก |
| 114 | + |
| 115 | +1. ๆๅผไธไธชๅทฅไฝ่กจ๏ผๅนถๅๅปบไธไธชๅค้จ Stage๏ผ้พๆฅๅฐๅญๅจๆกถไธญ็ `logs` ๆไปถๅคน๏ผ |
| 116 | + |
| 117 | +```sql |
| 118 | +CREATE STAGE mylog 's3://databend-doc/logs/' CONNECTION=( |
| 119 | + ACCESS_KEY_ID = '<your-access-key-id>', |
| 120 | + SECRET_ACCESS_KEY = '<your-secret-access-key>' |
| 121 | +); |
| 122 | +``` |
| 123 | + |
| 124 | +ไธๆฆ Stage ๆๅๅๅปบ๏ผๆจๅฏไปฅๅๅบๅ
ถไธญ็ๆไปถ๏ผ |
| 125 | + |
| 126 | +```sql |
| 127 | +LIST @mylog; |
| 128 | + |
| 129 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| 130 | +โ name โ size โ md5 โ last_modified โ creator โ |
| 131 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโค |
| 132 | +โ 1733871161-7b89e50a-6eb4-4531-8479-dd46981e4674.log.gz โ 112 โ "231ddcc590222bfaabd296b151154844" โ 2024-12-10 22:52:42.000 +0000 โ NULL โ |
| 133 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| 134 | +``` |
| 135 | + |
| 136 | +2. ๅๅปบไธไธช่กจ๏ผๅ
ถๅๆ ๅฐๅฐๆฅๅฟไธญ็ๅญๆฎต๏ผ |
| 137 | + |
| 138 | +```sql |
| 139 | +CREATE TABLE logs ( |
| 140 | + event String, |
| 141 | + timestamp Timestamp, |
| 142 | + user_id Int32 |
| 143 | +); |
| 144 | +``` |
| 145 | + |
| 146 | +3. ๅๅปบไธไธช่ฎกๅไปปๅก๏ผๅฐๆฅๅฟไปๅค้จ Stage ๅ ่ฝฝๅฐ `logs` ่กจไธญ๏ผ |
| 147 | + |
| 148 | +```sql |
| 149 | +CREATE TASK IF NOT EXISTS myvectortask |
| 150 | + WAREHOUSE = 'eric' |
| 151 | + SCHEDULE = 1 MINUTE |
| 152 | + SUSPEND_TASK_AFTER_NUM_FAILURES = 3 |
| 153 | +AS |
| 154 | +COPY INTO logs |
| 155 | +FROM ( |
| 156 | + SELECT $1:log:event, $1:log:timestamp, $1:log:user_id |
| 157 | + FROM @mylog/ |
| 158 | +) |
| 159 | +FILE_FORMAT = (TYPE = NDJSON, COMPRESSION = AUTO) |
| 160 | +MAX_FILES = 10000 |
| 161 | +PURGE = TRUE; |
| 162 | +``` |
| 163 | + |
| 164 | +4. ๅฏๅจไปปๅก๏ผ |
| 165 | + |
| 166 | +```sql |
| 167 | +ALTER TASK myvectortask RESUME; |
| 168 | +``` |
| 169 | + |
| 170 | +็จ็ญ็ๅป๏ผ็ถๅๆฃๆฅๆฅๅฟๆฏๅฆๅทฒๅ ่ฝฝๅฐ่กจไธญ๏ผ |
| 171 | + |
| 172 | +```sql |
| 173 | +SELECT * FROM logs; |
| 174 | + |
| 175 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| 176 | +โ event โ timestamp โ user_id โ |
| 177 | +โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโค |
| 178 | +โ login โ 2024-12-08 10:00:00 โ 1 โ |
| 179 | +โ purchase โ 2024-12-08 10:05:00 โ 2 โ |
| 180 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| 181 | +``` |
| 182 | + |
| 183 | +ๅฆๆๆจ็ฐๅจ่ฟ่ก `LIST @mylog;`๏ผๆจๅฐ็ไธๅฐไปปไฝๆไปถใ่ฟๆฏๅ ไธบไปปๅก้
็ฝฎไบ `PURGE = TRUE`๏ผๅจๆฅๅฟๅ ่ฝฝๅไผไป S3 ไธญๅ ้คๅๆญฅ็ๆไปถใ |
| 184 | + |
| 185 | +็ฐๅจ๏ผ่ฎฉๆไปฌๅจๆฌๅฐๆฅๅฟๆไปถ `app.log` ไธญๆจกๆ็ๆไธคๆกๆฐ็ๆฅๅฟ๏ผ |
| 186 | + |
| 187 | +```bash |
| 188 | +echo '{"user_id": 3, "event": "logout", "timestamp": "2024-12-08T10:10:00Z"}' >> /Users/eric/Documents/logs/app.log |
| 189 | +echo '{"user_id": 4, "event": "login", "timestamp": "2024-12-08T10:15:00Z"}' >> /Users/eric/Documents/logs/app.log |
| 190 | +``` |
| 191 | + |
| 192 | +็จ็ญ็ๅป๏ผ็ญๅพ
ๆฅๅฟๅๆญฅๅฐ S3๏ผ`logs` ๆไปถๅคนไธญๅบๅบ็ฐไธไธชๆฐๆไปถ๏ผใ็ถๅ๏ผ่ฎกๅไปปๅกๅฐๆๆฐ็ๆฅๅฟๅ ่ฝฝๅฐ่กจไธญใๅฆๆๆจๅๆฌกๆฅ่ฏข่กจ๏ผๆจๅฐๆพๅฐ่ฟไบๆฅๅฟ๏ผ |
| 193 | + |
| 194 | +```sql |
| 195 | +SELECT * FROM logs; |
| 196 | + |
| 197 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| 198 | +โ event โ timestamp โ user_id โ |
| 199 | +โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโค |
| 200 | +โ logout โ 2024-12-08 10:10:00 โ 3 โ |
| 201 | +โ login โ 2024-12-08 10:15:00 โ 4 โ |
| 202 | +โ login โ 2024-12-08 10:00:00 โ 1 โ |
| 203 | +โ purchase โ 2024-12-08 10:05:00 โ 2 โ |
| 204 | +โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| 205 | +``` |
0 commit comments