日志摄入
日志摄入提供了一种将非结构化日志数据转换为结构化数据并摄入到 UDB-SX 中的方法。结构化日志数据允许在基于数据格式搜索日志事件时,进行更好的查询和筛选。
开始使用日志摄入
UDB-SX 日志摄入包含三个组件 — Data Prepper、UDB-SX 和 UDB-SX Dashboards。Data Prepper 仓库包含几个示例应用(示例可联系售前工作人员获取),您可以用它们来入门。
数据基本流程

示例
本示例模拟了将日志条目写入日志文件,然后由 Data Prepper 处理并存储到 UDB-SX 中的过程。
下载或克隆 Data Prepper 仓库(此处文档可联系工作人员获取)。然后导航到 examples/log-ingestion/ 并在文本编辑器中打开 docker-compose.yml。该文件包含以下容器:
Fluent Bit (
fluent-bit)Data Prepper (
data-prepper)一个单节点 UDB-SX 集群 (
opensearch)UDB-SX Dashboards (
opensearch-dashboards)
关闭文件并运行 docker compose up --build 来启动容器。
容器启动后,您的摄入流水线就设置完成并准备好摄入日志数据。fluent-bit 容器被配置为从 test.log 读取日志数据。运行以下命令来生成要发送到日志摄入流水线的日志数据。
echo '63.173.168.120 - - [04/Nov/2021:15:07:25 -0500] "GET /search/tag/list HTTP/1.0" 200 5003' >> test.log
Fluent-Bit 将收集日志数据并将其发送给 Data Prepper:
[2021/12/02 15:35:41] [ info] [output:http:http.0] data-prepper:2021, HTTP status=200
200 OK
```
Data Prepper 将处理日志并为其建立索引:
```
2021-12-02T15:35:44,499 [log-pipeline-processor-worker-1-thread-1] INFO com.amazon.dataprepper.pipeline.ProcessWorker - log-pipeline Worker: Processing 1 records from buffer
```
这应该会导致一个文档根据 `log_pipeline.yaml` 文件中的定义,被写入 UDB-SX 集群的 `apache-logs` 索引中。
运行以下命令查看 UDB-SX 集群中的一个原始文档:
```bash
curl -X GET -u 'admin:<custom-admin-password>' -k 'https://localhost:10200/apache_logs/_search?pretty&size=1'
```
响应应显示已解析的日志数据:
```
"hits" : [
{
"_index" : "apache_logs",
"_type" : "_doc",
"_id" : "yGrJe30BgI2EWNKtDZ1g",
"_score" : 1.0,
"_source" : {
"date" : 1.638459307042312E9,
"log" : "63.173.168.120 - - [04/Nov/2021:15:07:25 -0500] \"GET /search/tag/list HTTP/1.0\" 200 5003",
"request" : "/search/tag/list",
"auth" : "-",
"ident" : "-",
"response" : "200",
"bytes" : "5003",
"clientip" : "63.173.168.120",
"verb" : "GET",
"httpversion" : "1.0",
"timestamp" : "04/Nov/2021:15:07:25 -0500"
}
}
]
```
相同的数据可以在 UDB-SX Dashboards 中通过访问 **Discover** 页面并搜索 `apache_logs` 索引来查看。请注意,如果是第一次搜索该索引,必须在 UDB-SX Dashboards 中创建该索引。