菜单
开源 RSS

管理存储

您可以在此处阅读 Loki 存储的高级概述

Grafana Loki 需要存储两种不同类型的数据:块(chunks)索引(indexes)

使用加速搜索(实验性)时,会使用第三种数据类型:布隆块(bloom blocks)

Loki 在独立的流中接收日志,每个流由其租户 ID 和标签集唯一标识。当来自流的日志条目到达时,它们被压缩成块(chunks)并保存在块存储中。有关块内部存储方式,请参阅块格式

索引(index)存储每个流的标签集,并将其链接到各个块。有关如何配置存储和索引的详细信息,请参阅 Loki 配置

更多信息

存储类型

✅ 支持的索引存储

  • 单一存储 TSDB 索引存储,它将 TSDB 索引文件存储在对象存储中。这是 Loki 2.8 及更新版本推荐的索引存储。
  • 单一存储 BoltDB (boltdb-shipper) 索引存储,它将 boltdb 索引文件存储在对象存储中。这是 Loki 2.0 到 2.7.x 版本推荐的存储。

❌ 已弃用的索引存储

  • Amazon DynamoDB。对此的支持已被弃用,并将在未来的版本中移除。
  • Google Bigtable。对此的支持已被弃用,并将在未来的版本中移除。
  • Apache Cassandra。对此的支持已被弃用,并将在未来的版本中移除。
  • BoltDB(在 Loki 集群模式下不起作用)
  • 文件系统(请在使用生产数据前阅读更多关于文件系统的说明,以了解其优缺点)
  • 兼容 S3 API 的存储,例如 MinIO

❌ 已弃用的块存储

  • Amazon DynamoDB。对此的支持已被弃用,并将在未来的版本中移除。
  • Google Bigtable。对此的支持已被弃用,并将在未来的版本中移除。
  • Apache Cassandra。对此的支持已被弃用,并将在未来的版本中移除。

云存储权限

S3

将 S3 用作对象存储时,需要以下权限

  • s3:ListBucket
  • s3:PutObject
  • s3:GetObject
  • s3:DeleteObject(如果运行单一存储 (boltdb-shipper) 压缩器)

资源:arn:aws:s3:::<bucket_name>, arn:aws:s3:::<bucket_name>/*

有关详细的设置指南,请参阅存储页面上的AWS 部署部分

DynamoDB

注意

DynamoDB 支持已被弃用,并将在未来的版本中移除。

将 DynamoDB 用于索引时,需要以下权限

  • dynamodb:BatchGetItem
  • dynamodb:BatchWriteItem
  • dynamodb:DeleteItem
  • dynamodb:DescribeTable
  • dynamodb:GetItem
  • dynamodb:ListTagsOfResource
  • dynamodb:PutItem
  • dynamodb:Query
  • dynamodb:TagResource
  • dynamodb:UntagResource
  • dynamodb:UpdateItem
  • dynamodb:UpdateTable
  • dynamodb:CreateTable
  • dynamodb:DeleteTable(如果 table_manager.retention_period 大于 0 秒)

资源:arn:aws:dynamodb:<aws_region>:<aws_account_id>:table/<prefix>*

  • dynamodb:ListTables

资源:*

自动伸缩

如果从表管理器启用自动伸缩,需要以下权限

Application Autoscaling
  • application-autoscaling:DescribeScalableTargets
  • application-autoscaling:DescribeScalingPolicies
  • application-autoscaling:RegisterScalableTarget
  • application-autoscaling:DeregisterScalableTarget
  • application-autoscaling:PutScalingPolicy
  • application-autoscaling:DeleteScalingPolicy

资源:*

IAM
  • iam:GetRole
  • iam:PassRole

资源:arn:aws:iam::<aws_account_id>:role/<role_name>

IBM Cloud Object Storage

将 IBM Cloud Object Storage (COS) 用作对象存储时,需要 IAM Writer 角色。

有关详细的设置指南,请参阅存储页面上的IBM Cloud Object Storage 部分

块格式

// Header
+-----------------------------------+
| Magic Number (uint32, 4 bytes)    |
+-----------------------------------+
| Version (1 byte)                  |
+-----------------------------------+
| Encoding (1 byte)                 |
+-----------------------------------+

// Blocks
+--------------------+----------------------------+
| block 1 (n bytes)  | checksum (uint32, 4 bytes) |
+--------------------+----------------------------+
| block 1 (n bytes)  | checksum (uint32, 4 bytes) |
+--------------------+----------------------------+
| ...                                             |
+--------------------+----------------------------+
| block N (n bytes)  | checksum (uint32, 4 bytes) |
+--------------------+----------------------------+

// Metas
+------------------------------------------------------------------------------------------------------------------------+
| #blocks (uvarint)                                                                                                      |
+--------------------+-----------------+-----------------+------------------+---------------+----------------------------+
| #entries (uvarint) | minTs (uvarint) | maxTs (uvarint) | offset (uvarint) | len (uvarint) | uncompressedSize (uvarint) |
+--------------------+-----------------+-----------------+------------------+---------------+----------------------------+
| #entries (uvarint) | minTs (uvarint) | maxTs (uvarint) | offset (uvarint) | len (uvarint) | uncompressedSize (uvarint) |
+--------------------+-----------------+-----------------+------------------+---------------+----------------------------+
| ...                                                                                                                    |
+--------------------+-----------------+-----------------+------------------+---------------+----------------------------+
| #entries (uvarint) | minTs (uvarint) | maxTs (uvarint) | offset (uvarint) | len (uvarint) | uncompressedSize (uvarint) |
+--------------------+-----------------+-----------------+------------------+---------------+----------------------------+
| checksum (uint32, 4 bytes)                                                                                             | 
+------------------------------------------------------------------------------------------------------------------------+

// Structured Metadata
+---------------------------------+
| #labels (uvarint)               |
+---------------+-----------------+
| len (uvarint) | value (n bytes) |
+---------------+-----------------+
| ...                             |
+---------------+-----------------+
| checksum (uint32, 4 bytes)      |
+---------------------------------+

// Footer
+-----------------------+--------------------------+
| len (uint64, 8 bytes) | offset (uint64, 8 bytes) |   // offset to Structured Metadata
+-----------------------+--------------------------+
| len (uint64, 8 bytes) | offset (uint64, 8 bytes) |   // offset to Metas
+-----------------------+--------------------------+