prometheus_1C_exporter

Форк
0
80 строк · 2.1 Кб
1
package 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

7
import (
8
	"flag"
9
	"fmt"
10
	"math/rand"
11
	"os"
12
	"time"
13

14
	"github.com/judwhite/go-svc"
15

16
	exp "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

21
var (
22
	version   = "undefined"
23
	gitCommit = "undefined"
24
)
25

26
func init() {
27
	exp.CForce = make(chan struct{}, 1)
28
	rand.Seed(time.Now().Unix())
29
}
30

31
func main() {
32
	var settingsPath, port string
33
	var help, v bool
34

35
	flag.StringVar(&settingsPath, "settings", "", "Путь к файлу настроек")
36
	flag.StringVar(&port, "port", "9091", "Порт для прослушивания")
37
	flag.BoolVar(&help, "help", false, "Помощь")
38
	flag.BoolVar(&v, "version", false, "Версия")
39
	flag.Parse()
40

41
	if help {
42
		flag.Usage()
43
		return
44
	}
45
	if v {
46
		fmt.Printf("Версия: %s\n", version)
47
		return
48
	}
49
	if settingsPath == "" {
50
		fmt.Println("не заполнен параметр \"settings\"")
51
		os.Exit(1)
52
	}
53

54
	s, err := settings.LoadSettings(settingsPath)
55
	if err != nil {
56
		fmt.Println(err)
57
		os.Exit(1)
58
	}
59

60
	logger.InitLogger(s.LogDir, s.LogLevel)
61
	logger.DefaultLogger.Infof("Версия: %q, gitCommit: %q", version, gitCommit)
62

63
	if err := svc.Run(&app{settings: s, port: port}); err != nil {
64
		logger.DefaultLogger.Error(err)
65
		os.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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.