配置结构
4 分钟阅读
简要概述
主要展示 cortex 可配置结构。
查看所有模块:
$ ./cortex -modules
alertmanager
all
compactor
configs
distributor *
flusher
ingester *
overrides-exporter
purger *
querier *
query-frontend *
query-scheduler
ruler *
store-gateway *
Modules marked with * are included in target All.
配置示列
最小化
配置结构
target: all
auth_enabled: false
http_prefix: /api/prom
api:
  ...
# server.Config
server:
  ...
# distributor.Config
distributor:
  ...
# querier.Config
querier:
  ...
ingester_client:
  ...
ingester:
  ...
flusher:
  ...
# 数据存储
storage:
  ...
# 资源限制
limits:
  ...
prealloc:
  ...
frontend_worker:
  ...
# Query Frontend
frontend:
  ...
# Query Frontend
query_range:
  ...
# 数据存储
# tsdb.BlocksStorageConfig
blocks_storage:
  ...
# Compactor
# compactor.Config
compactor:
  ...
# storegateway.Config
store_gateway:
  ...
tenant_federation:
  ...
# Ruler
# ruler.Config
ruler:
  ...
# Ruler
# rulestore.Config
ruler_storage:
  ...
configs:
  ...
# Alertmanager
# alertmanager.MultitenantAlertmanagerConfig
alertmanager:
  ...
# Alertmanager
# alertstore.Config
alertmanager_storage:
  ...
runtime_config:
  ...
memberlist:
  ...
# scheduler.Config
query_scheduler:
  ...
tracing:
  ...
