prometheus_1C_exporter
/
main.go
80 строк · 2.1 Кб
1package main
2
3//go:generate go run install/release.go
4// //go:generate git commit -am "bump $PROM_VERSION"
5// //go:generate git tag -af $PROM_VERSION -m "$PROM_VERSION"
6
7import (
8"flag"
9"fmt"
10"math/rand"
11"os"
12"time"
13
14"github.com/judwhite/go-svc"
15
16exp "github.com/LazarenkoA/prometheus_1C_exporter/explorers"
17"github.com/LazarenkoA/prometheus_1C_exporter/logger"
18"github.com/LazarenkoA/prometheus_1C_exporter/settings"
19)
20
21var (
22version = "undefined"
23gitCommit = "undefined"
24)
25
26func init() {
27exp.CForce = make(chan struct{}, 1)
28rand.Seed(time.Now().Unix())
29}
30
31func main() {
32var settingsPath, port string
33var help, v bool
34
35flag.StringVar(&settingsPath, "settings", "", "Путь к файлу настроек")
36flag.StringVar(&port, "port", "9091", "Порт для прослушивания")
37flag.BoolVar(&help, "help", false, "Помощь")
38flag.BoolVar(&v, "version", false, "Версия")
39flag.Parse()
40
41if help {
42flag.Usage()
43return
44}
45if v {
46fmt.Printf("Версия: %s\n", version)
47return
48}
49if settingsPath == "" {
50fmt.Println("не заполнен параметр \"settings\"")
51os.Exit(1)
52}
53
54s, err := settings.LoadSettings(settingsPath)
55if err != nil {
56fmt.Println(err)
57os.Exit(1)
58}
59
60logger.InitLogger(s.LogDir, s.LogLevel)
61logger.DefaultLogger.Infof("Версия: %q, gitCommit: %q", version, gitCommit)
62
63if err := svc.Run(&app{settings: s, port: port}); err != nil {
64logger.DefaultLogger.Error(err)
65os.Exit(1)
66}
67}
68
69// add info
70// go build -o "1c_exporter" -ldflags "-s -w" - билд чутка меньше размером
71// ansible app_servers -m shell -a "systemctl stop 1c_exporter.service && yes | cp /mnt/share/GO/prometheus_1C_exporter/1c_exporter /usr/local/bin/1c_exporter && systemctl start 1c_exporter.service"
72//
73// pprof
74// https://www.jajaldoang.com/post/profiling-go-app-with-pprof/
75// go tool pprof -svg heap > out.svg (визуальный граф)
76// go tool pprof -http=:8082 .\heap (просмотр в браузере)
77//
78// go vet -vettool="C:\GOPATH\go\bin\fieldalignment.exe" ./...
79//
80// go test -fuzz=Fuzz_formatMultiResult .\explorers\ -fuzztime=30s
81