配置 Grafana Mimir 对象存储后端
Grafana Mimir 可以使用不同的对象存储服务来持久化包含指标数据的块,以及记录规则和 Alertmanager 状态。
Mimir 不会创建配置的存储桶,您必须自行创建。支持的后端有
注意
与 Amazon S3 类似,所选的对象存储实现不得创建目录。Grafana Mimir 没有对象存储目录的概念,因此在删除块时会留下空目录。例如,如果您使用 Azure Blob Storage,则必须禁用
要按租户配置存储保留期,请在运行时配置中设置覆盖项
Ruler 和 Alertmanager 支持本地实现(local
),它在使用本地文件系统方面类似于 filesystem
,但它是一个只读数据源,可用于将状态配置到这些组件中。
通用配置
为避免重复,您可以使用通用配置并填充common
配置块或提供 -common.storage.*
CLI 标志。
要在配置文件中使用环境变量,请确保为变量启用扩展。
注意
块存储不能与 Ruler 和 Alertmanager 存储位于同一桶的同一路径下。
使用通用配置时,请确保
blocks_storage
使用以下方式之一:
- 不同的桶,覆盖通用桶名称
- 存储前缀
如果您将块存储配置为使用与 Alertmanager 或 Ruler 存储相同的桶和存储前缀,Grafana Mimir 将无法启动。
请在下方查看设置不同对象存储的示例
注意
如果您混合使用 YAML 文件和 CLI 标志,请注意它们的优先级逻辑。
S3
common:
storage:
backend: s3
s3:
endpoint: s3.us-east-2.amazonaws.com
region: us-east-2
secret_access_key: "${AWS_SECRET_ACCESS_KEY}" # This is a secret injected via an environment variable
access_key_id: "${AWS_ACCESS_KEY_ID}" # This is a secret injected via an environment variable
blocks_storage:
s3:
bucket_name: mimir-blocks
alertmanager_storage:
s3:
bucket_name: mimir-alertmanager
ruler_storage:
s3:
bucket_name: mimir-ruler
GCS
common:
storage:
backend: gcs
gcs:
# This is an example to illustrate what the service account content should look like.
# We recommend injecting the service_account via an environment variable instead.
service_account: |
{
"type": "service_account",
"project_id": "my-project",
"private_key_id": "1234abc",
"private_key": "-----BEGIN PRIVATE KEY-----\n\n-----END PRIVATE KEY-----\n",
"client_email": "test@my-project.iam.gserviceaccount.com",
"client_id": "5678",
"auth_uri": "https://#/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test%40my-project.iam.gserviceaccount.com"
}
blocks_storage:
gcs:
bucket_name: mimir-blocks
alertmanager_storage:
gcs:
bucket_name: mimir-alertmanager
ruler_storage:
gcs:
bucket_name: mimir-ruler
Azure Blob Storage
您必须禁用分层命名空间 (hierarchical namespace),否则 Grafana Mimir 在删除块时会留下空目录。
common:
storage:
backend: azure
azure:
account_key: "${AZURE_ACCOUNT_KEY}" # This is a secret injected via an environment variable
account_name: mimirprod
endpoint_suffix: "blob.core.windows.net"
blocks_storage:
azure:
container_name: mimir-blocks
alertmanager_storage:
azure:
container_name: mimir-alertmanager
ruler_storage:
azure:
container_name: mimir-ruler
OpenStack SWIFT
common:
storage:
backend: swift
swift:
auth_url: http://10.121.xx.xx:5000/v3
username: mimir
user_domain_name: Default
password: "${OPENSTACK_API_KEY}" # This is a secret injected via an environment variable
project_name: mimir-prod
domain_name: Default
blocks_storage:
swift:
container_name: mimir-blocks
alertmanager_storage:
swift:
container_name: mimir-alertmanager
ruler_storage:
swift:
container_name: mimir-ruler