数据结构
Config
github.com/cortexproject/cortex/pkg/cortex/cortex.go
// Config is the root config for Cortex.
type Config struct {
    Target      flagext.StringSliceCSV `yaml:"target"`
    AuthEnabled bool                   `yaml:"auth_enabled"`
    PrintConfig bool                   `yaml:"-"`
    HTTPPrefix  string                 `yaml:"http_prefix"`
    ExternalQueryable prom_storage.Queryable `yaml:"-"`
    ExternalPusher    ruler.Pusher           `yaml:"-"`
    API              api.Config                      `yaml:"api"`
    Server           server.Config                   `yaml:"server"`
    Distributor      distributor.Config              `yaml:"distributor"`
    Querier          querier.Config                  `yaml:"querier"`
    IngesterClient   client.Config                   `yaml:"ingester_client"`
    Ingester         ingester.Config                 `yaml:"ingester"`
    Flusher          flusher.Config                  `yaml:"flusher"`
    Storage          storage.Config                  `yaml:"storage"`
    LimitsConfig     validation.Limits               `yaml:"limits"`
    Prealloc         cortexpb.PreallocConfig         `yaml:"prealloc" doc:"hidden"`
    Worker           querier_worker.Config           `yaml:"frontend_worker"`
    Frontend         frontend.CombinedFrontendConfig `yaml:"frontend"`
    QueryRange       queryrange.Config               `yaml:"query_range"`
    BlocksStorage    tsdb.BlocksStorageConfig        `yaml:"blocks_storage"`
    Compactor        compactor.Config                `yaml:"compactor"`
    StoreGateway     storegateway.Config             `yaml:"store_gateway"`
    TenantFederation tenantfederation.Config         `yaml:"tenant_federation"`
    Ruler               ruler.Config                               `yaml:"ruler"`
    RulerStorage        rulestore.Config                           `yaml:"ruler_storage"`
    Configs             configs.Config                             `yaml:"configs"`
    Alertmanager        alertmanager.MultitenantAlertmanagerConfig `yaml:"alertmanager"`
    AlertmanagerStorage alertstore.Config                          `yaml:"alertmanager_storage"`
    RuntimeConfig       runtimeconfig.Config                       `yaml:"runtime_config"`
    MemberlistKV        memberlist.KVConfig                        `yaml:"memberlist"`
    QueryScheduler      scheduler.Config                           `yaml:"query_scheduler"`
    Tracing tracing.Config `yaml:"tracing"`
}
api.Config
github.com/cortexproject/cortex/pkg/api/api.go
type Config struct {
    ResponseCompression bool `yaml:"response_compression_enabled"`
    AlertmanagerHTTPPrefix string `yaml:"alertmanager_http_prefix"`
    PrometheusHTTPPrefix   string `yaml:"prometheus_http_prefix"`
    // The following configs are injected by the upstream caller.
    ServerPrefix       string               `yaml:"-"`
    LegacyHTTPPrefix   string               `yaml:"-"`
    HTTPAuthMiddleware middleware.Interface `yaml:"-"`
    // This allows downstream projects to wrap the distributor push function
    // and access the deserialized write requests before/after they are pushed.
    DistributorPushWrapper DistributorPushWrapper `yaml:"-"`
    // The CustomConfigHandler allows for providing a different handler for the
    // `/config` endpoint. If this field is set _before_ the API module is
    // initialized, the custom config handler will be used instead of
    // DefaultConfigHandler.
    CustomConfigHandler ConfigHandler `yaml:"-"`
    // Allows and is used to configure the addition of HTTP Header fields to logs
    HTTPRequestHeadersToLog flagext.StringSlice `yaml:"http_request_headers_to_log"`
}
server.Config
github.com/weaveworks/common/server
见服务监听
distributor.Config
github.com/cortexproject/cortex/pkg/distributor/distributor.go
querier.Config
github.com/cortexproject/cortex/pkg/querier/querier.go
client.Config
github.com/cortexproject/cortex/pkg/ingester/client/client.go
ingester.Config
github.com/cortexproject/cortex/pkg/ingester/ingester.go
flusher.Config
github.com/cortexproject/cortex/pkg/flusher/flusher.go
TODO;
storage.Config
TODO;
validation.Limits
github.com/cortexproject/cortex/pkg/util/validation/limits.go
见资源限制
cortexpb.PreallocConfig
TODO;
querier_worker.Config
github.com/cortexproject/cortex/pkg/querier/worker/worker.go
type Config struct {
    FrontendAddress  string        `yaml:"frontend_address"`
    SchedulerAddress string        `yaml:"scheduler_address"`
    DNSLookupPeriod  time.Duration `yaml:"dns_lookup_duration"`
    Parallelism           int  `yaml:"parallelism"`
    MatchMaxConcurrency   bool `yaml:"match_max_concurrent"`
    MaxConcurrentRequests int  `yaml:"-"` // Must be same as passed to PromQL Engine.
    QuerierID string `yaml:"id"`
    GRPCClientConfig grpcclient.Config `yaml:"grpc_client_config"`
}
frontend.CombinedFrontendConfig
github.com/cortexproject/cortex/pkg/frontend/config.go
queryrange.Config
github.com/cortexproject/cortex/pkg/querier/tripperware/queryrange/query_range_middlewares.go
// Config for query_range middleware chain.
type Config struct {
    SplitQueriesByInterval time.Duration `yaml:"split_queries_by_interval"`
    AlignQueriesWithStep   bool          `yaml:"align_queries_with_step"`
    ResultsCacheConfig     `yaml:"results_cache"`
    CacheResults           bool `yaml:"cache_results"`
    MaxRetries             int  `yaml:"max_retries"`
    // List of headers which query_range middleware chain would forward to downstream querier.
    ForwardHeaders flagext.StringSlice `yaml:"forward_headers_list"`
    // Populated based on the query configuration
    VerticalShardSize int `yaml:"-"`
}
tsdb.BlocksStorageConfig
github.com/cortexproject/cortex/pkg/storage/tsdb/config.go
见数据存储
compactor.Config
github.com/cortexproject/cortex/pkg/compactor/compactor.go
storegateway.Config
github.com/cortexproject/cortex/pkg/storegateway/
tenantfederation.Config
github.com/cortexproject/cortex/pkg/querier/tenantfederation/tenant_federation.go
type Config struct {
    // Enabled switches on support for multi tenant query federation
    Enabled bool `yaml:"enabled"`
}
ruler.Config
github.com/cortexproject/cortex/pkg/ruler/ruler.go
rulestore.Config
github.com/cortexproject/cortex/pkg/ruler/rulestore/config.go
configs.Config
github.com/cortexproject/cortex/pkg/configs/config.go
type Config struct {
    DB  db.Config  `yaml:"database"`
    API api.Config `yaml:"api"`
}
TODO;
alertmanager.MultitenantAlertmanagerConfig
github.com/cortexproject/cortex/pkg/alertmanager/multitenant.go
alertstore.Config
github.com/cortexproject/cortex/pkg/alertmanager/alertstore/config.go
runtimeconfig.Config
github.com/cortexproject/cortex/pkg/util/runtimeconfig/manager.go
// Config holds the config for an Manager instance.
// It holds config related to loading per-tenant config.
type Config struct {
    ReloadPeriod time.Duration `yaml:"period"`
    // LoadPath contains the path to the runtime config file, requires an
    // non-empty value
    LoadPath string `yaml:"file"`
    Loader   Loader `yaml:"-"`
}
memberlist.KVConfig
github.com/cortexproject/cortex/pkg/ring/kv/memberlist/
见Distributor memberlist.KVConfig。
scheduler.Config
github.com/cortexproject/cortex/pkg/scheduler/scheduler.go
type Config struct {
    MaxOutstandingPerTenant int               `yaml:"max_outstanding_requests_per_tenant"`
    QuerierForgetDelay      time.Duration     `yaml:"querier_forget_delay"`
    GRPCClientConfig        grpcclient.Config `yaml:"grpc_client_config" doc:"description=This configures the gRPC client used to report errors back to the query-frontend."`
}
tracing.Config
github.com/cortexproject/cortex/pkg/tracing/tracing.go
type Config struct {
    Type string `yaml:"type" json:"type"`
    Otel Otel   `yaml:"otel" json:"otel"`
}
type Otel struct {
    OltpEndpoint   string              `yaml:"oltp_endpoint" json:"oltp_endpoint" doc:"hidden"`
    OtlpEndpoint   string              `yaml:"otlp_endpoint" json:"otlp_endpoint"`
    ExporterType   string              `yaml:"exporter_type" json:"exporter_type"`
    SampleRatio    float64             `yaml:"sample_ratio" json:"sample_ratio"`
    TLSEnabled     bool                `yaml:"tls_enabled"`
    TLS            tls.ClientConfig    `yaml:"tls"`
    ExtraDetectors []resource.Detector `yaml:"-"`
}