Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

Commit 8be4585

Browse files
authored
Merge pull request #1526 from grafana/mt-gen-key
add tool: mt-keygen
2 parents f833d45 + b87c6bd commit 8be4585

File tree

3 files changed

+110
-0
lines changed

3 files changed

+110
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
/cmd/mt-kafka-mdm-sniff-out-of-order/mt-kafka-mdm-sniff-out-of-order
1313
/cmd/mt-kafka-mdm-sniff/mt-kafka-mdm-sniff
1414
/cmd/mt-kafka-persist-sniff/mt-kafka-persist-sniff
15+
/cmd/mt-keygen/mt-keygen
1516
/cmd/mt-schemas-explain/mt-schemas-explain
1617
/cmd/mt-split-metrics-by-ttl/mt-split-metrics-by-ttl
1718
/cmd/mt-store-cat/mt-store-cat

cmd/mt-keygen/main.go

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"flag"
6+
"fmt"
7+
"io/ioutil"
8+
"os"
9+
"os/exec"
10+
"runtime"
11+
12+
"github.com/grafana/metrictank/logger"
13+
"github.com/grafana/metrictank/schema"
14+
log "github.com/sirupsen/logrus"
15+
)
16+
17+
var (
18+
version string
19+
showVersion = flag.Bool("version", false, "print version string")
20+
)
21+
22+
func init() {
23+
formatter := &logger.TextFormatter{}
24+
formatter.TimestampFormat = "2006-01-02 15:04:05.000"
25+
log.SetFormatter(formatter)
26+
log.SetLevel(log.InfoLevel)
27+
}
28+
29+
func main() {
30+
31+
flag.Usage = func() {
32+
fmt.Println("mt-keygen")
33+
fmt.Println()
34+
fmt.Println("mt-keygen gives you the MKey for a specific MetricDefinition")
35+
fmt.Println("It fills a temp file with a template MetricDefinition")
36+
fmt.Println("It launches vim")
37+
fmt.Println("You fill in the important details - name / interval / tags /...")
38+
fmt.Println("It prints the MKey")
39+
fmt.Println()
40+
flag.PrintDefaults()
41+
}
42+
flag.Parse()
43+
44+
if *showVersion {
45+
fmt.Printf("mt-view-boundaries (version: %s - runtime: %s)\n", version, runtime.Version())
46+
return
47+
}
48+
d := schema.MetricDefinition{
49+
Unit: "unknown",
50+
Mtype: "gauge",
51+
}
52+
53+
var data []byte
54+
var err error
55+
var f *os.File
56+
57+
if data, err = json.MarshalIndent(d, "", " "); err != nil {
58+
log.Fatal(err)
59+
}
60+
if f, err = ioutil.TempFile("", "mt-gen-metricid"); err != nil {
61+
log.Fatal(err)
62+
}
63+
fmt.Println("using file", f.Name())
64+
defer os.Remove(f.Name())
65+
66+
if _, err = f.Write(data); err != nil {
67+
log.Fatal(err)
68+
}
69+
if err := f.Close(); err != nil {
70+
log.Fatal(err)
71+
}
72+
cmd := exec.Command("vim", f.Name())
73+
cmd.Stdin = os.Stdin
74+
cmd.Stdout = os.Stdout
75+
cmd.Stderr = os.Stderr
76+
if err = cmd.Start(); err != nil {
77+
log.Fatal(err)
78+
}
79+
if err = cmd.Wait(); err != nil {
80+
log.Fatal(err)
81+
}
82+
83+
data, err = ioutil.ReadFile(f.Name())
84+
if err != nil {
85+
log.Fatal(err)
86+
}
87+
if err = json.Unmarshal(data, &d); err != nil {
88+
log.Fatal(err)
89+
}
90+
91+
d.SetId()
92+
fmt.Println(d.Id.String())
93+
}

docs/tools.md

+16
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,22 @@ Flags:
400400
```
401401

402402

403+
## mt-keygen
404+
405+
```
406+
mt-keygen
407+
408+
mt-keygen gives you the MKey for a specific MetricDefinition
409+
It fills a temp file with a template MetricDefinition
410+
It launches vim
411+
You fill in the important details - name / interval / tags /...
412+
It prints the MKey
413+
414+
-version
415+
print version string
416+
```
417+
418+
403419
## mt-schemas-explain
404420

405421
```

0 commit comments

Comments
 (0)