菜单
开源

使用 Jsonnet 配置 Grafana Mimir 对象存储后端

您可以从一个地方配置所有 Mimir 组件的对象存储后端。所需的最低 Jsonnet 代码如下:

jsonnet
{
  _config+:: {
    storage_backend: 'gcs',
    blocks_storage_bucket_name: 'blocks-bucket',
  }
}

storage_backend 选项必须是 azuregcss3 之一。每个提供程序都有额外的配置选项。

Amazon S3 (s3) 存储配置选项

使用 Amazon VPC 时,无需凭据即可访问 Amazon S3 存储。在这种情况下,storage_s3_secret_access_keystorage_s3_access_key_id 是可选的,可以留空,如下例所示:

jsonnet
{
  _config+:: {
    storage_backend: 's3',
    blocks_storage_bucket_name: 'blocks-bucket',
    aws_region: 'af-south-1',
  }
}

如果需要凭据,最好将其保存在 secrets 中。在这种情况下,可以使用环境变量插值:

jsonnet
{
  _config+:: {
    storage_backend: 's3',
    storage_s3_access_key_id: '$(BLOCKS_STORAGE_S3_ACCESS_KEY_ID)',
    storage_s3_secret_access_key: '$(BLOCKS_STORAGE_S3_SECRET_ACCESS_KEY)',
    aws_region: 'af-south-1',
    blocks_storage_bucket_name: 'blocks-bucket',
  }
}

Azure (azure) 存储配置选项

Azure Blob 存储中的分层命名空间必须禁用。否则,Grafana Mimir 删除块后会留下空目录。

Azure 存储客户端需要配置 storage_azure_account_namestorage_azure_account_key。最好将其保存在 secrets 中。在这种情况下,可以使用环境变量插值:

jsonnet
{
  _config+:: {
    storage_backend: 'azure',
    storage_azure_account_name: '$(STORAGE_AZURE_ACCOUNT_NAME)',
    storage_azure_account_key: '$(STORAGE_AZURE_ACCOUNT_KEY)',
    blocks_storage_bucket_name: 'blocks-bucket',
  }
}

Google Cloud Storage (gcs) 存储配置选项

配置 Google Cloud Storage 客户端有多种方法。如果您在 Google Cloud Platform 上运行 Mimir,则环境可能已经配置了凭据,在这种情况下,最低 Jsonnet 配置是有效的:

jsonnet
{
  _config+:: {
    storage_backend: 'gcs',
    blocks_storage_bucket_name: 'blocks-bucket',
  }
}

需要认证时,可以使用 storage_gcs_service_account 配置键来提供服务账户。最好将凭据保存在 secrets 中,因此可以使用环境变量插值:

jsonnet
{
  _config+:: {
    storage_backend: 'gcs',
    storage_gcs_service_account: '$(STORAGE_GCS_SERVICE_ACCOUNT)',
    blocks_storage_bucket_name: 'blocks-bucket',
  }
}

或者,您可以设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向从 secret 挂载的服务账户文件。