
cortexproject/cortexCortex 是一个为 Prometheus 提供水平扩展、高可用、多租户支持的长期存储解决方案。作为 CNCF 孵化项目,Cortex 被广泛应用于生产环境(如 Weave Cloud 和 Grafana Cloud),主要作为 Prometheus 的 remote write 目标,并提供与 Prometheus 兼容的查询 API。
Cortex 可跨集群中的多台机器运行,突破单节点的吞吐量和存储限制。支持将多个 Prometheus 服务器的指标发送到单个 Cortex 集群,并在统一位置执行全局聚合查询。
集群模式下,Cortex 可在机器间复制数据,确保机器故障时无监控数据间隙,保障图表连续性。
支持在单个集群中隔离多个独立 Prometheus 数据源的数据和查询,允许不可信方共享集群资源,同时保证数据隔离。
支持 S3、GCS、Swift 和 Microsoft Azure 作为长期存储后端,实现数据持久化存储(超出单节点生命周期),适用于长期容量规划。
bashdocker run -d \ --name cortex \ -p 9009:9009 \ # HTTP API 端口 -p 9095:9095 \ # 健康检查端口 -e CORTEX_BLOCKS_STORAGE_ENABLED=true \ -e CORTEX_BLOCKS_STORAGE_BACKEND=local \ -e CORTEX_BLOCKS_STORAGE_LOCAL_DIRECTORY=/data \ -v $(pwd)/cortex-data:/data \ cortexproject/cortex:latest \ -config.file=/etc/cortex/config-blocks.yaml
注意:生产环境需替换为分布式存储后端(如 S3),并配置集群模式。
yamlversion: '3' services: cortex: image: cortexproject/cortex:latest container_name: cortex ports: - "9009:9009" # HTTP API - "9095:9095" # 健康检查 - "7946:7946" # 节点发现(gossip) environment: - CORTEX_TENANT_ID=default # 默认租户 ID(多租户场景需动态配置) - CORTEX_BLOCKS_STORAGE_ENABLED=true - CORTEX_BLOCKS_STORAGE_BACKEND=s3 - CORTEX_BLOCKS_STORAGE_S3_ACCESS_KEY_ID=AKIAEXAMPLE - CORTEX_BLOCKS_STORAGE_S3_SECRET_ACCESS_KEY=secret - CORTEX_BLOCKS_STORAGE_S3_BUCKET=my-cortex-bucket - CORTEX_BLOCKS_STORAGE_S3_ENDPOINT=s3.amazonaws.com - CORTEX_RING_BACKEND=memberlist # 分布式一致性协调 volumes: - ./cortex-config:/etc/cortex - ./cortex-data:/data command: -config.file=/etc/cortex/config.yaml restart: unless-stopped prometheus: image: prom/prometheus:latest container_name: prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml restart: unless-stopped
prometheus.yml)yamlglobal: scrape_interval: 15s remote_write: - url: "[***]" headers: X-Scope-OrgID: "default" # 与 Cortex 租户 ID 匹配 scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']
| 环境变量 | 描述 | 默认值 |
|---|---|---|
CORTEX_TENANT_ID | 租户 ID(多租户场景需通过请求头 X-Scope-OrgID 动态传递) | default |
CORTEX_BLOCKS_STORAGE_ENABLED | 是否启用块存储(推荐) | false |
CORTEX_BLOCKS_STORAGE_BACKEND | 块存储后端类型(local/s3/gcs/azure/swift) | local |
CORTEX_BLOCKS_STORAGE_LOCAL_DIRECTORY | 本地存储路径(仅 local 后端) | /data |
CORTEX_HTTP_LISTEN_PORT | HTTP API 监听端口 | 9009 |
CORTEX_RING_BACKEND | 一致性哈希环后端(consul/etcd/memberlist,集群模式必填) | consul |
Cortex 配置通过 -config.file 指定,推荐使用官方提供的块存储配置模板(config-blocks.yaml),主要配置段包括:
blocks_storage:存储后端详细配置(如 S3 访问密钥、桶名称)limits:租户级限流配置(如每秒查询数、指标保留时间)distributor:数据写入分发配置querier:查询服务配置X-Scope-OrgID 传递租户 ID,而非环境变量 CORTEX_TENANT_ID。auth_enabled: true,并配合外部认证系统(如 OAuth2、API Key)。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务