-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Description
Requires custom structTag.Get implementation as mentioned here: https://stackoverflow.com/questions/51984366/how-to-split-long-struct-tags-in-golang
The Go totally works with newlines in tags:
var err error
cfg := struct {
ConfigFile string `flagarize:"name=config.file|help=Prometheus configuration file path.|default=prometheus.yml"`
ExternalURL string `flagarize:"name=web.external-url|help=The URL under which Prometheus is externally reachable (for example, if Prometheus is served via a reverse proxy). \
Used for generating relative and absolute links back to Prometheus itself. If the URL has a path portion, it will be used to prefix all HTTP endpoints served by Prometheus. If omitted, relevant URL components will be derived automatically.|placeholder=<URL>"`
StoragePath string `flagarize:"name=storage.tsdb.path|help=Base path for metrics storage.|default=data/"`
RemoteFlushDeadline model.Duration `flagarize:"name=storage.remote.flush-deadline|help=How long to wait flushing sample on shutdown or config reload.|default=1m|placeholder=<duration>"`
RulesOutageTolerance model.Duration `flagarize:"name=rules.alert.for-outage-tolerance|help=Max time to tolerate prometheus outage for restoring \"for\" state of alert.|default=1h"`
RulesForGracePeriod model.Duration `flagarize:"name=rules.alert.for-grace-period|help=Minimum duration between alert and restored \"for\" state. This is maintained only for alerts with configured \"for\" time greater than grace period.|default=10m"`
RulesResendDelay model.Duration `flagarize:"name=rules.alert.resend-delay|help=Minimum amount of time to wait before resending an alert to Alertmanager.|default=1m"`
LookbackDelta model.Duration `flagarize:"name=query.lookback-delta|help=The maximum lookback duration for retrieving metrics during expression evaluations and federation.|default=5m"`
QueryTimeout model.Duration `flagarize:"name=query.timeout|help=Maximum time a query may take before being aborted.|default=2m"`
QueryConcurrency int `flagarize:"name=query.max-concurrency|help=Maximum number of queries executed concurrently.|default=20"`
QueryMaxSamples int `flagarize:"name=query.max-samples|help=Maximum number of samples a single query can load into memory. Note that queries will fail if \
they try to load more samples than this into memory, so this also limits the number of samples a query can return.|default=50000000"`
Web web.Options
Notifier notifier.Options
TSDB tsdbOptions
PromLog promlog.Config
}{
Notifier: notifier.Options{
Registerer: prometheus.DefaultRegisterer,
},
Web: web.Options{
Registerer: prometheus.DefaultRegisterer,
Gatherer: prometheus.DefaultGatherer,
CORSOriginFlagarizeHelp: `Regex for CORS origin. It is fully anchored. Example: 'https?://(domain1|domain2)\.com'`,
},
TSDB: tsdbOptions{
RetentionDurationFlagarizeHelp: "How long to retain samples in storage. When this flag is set it overrides \"storage.tsdb.retention\". If neither this flag nor \"storage.tsdb.retention\" nor \"storage.tsdb.retention.size\" is set, the retention time defaults to " + defaultRetentionString + ". Units Supported: y, w, d, h, m, s, ms.",
},
PromLog: promlog.Config{},
}
a := kingpin.New(filepath.Base(os.Args[0]), "The Prometheus monitoring server")
a.Version(version.Print("prometheus"))
a.HelpFlag.Short('h')
if err := flagarize.Flagarize(a, &cfg); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(2)
}
if _, err := a.Parse(os.Args[1:]); err != nil {
fmt.Fprintln(os.Stderr, errors.Wrapf(err, "Error parsing commandline arguments"))
a.Usage(os.Args[1:])
os.Exit(2)
}
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed