Documentation ¶
Overview ¶
This module is responsible for loading the config file
This package contains all the constants used throughout the application
Index ¶
Constants ¶
View Source
const DefaultEnvironment = "local"
This is the default name for the application config file: local.yaml
View Source
const DefaultEnvironmentConfigName = "CARBON_CONFIG"
The name of the config file can be changed via this environment variable
Variables ¶
View Source
var ( // The last time the config was updated/reloaded UpdatedAt time.Time )
Functions ¶
func InitConfig ¶
Types ¶
type APIConfig ¶
type APIConfig struct { // The address to listen to Address string `mapstructure:"address"` // The port to listen to Port string `mapstructure:"port"` // The prometheus metrics path MetricsPath string `mapstructure:"metricsPath"` }
Defines the configuration for the API
type Account ¶
type Account struct { // AWS: The regions we should scrape the data for Regions []string `mapstructure:"regions"` // AWS Specific: // Cloudwatch namespaces // A namespace is a container for CloudWatch metrics. // Metrics in different namespaces are isolated from each other, // so that metrics from different applications are not mistakenly aggregated into the same statistics. // For example, Amazon EC2 uses the AWS/EC2 namespace. // For the list of AWS namespaces, see AWS services that publish CloudWatch metrics. // https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html Namespaces []string `mapstructure:"namespaces"` // GCP: The project Project string `mapstructure:"project"` // The location from where to load the credentials Credentials ProviderConfig `mapstructure:"credentials"` // The location from where to load the additional configuration Config ProviderConfig `mapstructure:"config"` }
type ApplicationConfig ¶
type ApplicationConfig struct { APIConfig APIConfig `mapstructure:"api"` Proxy ProxyConfig `mapstructure:"proxy"` ProvidersConfig `mapstructure:"providersConfig"` Providers map[v1.Provider]Provider `mapstructure:"providers"` LogLevel string `mapstructure:"logLevel"` Cache Cache `mapstructure:"cache"` Plugins PluginConfig `mapstructure:"plugins"` }
ApplicationConfig is the full app config
type Cache ¶
type Cache struct { // The cache store built-into eko/gocache with // the default being bigcache Store string `mapstructure:"store"` // Cache key expiration time Expiry time.Duration `mapstructure:"expiry"` }
Cache configurations
type PluginConfig ¶
type Provider ¶
type Provider struct { // A provider can have different accounts and scraping credentials and settings Accounts []Account `mapstructure:"accounts"` // The SDK Http Client transport configuration for the whole provider Transport TransportConfig `mapstructure:"transport"` }
Defines the general configuration for a provider
type ProviderConfig ¶
type ProviderConfig struct { // AWS: which profile to use Profile string `mapstructure:"profile"` // Where the file can be located FilePaths []string `mapstructure:"filePaths"` }
func (ProviderConfig) IsPresent ¶
func (pc ProviderConfig) IsPresent() bool
Whether the provider config has some values set
type ProvidersConfig ¶
type ProxyConfig ¶
type ProxyConfig struct { HTTPProxy string `mapstructure:"httpProxy"` HTTPSProxy string `mapstructure:"httpsProxy"` NoProxy string `mapstructure:"noProxy"` }
Generic proxy configuration
type TransportConfig ¶
type TransportConfig struct { // Proxy Proxy ProxyConfig `mapstructure:"proxy"` // Idle connection timeout IdleConnTimeout time.Duration `mapstructure:"idleConnTimeout"` // Max idle connections MaxIdleConns int `mapstructure:"maxIdleConns"` // maximum number of idle (keep-alive) connections per-host. MaxIdleConnsPerHost int `mapstructure:"maxIdleConnsPerHost"` // Timeout while reading headers ResponseHeaderTimeout time.Duration `mapstructure:"responseHeaderTimeout"` // maximum amount of time waiting for a TLS handshake to be completed TLSHandshakeTimeout time.Duration `mapstructure:"tlsHandshakeTimeout"` }
Defines various Http Client transport settings
Click to show internal directories.
Click to hide internal directories.