日志数据是数据存储领域增长最快的细分市场之一。它也是最复杂的领域之一。有几种产品和解决方案具有重叠的用例和令人困惑的营销。
本文着眼于 Parseable,一个日志存储和可观测性平台。Parseable 致力于提供更好的用户体验,具有易于部署和使用的界面以及简单的云原生架构。我还将展示如何使用 FluentBit 设置 Parseable 以存储日志。
什么是 Parseable?
Parseable 是一个免费开源的日志存储和可观测性平台。Parseable 用 Rust 编写,利用数据压缩、存储和网络方面的进步,带来一个简单、高效且开箱即用的日志平台。
构建 Parseable 的一些核心概念是
免费索引
传统上,像 Elastic 这样的文本搜索引擎也兼作日志存储平台。这是有道理的,因为必须搜索日志数据才能真正有用。但是索引的成本很高。它占用大量 CPU 资源并减慢摄取速度。此外,这些系统生成的索引数据与原始日志数据的存储量处于同一数量级。这使存储成本翻倍并增加了复杂性。Parseable 改变了这一点。借助列式数据格式 (parquet),可以有效地压缩和查询日志数据,而无需对其进行索引。
数据和内容的所有权
以 parquet 作为存储格式并存储在标准对象存储桶中,用户拥有他们的日志数据,并且可以完全访问实际内容。这意味着用户可以轻松使用 Spark、Presto 或 TensorFlow 等分析工具从数据中提取更多价值。此功能非常强大,开辟了数据分析的新途径。
流式模式
日志通常本质上是半结构化的,并且在不断发展。例如,开发人员可能会从这样的日志模式开始
{
"Status": "Ready",
"Application": "Example"
}
但是随着收集更多信息,日志模式可能会演变为
{
"Status": "Ready",
"Application": {
"UserID": "3187F492-8449-4486-A2A0-015AE34F1D09",
"Name": "Example"
}
}
工程和 SRE 团队经常面临与模式相关的问题。Parseable 通过流式模式方法解决了这个问题,该方法允许用户动态更改模式。
简单的摄取
当前日志平台的摄取机制非常复杂,有多种可用的协议和连接器。Parseable 旨在使日志摄取尽可能简单。结果是您可以使用 HTTP POST 调用将日志发送到 Parseable。无需复杂的 SDK。
如果您想使用像 FluentBit、Vector、LogStash 或其他日志代理怎么办?几乎所有主要的日志收集器都支持 HTTP,因此 Parseable 已经与您最喜欢的日志收集代理兼容。
开始使用
您可以使用 Docker 镜像来试用 Parseable。此镜像显示了演示模式下的 Parseable,使用公开可访问的对象存储。
$ cat << EOF > parseable-env
P_S3_URL=https://minio.parseable.io:9000
P_S3_ACCESS_KEY=minioadmin
P_S3_SECRET_KEY=minioadmin
P_S3_REGION=us-east-1
P_S3_BUCKET=parseable
P_LOCAL_STORAGE=/data
P_USERNAME=parseable
P_PASSWORD=parseable
EOF
$ mkdir -p /tmp/data
$ docker run \
-p 8000:8000 \
--env-file parseable-env \
-v /tmp/data:/data \
parseable/parseable:latest
使用此处传递的凭据登录 Parseable UI(即 parseable
和 parseable
)。演示已经包含一些数据,因为 Parseable 指向公开开放的存储桶。
在向 Parseable 发送任何数据之前,请务必将存储桶和凭据更改为您的对象存储实例。
请参阅文档,了解 Parseable 的工作原理以及如何摄取日志。
设置 FluentBit 以将日志发送到 Parseable
您可以使用 Docker Compose 文件来配置 Parseable 和 FluentBit,从而更轻松地根据需要进行设置和拆卸。
首先,将此文件另存为目录中的 fluent-bit.conf
。该文件是用于将数据发送到 Parseable 的配置。
[SERVICE]
Flush 5
Daemon Off
Log_Level debug
[INPUT]
Name dummy
Tag dummy
[OUTPUT]
Name http
Match *
Host parseable
http_User parseable
http_Passwd parseable
format json
Port 8000
Header X-P-META-meta1 value1
Header X-P-TAG-tag1 value1
URI /api/v1/logstream/fluentbit1
Json_date_key timestamp
Json_date_format iso8601
现在,将以下文件另存为与上述目录相同的目录中的 docker-compose.yaml
version: "3.7"
services:
fluent-bit:
image: fluent/fluent-bit
volumes:
- ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
depends_on:
- parseable
parseable:
image: parseable/parseable
ports:
- "8000:8000"
environment:
- P_S3_URL=https://minio.parseable.io:9000
- P_S3_ACCESS_KEY=minioadmin
- P_S3_SECRET_KEY=minioadmin
- P_S3_REGION=us-east-1
- P_S3_BUCKET=parseable
- P_LOCAL_STORAGE=/tmp/data
- P_USERNAME=parseable
- P_PASSWORD=parseable
docker-compose.yaml
引用 fluent-bit.conf
文件,并将其作为配置文件传递给 FluentBit 容器。
Parseable 使用默认配置(如上述 Docker 设置中)进行部署。您可以在 http://localhost:8000 运行的 Parseable 控制台中观察 FluentBit 容器发送到 Parseable 的数据。
总结
在本文中,您首次了解了 Parseable,这是一款用 Rust 构建的开源日志存储和分析平台。一个简单的 Docker 命令即可让您开始使用 Parseable,以便您可以体验 UI 并将 FluentBit 建立为数据源。如果您认为这看起来太容易了,那么可能是时候尝试 Parseable 了!
评论已关闭。