mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-12 14:27:27 -08:00
replaced cobra with kingpin
Signed-off-by: Krasi Georgiev <krasi.root@gmail.com>
This commit is contained in:
parent
c2916736be
commit
92d0414993
3
cmd/tsdb/README.md
Normal file
3
cmd/tsdb/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
TODO:
|
||||||
|
- [ ] add tabular output
|
||||||
|
- [ ] break commands in separate files
|
|
@ -18,8 +18,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
|
||||||
_ "net/http/pprof"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
@ -33,41 +31,36 @@ import (
|
||||||
"github.com/prometheus/prometheus/pkg/textparse"
|
"github.com/prometheus/prometheus/pkg/textparse"
|
||||||
"github.com/prometheus/tsdb"
|
"github.com/prometheus/tsdb"
|
||||||
"github.com/prometheus/tsdb/labels"
|
"github.com/prometheus/tsdb/labels"
|
||||||
"github.com/spf13/cobra"
|
"gopkg.in/alecthomas/kingpin.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Start HTTP server for pprof endpoint.
|
var (
|
||||||
go http.ListenAndServe(":9999", nil)
|
cli = kingpin.New(filepath.Base(os.Args[0]), "CLI tool for tsdb")
|
||||||
|
benchCmd = cli.Command("bench", "run benchmarks")
|
||||||
root := &cobra.Command{
|
benchWriteCmd = benchCmd.Command("write", "run a write performance benchmark")
|
||||||
Use: "tsdb",
|
benchWriteOutPath = benchWriteCmd.Flag("out", "set the output path").Default("benchout/").String()
|
||||||
Short: "CLI tool for tsdb",
|
benchWriteNumMetrics = benchWriteCmd.Flag("metrics", "number of metrics to read").Default("10000").Int()
|
||||||
}
|
benchSamplesFile = benchWriteCmd.Arg("file", "input file with samples data, default is (../../testdata/20k.series)").Default("../../testdata/20k.series").String()
|
||||||
|
|
||||||
root.AddCommand(
|
|
||||||
NewBenchCommand(),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
flag.CommandLine.Set("log.level", "debug")
|
switch kingpin.MustParse(cli.Parse(os.Args[1:])) {
|
||||||
|
case benchWriteCmd.FullCommand():
|
||||||
root.Execute()
|
wb := &writeBenchmark{
|
||||||
}
|
outPath: *benchWriteOutPath,
|
||||||
|
numMetrics: *benchWriteNumMetrics,
|
||||||
func NewBenchCommand() *cobra.Command {
|
samplesFile: *benchSamplesFile,
|
||||||
c := &cobra.Command{
|
}
|
||||||
Use: "bench",
|
wb.run()
|
||||||
Short: "run benchmarks",
|
|
||||||
}
|
}
|
||||||
c.AddCommand(NewBenchWriteCommand())
|
flag.CommandLine.Set("log.level", "debug")
|
||||||
|
|
||||||
return c
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type writeBenchmark struct {
|
type writeBenchmark struct {
|
||||||
outPath string
|
outPath string
|
||||||
cleanup bool
|
samplesFile string
|
||||||
numMetrics int
|
cleanup bool
|
||||||
|
numMetrics int
|
||||||
|
|
||||||
storage *tsdb.DB
|
storage *tsdb.DB
|
||||||
|
|
||||||
|
@ -77,22 +70,7 @@ type writeBenchmark struct {
|
||||||
mtxprof *os.File
|
mtxprof *os.File
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBenchWriteCommand() *cobra.Command {
|
func (b *writeBenchmark) run() {
|
||||||
var wb writeBenchmark
|
|
||||||
c := &cobra.Command{
|
|
||||||
Use: "write <file>",
|
|
||||||
Short: "run a write performance benchmark",
|
|
||||||
Run: wb.run,
|
|
||||||
}
|
|
||||||
c.PersistentFlags().StringVar(&wb.outPath, "out", "benchout/", "set the output path")
|
|
||||||
c.PersistentFlags().IntVar(&wb.numMetrics, "metrics", 10000, "number of metrics to read")
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (b *writeBenchmark) run(cmd *cobra.Command, args []string) {
|
|
||||||
if len(args) != 1 {
|
|
||||||
exitWithError(fmt.Errorf("missing file argument"))
|
|
||||||
}
|
|
||||||
if b.outPath == "" {
|
if b.outPath == "" {
|
||||||
dir, err := ioutil.TempDir("", "tsdb_bench")
|
dir, err := ioutil.TempDir("", "tsdb_bench")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -123,7 +101,7 @@ func (b *writeBenchmark) run(cmd *cobra.Command, args []string) {
|
||||||
var metrics []labels.Labels
|
var metrics []labels.Labels
|
||||||
|
|
||||||
measureTime("readData", func() {
|
measureTime("readData", func() {
|
||||||
f, err := os.Open(args[0])
|
f, err := os.Open(b.samplesFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exitWithError(err)
|
exitWithError(err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue