mirror of
https://github.com/akvorado/akvorado.git
synced 2025-12-11 22:14:02 +01:00
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
// SPDX-FileCopyrightText: 2022 Free Mobile
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
// Package cmd handles the command-line interface for akvorado
|
|
package cmd
|
|
|
|
import (
|
|
"os"
|
|
"runtime"
|
|
"sync/atomic"
|
|
"time"
|
|
|
|
"akvorado/common/helpers"
|
|
"akvorado/common/reporter"
|
|
|
|
"github.com/mattn/go-isatty"
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/diode"
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var (
|
|
debug bool
|
|
missedLogs atomic.Uint64
|
|
startTime time.Time
|
|
)
|
|
|
|
// RootCmd is the root for all commands
|
|
var RootCmd = &cobra.Command{
|
|
Use: "akvorado",
|
|
Short: "Flow collector, enricher and visualizer",
|
|
PersistentPreRun: func(_ *cobra.Command, _ []string) {
|
|
if isatty.IsTerminal(os.Stdout.Fd()) {
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
|
} else {
|
|
w := diode.NewWriter(os.Stdout, 1000, 0, func(missed int) {
|
|
missedLogs.Add(uint64(missed))
|
|
})
|
|
log.Logger = zerolog.New(w).With().Timestamp().Logger()
|
|
}
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
|
if debug || helpers.Testing() {
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
}
|
|
},
|
|
SilenceErrors: true,
|
|
SilenceUsage: true,
|
|
}
|
|
|
|
func moreMetrics(r *reporter.Reporter) {
|
|
versionMetrics(r)
|
|
r.GaugeFunc(reporter.GaugeOpts{
|
|
Name: "dropped_log_messages",
|
|
Help: "Number of log messages dropped.",
|
|
}, func() float64 {
|
|
return float64(missedLogs.Load())
|
|
})
|
|
r.GaugeVec(reporter.GaugeOpts{
|
|
Name: "info",
|
|
Help: "Akvorado build information",
|
|
}, []string{"version", "compiler"}).
|
|
WithLabelValues(helpers.AkvoradoVersion, runtime.Version()).Set(1)
|
|
r.GaugeFunc(reporter.GaugeOpts{
|
|
Name: "uptime_seconds",
|
|
Help: "number of seconds the application is running",
|
|
}, func() float64 {
|
|
return time.Since(startTime).Seconds()
|
|
})
|
|
}
|
|
|
|
func init() {
|
|
startTime = time.Now()
|
|
RootCmd.PersistentFlags().BoolVarP(&debug, "debug", "d", false,
|
|
"Enable debug logs")
|
|
}
|