const ( ExitCodeOK int32 = iota ExitCodeConfigError ExitCodeCmdError ExitCodeWebUIError ExitCodeUpgradeError ExitCodeUserCancel ExitCodeShutdownCommand ExitCodeFatalError )
func addCommands(parser *flags.Parser, opts *Options)
type ConfigCommand struct { owner *Options Init ConfigInitCommand `command:"init" description:"Initialize configuration"` Upgrade ConfigUpgradeCommand `command:"upgrade" description:"Upgrade configuration schema"` }
func NewConfigCommand(owner *Options) *ConfigCommand
type ConfigInitCommand struct { owner *Options }
func (cmd *ConfigInitCommand) Execute([]string) (err error)
Execute initializes the configuration.
func (cmd *ConfigInitCommand) InitMetrics() (err error)
InitMetrics initializes the metrics configuration.
func (cmd *ConfigInitCommand) InitSources() (err error)
InitSources initializes the sources configuration.
type ConfigUpgradeCommand struct { owner *Options }
func (cmd *ConfigUpgradeCommand) Execute([]string) (err error)
Execute upgrades the configuration schema.
type Kind int
const ( ConfigPgURL Kind = iota ConfigFile ConfigFolder ConfigError )
type MetricCommand struct { owner *Options PrintInit MetricPrintInitCommand `command:"print-init" description:"Get and print init SQL for a given metric or preset"` PrintSQL MetricPrintSQLCommand `command:"print-sql" description:"Get and print SQL for a given metric"` }
func NewMetricCommand(owner *Options) *MetricCommand
type MetricPrintInitCommand struct { owner *Options }
func (cmd *MetricPrintInitCommand) Execute(args []string) error
type MetricPrintSQLCommand struct { owner *Options Version int `short:"v" long:"version" description:"PostgreSQL version to get SQL for"` }
func (cmd *MetricPrintSQLCommand) Execute(args []string) error
Options contains the command line options.
type Options struct { Sources sources.CmdOpts `group:"Sources"` Metrics metrics.CmdOpts `group:"Metrics"` Sinks sinks.CmdOpts `group:"Sinks"` Logging log.CmdOpts `group:"Logging"` WebUI webserver.CmdOpts `group:"WebUI"` Help bool SourcesReaderWriter sources.ReaderWriter MetricsReaderWriter metrics.ReaderWriter SinksWriter sinks.Writer ExitCode int32 CommandCompleted bool OutputWriter io.Writer }
func New(writer io.Writer) (cmdOpts *Options, err error)
New returns a new instance of Options and immediately executes the subcommand if specified. Subcommands are responsible for setting exit code. Function prints help message only if options are incorrect. If subcommand is executed but fails, function outputs the error message only, indicating that some argument values might be incorrect, e.g. wrong file name, lack of privileges, etc.
func (c *Options) CompleteCommand(code int32)
func (c *Options) GetConfigKind(arg string) (_ Kind, err error)
func (c *Options) InitConfigReaders(ctx context.Context) error
InitConfigReaders creates the configuration readers based on the configuration kind from the options.
func (c *Options) InitMetricReader(ctx context.Context) (err error)
InitMetricReader creates a new source reader based on the configuration kind from the options.
func (c *Options) InitSinkWriter(ctx context.Context) (err error)
InitSinkWriter creates a new MultiWriter instance if needed.
func (c *Options) InitSourceReader(ctx context.Context) (err error)
InitSourceReader creates a new source reader based on the configuration kind from the options.
func (c *Options) IsPgConnStr(arg string) bool
func (c *Options) NeedsSchemaUpgrade() (upgrade bool, err error)
NeedsSchemaUpgrade checks if the configuration database schema needs an upgrade.
func (c *Options) ValidateConfig() error
ValidateConfig checks if the configuration is valid. Configuration database can be specified for one of the --sources or --metrics. If one is specified, the other one is set to the same value.
func (c *Options) Verbose() bool
Verbose returns true if the debug log is enabled
type SourceCommand struct { owner *Options Ping SourcePingCommand `command:"ping" description:"Try to connect to configured sources, report errors if any and then exit"` Resolve SourceResolveCommand `command:"resolve" description:"Resolve monitored connections for a given sources (all by default)"` }
func NewSourceCommand(owner *Options) *SourceCommand
type SourcePingCommand struct { owner *Options }
func (cmd *SourcePingCommand) Execute(args []string) error
type SourceResolveCommand struct { owner *Options }
func (cmd *SourceResolveCommand) Execute(args []string) error