Documentation ¶
Index ¶
- Constants
- Variables
- func ErrInvalidMetricOptions(iface interface{}) error
- func ErrInvalidProviderOptions(iface interface{}) error
- func Registrate(ctx context.Context) context.Context
- func RegistrateProvider(ctx context.Context, name string, p Provider) (context.Context, error)
- type BaseAnswer
- type CheckFunc
- type ErrorAnswer
- type ErrorAnswerBody
- type IProviderMetrics
- type IProvidersMetrics
- type MapCheckFunc
- type MapMetricsOptions
- type MetricOptions
- type Provider
- type ResultAnswer
- type Service
- type Statistics
- func (st *Statistics) GetProvider(providerName string) (Provider, error)
- func (st *Statistics) RegisterAliveCheck(providerName, dependencyName string, checkFunc func() (bool, string)) error
- func (st *Statistics) RegisterMetric(providerName, metricName string, metricOptions interface{}) error
- func (st *Statistics) RegisterReadyCheck(providerName, dependencyName string, checkFunc func() (bool, string)) error
- func (st *Statistics) Start(metrics MapMetricsOptions, aliveHandlers, readyHandlers MapCheckFunc) error
- func (st *Statistics) StartProvider(providerName string, metrics MapMetricsOptions, ...) error
Constants ¶
const ( ReadyEndpoint = "/health/ready" AliveEndpoint = "/health/alive" MetricsEndpoint = "/metrics" ProvidersName = "statistics" )
Variables ¶
Functions ¶
func ErrInvalidMetricOptions ¶
func ErrInvalidMetricOptions(iface interface{}) error
func ErrInvalidProviderOptions ¶
func ErrInvalidProviderOptions(iface interface{}) error
Types ¶
type BaseAnswer ¶
Body of error answer
type CheckFunc ¶
Checking function should accept no parameters and return boolean value which will be interpreted as dependency service readiness and a string which should provide error text if dependency service isn't ready and something else if dependency service is ready (for example, dependency service's version).
type ErrorAnswer ¶
type ErrorAnswer struct {
Body ErrorAnswerBody `json:"error"`
}
Send error answer.
func (ErrorAnswer) WriteJSON ¶
func (answ ErrorAnswer) WriteJSON(w http.ResponseWriter) error
type ErrorAnswerBody ¶
type ErrorAnswerBody struct { Code string `json:"code"` BaseAnswer }
Body of error answer
type IProviderMetrics ¶
type IProviderMetrics interface { // GetMetrics return map of the metrics from provider GetMetrics(prefix string) MapMetricsOptions // GetAliveHandlers return array of the aliveHandlers from provider GetAliveHandlers(prefix string) MapCheckFunc // GetReadyHandlers return array of the readyHandlers from provider GetReadyHandlers(prefix string) MapCheckFunc }
type IProvidersMetrics ¶
type IProvidersMetrics interface { // GetMetrics return map of the metrics from provider GetAllMetrics(out MapMetricsOptions) (MapMetricsOptions, error) // GetAliveHandlers return array of the aliveHandlers from provider GetAllAliveHandlers(out MapCheckFunc) (MapCheckFunc, error) // GetReadyHandlers return array of the readyHandlers from provider GetAllReadyHandlers(out MapCheckFunc) (MapCheckFunc, error) }
type MapCheckFunc ¶
func (MapCheckFunc) Fill ¶
func (mcf MapCheckFunc) Fill(src MapCheckFunc)
func (MapCheckFunc) RegistrateHandler ¶
func (mcf MapCheckFunc) RegistrateHandler(prov Provider) error
type MapMetricsOptions ¶
type MapMetricsOptions map[string]*MetricOptions
func (MapMetricsOptions) Fill ¶
func (mmo MapMetricsOptions) Fill(src MapMetricsOptions)
func (MapMetricsOptions) RegistrateMetric ¶
func (mmo MapMetricsOptions) RegistrateMetric(prov Provider) error
type MetricOptions ¶
type MetricOptions struct { // Metric is a metric Metric interface{} // MetricFunc is a func for update metric MetricFunc func(metric interface{}) }
MetricOptions descrbes struct with options for metrics
type Provider ¶
type Provider interface { provider.IProvider provider.IEniter // RegisterAliveCheck should register a function for /health/alive // endpoint. // Checks registered via RegisterReadyCheck can appear in random order // in response. RegisterAliveCheck(dependencyName string, checkFunc CheckFunc) error // RegisterMetric should register a metric of defined type. Passed // metricName should be used only as internal identifier. Provider // should provide instructions for using metricOptions as well as // cast to appropriate type. RegisterMetric(metricName string, metricOptions interface{}) error // RegisterReadyCheck should register a function for /health/ready // endpoint. // Checks registered via RegisterReadyCheck can appear in random order // in response. RegisterReadyCheck(dependencyName string, checkFunc CheckFunc) error }
Provider is an interface which every statistics provider should conform. Every provider should be able to respond on alive checks, ready checks and metrics request. It is up to provider to decide protocol for all things, but HTTP is preferred.
type ResultAnswer ¶
type ResultAnswer struct {
Body interface{} `json:"result"`
}
func (ResultAnswer) WriteJSON ¶
func (answ ResultAnswer) WriteJSON(w http.ResponseWriter) error
type Service ¶
type Service struct { // Connection metrics Metrics MapMetricsOptions // Connection alive handlers AliveHandlers MapCheckFunc // Connection ready handlers ReadyHandlers MapCheckFunc }
func (*Service) GetAliveHandlers ¶
func (s *Service) GetAliveHandlers(prefix string) MapCheckFunc
GetAliveHandlers return array of the aliveHandlers from service
func (*Service) GetMetrics ¶
func (s *Service) GetMetrics(prefix string) MapMetricsOptions
GetMetrics return map of the metrics from cache connection
func (*Service) GetReadyHandlers ¶
func (s *Service) GetReadyHandlers(prefix string) MapCheckFunc
GetReadyHandlers return array of the readyHandlers from cache connection
type Statistics ¶
type Statistics struct {
*providers.BaseProviders
}
Statistics is a controlling structure for all statistics providers.
func Get ¶
func Get(ctx context.Context) *Statistics
func NewStatistics ¶
func NewStatistics(ctx context.Context) *Statistics
func (*Statistics) GetProvider ¶
func (st *Statistics) GetProvider(providerName string) (Provider, error)
GetProvider returns provider interface to caller. Returns error if provider isn't registered.
func (*Statistics) RegisterAliveCheck ¶
func (st *Statistics) RegisterAliveCheck(providerName, dependencyName string, checkFunc func() (bool, string)) error
RegisterAliveCheck registers check function for /health/alive endpoint in designated provider.
func (*Statistics) RegisterMetric ¶
func (st *Statistics) RegisterMetric(providerName, metricName string, metricOptions interface{}) error
RegisterMetric registers metric in designated provider. It is up to provider to provide instructions on metrics registration.
func (*Statistics) RegisterReadyCheck ¶
func (st *Statistics) RegisterReadyCheck(providerName, dependencyName string, checkFunc func() (bool, string)) error
RegisterReadyCheck registers check function for /health/ready endpoint in designated provider.
func (*Statistics) Start ¶
func (st *Statistics) Start(metrics MapMetricsOptions, aliveHandlers, readyHandlers MapCheckFunc) error
Start sends start signal to all Statistic providers.
func (*Statistics) StartProvider ¶
func (st *Statistics) StartProvider(providerName string, metrics MapMetricsOptions, aliveHandlers, readyHandlers MapCheckFunc) error
Start sends start signal to selected Statistic provider.