日志采集
日志采集提供了一种将非结构化日志数据转换为结构化数据并摄取到 OpenSearch 中的方法。结构化日志数据允许在搜索事件日志时,根据数据格式进行更优化的查询和过滤。
日志采集入门
OpenSearch 日志采集由三个组件组成——Data Prepper、OpenSearch 和 OpenSearch Dashboards。Data Prepper 仓库包含一些您可以用于入门的示例应用程序。
基本数据流
-
日志采集依赖于您在应用程序环境中添加日志收集功能,以收集和发送日志数据。
-
Data Prepper 接收日志数据,将其转换为结构化格式,并在 OpenSearch 集群上进行索引。
-
然后可以通过 OpenSearch 搜索查询或 OpenSearch Dashboards 中的“Discover”页面来探索数据。
示例
此示例模拟将日志条目写入日志文件,然后由 Data Prepper 处理并存储在 OpenSearch 中。
下载或克隆 Data Prepper 仓库。然后导航到 examples/log-ingestion/
,并在文本编辑器中打开 docker-compose.yml
。此文件包含以下容器:
- Fluent Bit (
fluent-bit
) - Data Prepper (
data-prepper
) - 单节点 OpenSearch 集群 (
opensearch
) - OpenSearch 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
这将导致单个文档写入 OpenSearch 集群的 apache-logs
索引中,如 log_pipeline.yaml
文件中所定义。
运行以下命令查看 OpenSearch 集群中的一个原始文档
curl -X GET -u 'admin:<custom-admin-password>' -k 'https://:9200/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"
}
}
]
相同的数据可以在 OpenSearch Dashboards 中通过访问“Discover”页面并搜索 apache_logs
索引来查看。请记住,如果您是第一次搜索该索引,则必须在 OpenSearch Dashboards 中创建该索引。