Documentation
¶
Index ¶
- Constants
- Variables
- func GetEnvironment() string
- func LoadConfig(config interface{})
- func LoadEnvironment()
- type AuthConfig
- type AuthMetricsConfig
- type CdcConfig
- type Config
- type CounterConfig
- type FdbMetricGroupConfig
- type FoundationDBConfig
- type LimitsConfig
- type ManagementConfig
- type MetricsConfig
- type NamespaceLimitsConfig
- type NamespaceStorageLimitsConfig
- type NetworkMetricGroupConfig
- type ObservabilityConfig
- type ProfilingConfig
- type QuotaConfig
- type RequestsMetricGroupConfig
- type SearchConfig
- type SearchMetricGroupConfig
- type ServerConfig
- type SessionMetricGroupConfig
- type SizeMetricGroupConfig
- type StorageLimitsConfig
- type TimerConfig
- type TracingConfig
Constants ¶
View Source
const ( EnvDevelopment = "dev" EnvProduction = "prod" EnvSandbox = "sbx" EnvTest = "test" EnvLocal = "local" )
Variables ¶
View Source
var ( WriteUnitSize = 1024 ReadUnitSize = 4096 )
View Source
var DefaultConfig = Config{ Log: log.LogConfig{ Level: "info", SampleRate: 0.01, }, Server: ServerConfig{ Host: "0.0.0.0", Port: 8081, FDBHardDrop: false, }, Auth: AuthConfig{ Enabled: false, IssuerURL: "https://tigrisdata-dev.us.auth0.com/", Audience: "https://tigris-api", JWKSCacheTimeout: 5 * time.Minute, LogOnly: true, AdminNamespaces: []string{"tigris-admin"}, }, Cdc: CdcConfig{ Enabled: false, StreamInterval: 500 * time.Millisecond, StreamBatch: 100, StreamBuffer: 200, }, Search: SearchConfig{ Host: "localhost", Port: 8108, ReadEnabled: true, WriteEnabled: true, }, Tracing: TracingConfig{ Enabled: false, SampleRate: 0.01, CodeHotspotsEnabled: true, EndpointsEnabled: true, }, Metrics: MetricsConfig{ Enabled: true, TimerQuantiles: []float64{0.5, 0.95, 0.99}, Requests: RequestsMetricGroupConfig{ Enabled: true, Counter: CounterConfig{ OkEnabled: true, ErrorEnabled: true, }, Timer: TimerConfig{ TimerEnabled: true, HistogramEnabled: false, }, FilteredTags: nil, }, Fdb: FdbMetricGroupConfig{ Enabled: true, Counter: CounterConfig{ OkEnabled: true, ErrorEnabled: true, }, Timer: TimerConfig{ TimerEnabled: true, HistogramEnabled: false, }, FilteredTags: nil, }, Search: SearchMetricGroupConfig{ Enabled: true, Counter: CounterConfig{ OkEnabled: true, ErrorEnabled: true, }, Timer: TimerConfig{ TimerEnabled: true, HistogramEnabled: false, }, FilteredTags: nil, }, Session: SessionMetricGroupConfig{ Enabled: true, Counter: CounterConfig{ OkEnabled: true, ErrorEnabled: true, }, Timer: TimerConfig{ TimerEnabled: true, HistogramEnabled: false, }, FilteredTags: nil, }, Size: SizeMetricGroupConfig{ Enabled: true, Namespace: true, Db: true, Collection: true, FilteredTags: nil, }, Network: NetworkMetricGroupConfig{ Enabled: true, FilteredTags: nil, }, Auth: AuthMetricsConfig{ Enabled: true, FilteredTags: nil, }, }, Profiling: ProfilingConfig{ Enabled: false, EnableCPU: true, EnableHeap: true, }, Quota: QuotaConfig{ Node: LimitsConfig{ Enabled: false, ReadUnits: 4000, WriteUnits: 1000, }, Namespace: NamespaceLimitsConfig{ Default: LimitsConfig{ Enabled: false, ReadUnits: 100, WriteUnits: 25, }, Node: LimitsConfig{ ReadUnits: 100, WriteUnits: 25, }, RefreshInterval: 60 * time.Second, }, Storage: StorageLimitsConfig{ Enabled: false, DataSizeLimit: 100 * 1024 * 1024, RefreshInterval: 60 * time.Second, }, }, Observability: ObservabilityConfig{ Enabled: false, Provider: "datadog", ProviderUrl: "us3.datadoghq.com", }, Management: ManagementConfig{ Enabled: true, }, }
Functions ¶
func GetEnvironment ¶
func GetEnvironment() string
func LoadConfig ¶
func LoadConfig(config interface{})
func LoadEnvironment ¶
func LoadEnvironment()
Types ¶
type AuthConfig ¶
type AuthConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
IssuerURL string `mapstructure:"issuer_url" yaml:"issuer_url" json:"issuer_url"`
Audience string `mapstructure:"audience" yaml:"audience" json:"audience"`
JWKSCacheTimeout time.Duration `mapstructure:"jwks_cache_timeout" yaml:"jwks_cache_timeout" json:"jwks_cache_timeout"`
LogOnly bool `mapstructure:"log_only" yaml:"log_only" json:"log_only"`
EnableNamespaceIsolation bool `mapstructure:"enable_namespace_isolation" yaml:"enable_namespace_isolation" json:"enable_namespace_isolation"`
AdminNamespaces []string `mapstructure:"admin_namespaces" yaml:"admin_namespaces" json:"admin_namespaces"`
OAuthProvider string `mapstructure:"oauth_provider" yaml:"oauth_provider" json:"oauth_provider"`
ClientId string `mapstructure:"client_id" yaml:"client_id" json:"client_id"`
ExternalTokenURL string `mapstructure:"external_token_url" yaml:"external_token_url" json:"external_token_url"`
EnableOauth bool `mapstructure:"enable_oauth" yaml:"enable_oauth" json:"enable_oauth"`
TokenCacheSize int `mapstructure:"token_cache_size" yaml:"token_cache_size" json:"token_cache_size"`
ExternalDomain string `mapstructure:"external_domain" yaml:"external_domain" json:"external_domain"`
ManagementClientId string `mapstructure:"management_client_id" yaml:"management_client_id" json:"management_client_id"`
ManagementClientSecret string `mapstructure:"management_client_secret" yaml:"management_client_secret" json:"management_client_secret"`
TokenClockSkewDurationSec int `mapstructure:"token_clock_skew_duration_sec" yaml:"token_clock_skew_duration_sec" json:"token_clock_skew_duration_sec"`
}
type AuthMetricsConfig ¶
type Config ¶
type Config struct {
Log log.LogConfig
Server ServerConfig `yaml:"server" json:"server"`
Auth AuthConfig `yaml:"auth" json:"auth"`
Cdc CdcConfig `yaml:"cdc" json:"cdc"`
Search SearchConfig `yaml:"search" json:"search"`
Tracing TracingConfig `yaml:"tracing" json:"tracing"`
Metrics MetricsConfig `yaml:"metrics" json:"metrics"`
Profiling ProfilingConfig `yaml:"profiling" json:"profiling"`
FoundationDB FoundationDBConfig
Quota QuotaConfig
Observability ObservabilityConfig `yaml:"observability" json:"observability"`
Management ManagementConfig `yaml:"management" json:"management"`
}
type CounterConfig ¶
type FdbMetricGroupConfig ¶
type FdbMetricGroupConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
Counter CounterConfig `mapstructure:"counter" yaml:"counter" json:"counter"`
Timer TimerConfig `mapstructure:"timer" yaml:"timer" json:"timer"`
FilteredTags []string `mapstructure:"filtered_tags" yaml:"filtered_tags" json:"filtered_tags"`
}
type FoundationDBConfig ¶
type FoundationDBConfig struct {
ClusterFile string `mapstructure:"cluster_file" json:"cluster_file" yaml:"cluster_file"`
}
FoundationDBConfig keeps FoundationDB configuration parameters.
func GetTestFDBConfig ¶
func GetTestFDBConfig(path string) (*FoundationDBConfig, error)
type LimitsConfig ¶
type LimitsConfig struct {
Enabled bool
ReadUnits int `mapstructure:"read_units" yaml:"read_units" json:"read_units"`
WriteUnits int `mapstructure:"write_units" yaml:"write_units" json:"write_units"`
}
func (*LimitsConfig) Limit ¶
func (l *LimitsConfig) Limit(isWrite bool) int
type ManagementConfig ¶
type ManagementConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
}
type MetricsConfig ¶
type MetricsConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
TimerQuantiles []float64 `mapstructure:"quantiles" yaml:"quantiles" json:"quantiles"`
Requests RequestsMetricGroupConfig `mapstructure:"requests" yaml:"requests" json:"requests"`
Fdb FdbMetricGroupConfig `mapstructure:"fdb" yaml:"fdb" json:"fdb"`
Search SearchMetricGroupConfig `mapstructure:"search" yaml:"search" json:"search"`
Session SessionMetricGroupConfig `mapstructure:"session" yaml:"session" json:"session"`
Size SizeMetricGroupConfig `mapstructure:"size" yaml:"size" json:"size"`
Network NetworkMetricGroupConfig `mapstructure:"network" yaml:"network" json:"network"`
Auth AuthMetricsConfig `mapstructure:"auth" yaml:"auth" json:"auth"`
}
type NamespaceLimitsConfig ¶
type NamespaceLimitsConfig struct {
Enabled bool
Default LimitsConfig // default per namespace limit
Node LimitsConfig // max per node per namespace limit
Namespaces map[string]LimitsConfig // individual namespaces configuration
RefreshInterval time.Duration `mapstructure:"refresh_interval" yaml:"refresh_interval" json:"refresh_interval"`
}
func (*NamespaceLimitsConfig) NamespaceLimits ¶
func (n *NamespaceLimitsConfig) NamespaceLimits(ns string) *LimitsConfig
type NamespaceStorageLimitsConfig ¶
type NamespaceStorageLimitsConfig struct {
Size int64
}
type ObservabilityConfig ¶
type ObservabilityConfig struct {
Provider string `mapstructure:"provider" yaml:"provider" json:"provider"`
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
ApiKey string `mapstructure:"api_key" yaml:"api_key" json:"api_key"`
AppKey string `mapstructure:"app_key" yaml:"app_key" json:"app_key"`
ProviderUrl string `mapstructure:"provider_url" yaml:"provider_url" json:"provider_url"`
}
type ProfilingConfig ¶
type ProfilingConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
EnableCPU bool `mapstructure:"enable_cpu" yaml:"enable_cpu" json:"enable_cpu"`
EnableHeap bool `mapstructure:"enable_heap" yaml:"enable_heap" json:"enable_heap"`
EnableBlock bool `mapstructure:"enable_block" yaml:"enable_block" json:"enable_block"`
EnableMutex bool `mapstructure:"enable_mutex" yaml:"enable_mutex" json:"enable_mutex"`
EnableGoroutine bool `mapstructure:"enable_goroutine" yaml:"enable_goroutine" json:"enable_goroutine"`
}
type QuotaConfig ¶
type QuotaConfig struct {
Node LimitsConfig // maximum rates per node. protects the node from overloading
Namespace NamespaceLimitsConfig // user quota across all the nodes
Storage StorageLimitsConfig
WriteUnitSize int
ReadUnitSize int
}
type RequestsMetricGroupConfig ¶
type RequestsMetricGroupConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
Counter CounterConfig `mapstructure:"counter" yaml:"counter" json:"counter"`
Timer TimerConfig `mapstructure:"timer" yaml:"timer" json:"timer"`
FilteredTags []string `mapstructure:"filtered_tags" yaml:"filtered_tags" json:"filtered_tags"`
}
type SearchConfig ¶
type SearchConfig struct {
Host string `mapstructure:"host" json:"host" yaml:"host"`
Port int16 `mapstructure:"port" json:"port" yaml:"port"`
AuthKey string `mapstructure:"auth_key" json:"auth_key" yaml:"auth_key"`
ReadEnabled bool `mapstructure:"read_enabled" yaml:"read_enabled" json:"read_enabled"`
WriteEnabled bool `mapstructure:"write_enabled" yaml:"write_enabled" json:"write_enabled"`
}
func (*SearchConfig) IsReadEnabled ¶
func (s *SearchConfig) IsReadEnabled() bool
type SearchMetricGroupConfig ¶
type SearchMetricGroupConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
Counter CounterConfig `mapstructure:"counter" yaml:"counter" json:"counter"`
Timer TimerConfig `mapstructure:"timer" yaml:"timer" json:"timer"`
FilteredTags []string `mapstructure:"filtered_tags" yaml:"filtered_tags" json:"filtered_tags"`
}
type ServerConfig ¶
type SessionMetricGroupConfig ¶
type SessionMetricGroupConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
Counter CounterConfig `mapstructure:"counter" yaml:"counter" json:"counter"`
Timer TimerConfig `mapstructure:"timer" yaml:"timer" json:"timer"`
FilteredTags []string `mapstructure:"filtered_tags" yaml:"filtered_tags" json:"filtered_tags"`
}
type SizeMetricGroupConfig ¶
type SizeMetricGroupConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
Namespace bool `mapstructure:"namespace" yaml:"namespace" json:"namespace"`
Db bool `mapstructure:"db" yaml:"db" json:"db"`
Collection bool `mapstructure:"collection" yaml:"collection" json:"collection"`
FilteredTags []string `mapstructure:"filtered_tags" yaml:"filtered_tags" json:"filtered_tags"`
}
type StorageLimitsConfig ¶
type StorageLimitsConfig struct {
Enabled bool
DataSizeLimit int64 `mapstructure:"data_size_limit" yaml:"data_size_limit" json:"data_size_limit"`
RefreshInterval time.Duration `mapstructure:"refresh_interval" yaml:"refresh_interval" json:"refresh_interval"`
// Per namespace limits
Namespaces map[string]NamespaceStorageLimitsConfig
}
func (*StorageLimitsConfig) NamespaceLimits ¶
func (n *StorageLimitsConfig) NamespaceLimits(ns string) int64
type TimerConfig ¶
type TracingConfig ¶
type TracingConfig struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled" json:"enabled"`
SampleRate float64 `mapstructure:"sample_rate" yaml:"sample_rate" json:"sample_rate"`
CodeHotspotsEnabled bool `mapstructure:"codehotspots_enabled" yaml:"codehotspots_enabled" json:"codehotspots_enabled"`
EndpointsEnabled bool `mapstructure:"endpoints_enabled" yaml:"endpoints_enabled" json:"endpoints_enabled"`
WithUDS string `mapstructure:"agent_socket" yaml:"agent_socket" json:"agent_socket"`
WithAgentAddr string `mapstructure:"agent_addr" yaml:"agent_addr" json:"agent_addr"`
WithDogStatsdAddr string `mapstructure:"dogstatsd_addr" yaml:"dogstatsd_addr" json:"dogstatsd_addr"`
}
Click to show internal directories.
Click to hide internal directories.