Parseable 入门:开源日志存储和可观测性平台

Parseable 用 Rust 编写,利用数据压缩、存储和网络方面的进步,带来一个简单、高效且开箱即用的日志平台。
1 位读者喜欢这篇文章。
diagram of planning a cloud

Opensource.com

日志数据是数据存储领域增长最快的细分市场之一。它也是最复杂的领域之一。有几种产品和解决方案具有重叠的用例和令人困惑的营销。

本文着眼于 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(即 parseableparseable)。演示已经包含一些数据,因为 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 了!

标签
User profile image.
Nitish 对开源、系统软件和初创公司的交叉领域感兴趣。他喜欢阅读和探索任何开源的东西。在空闲时间,他喜欢阅读励志书籍。他目前正在构建 Parseable - 一个开源对象存储、日志存储、管理和可观测性平台。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.