mirror of
https://github.com/Chipazawra/v8-1c-cluster-pde.git
synced 2024-11-21 16:46:33 +02:00
commit
7c8091774a
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,2 @@
|
||||
.vscode/
|
||||
.vscode/
|
||||
bin/
|
@ -17,6 +17,8 @@ git clone https://github.com/Chipazawra/v8-1c-cluster-pde
|
||||
```
|
||||
RAS_HOST=<ras host>
|
||||
RAS_PORT=<ras port>
|
||||
AGNT_USER=<ras user - если есть>
|
||||
AGNT_PASS=<ras pass - если есть>
|
||||
CLS_USER=<ras user - если есть>
|
||||
CLS_PASS=<ras pass - если есть>
|
||||
```
|
||||
@ -33,8 +35,10 @@ docker-compose up
|
||||
```
|
||||
RAS_HOST - хост где запущен 1С-RAS, при запуске через терминал --ras-host
|
||||
RAS_PORT - порт где запущен 1С-RAS, при запуске через терминал --ras-port
|
||||
CLS_USER - пользователь 1С-RAS
|
||||
CLS_PASS - пароль пользователя 1С-RAS
|
||||
CLS_USER - администратор кластера 1С, при запуске через терминал --cls-user
|
||||
CLS_PASS - пароль администратора кластера 1С, при запуске через терминал --cls-pass
|
||||
AGNT_USER - администратор агента 1С, при запуске через терминал --agnt-pass
|
||||
AGNT_PASS - пароль администратор агента 1С, при запуске через терминал --agnt-pass
|
||||
MODE - режим работы экспортера принимает 2 значения push/pull
|
||||
PULL_EXPOSE - порт хоста на котором запущен экспортер `http://<host>:<PULL_EXPOSE>/metrics`, при запуске через терминал --pull-expose. Имеет смысл только в режиме pull
|
||||
|
||||
|
@ -30,6 +30,10 @@ var (
|
||||
PUSH_INTERVAL int
|
||||
PUSH_HOST string
|
||||
PUSH_PORT string
|
||||
AGNT_PASS string
|
||||
AGNT_USER string
|
||||
CLS_USER string
|
||||
CLS_PASS string
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -47,6 +51,10 @@ func init() {
|
||||
flag.IntVar(&PUSH_INTERVAL, "push-interval", 0, "mode push or pull")
|
||||
flag.StringVar(&PUSH_HOST, "push-host", "", "pushgateway host")
|
||||
flag.StringVar(&PUSH_PORT, "push-port", "", "pushgateway port")
|
||||
flag.StringVar(&AGNT_USER, "agnt-user", "", "agent user")
|
||||
flag.StringVar(&AGNT_PASS, "agnt-pass", "", "agent password")
|
||||
flag.StringVar(&CLS_USER, "cls-user", "", "cluster user")
|
||||
flag.StringVar(&CLS_PASS, "cls-pass", "", "cluster password")
|
||||
flag.Parse()
|
||||
|
||||
if RAS_HOST != "" {
|
||||
@ -77,20 +85,39 @@ func init() {
|
||||
conf.PUSH_PORT = PUSH_PORT
|
||||
}
|
||||
|
||||
if AGNT_USER != "" {
|
||||
conf.AGNT_USER = AGNT_USER
|
||||
}
|
||||
|
||||
if AGNT_PASS != "" {
|
||||
conf.AGNT_PASS = AGNT_PASS
|
||||
}
|
||||
|
||||
if CLS_USER != "" {
|
||||
conf.CLS_USER = CLS_USER
|
||||
}
|
||||
|
||||
if CLS_PASS != "" {
|
||||
conf.CLS_PASS = CLS_PASS
|
||||
}
|
||||
|
||||
log.Printf("v8-1c-cluster-pde: overrided config from stdin:\n%#v", conf)
|
||||
}
|
||||
|
||||
func Run() error {
|
||||
|
||||
rcli := rascli.NewClient(fmt.Sprintf("%s:%s", conf.RAS_HOST, conf.RAS_PORT))
|
||||
rcli.AuthenticateAgent(conf.CLS_USER, conf.CLS_PASS)
|
||||
rcli.AuthenticateAgent(conf.AGNT_USER, conf.AGNT_USER)
|
||||
|
||||
defer rcli.Close()
|
||||
|
||||
log.Printf("v8-1c-cluster-pde: connected to RAS %v",
|
||||
fmt.Sprintf("%s:%s", conf.RAS_HOST, conf.RAS_PORT),
|
||||
)
|
||||
|
||||
rhc := rpHostsCollector.New(rcli)
|
||||
rhc := rpHostsCollector.New(rcli,
|
||||
rpHostsCollector.WithCredentionals(conf.CLS_USER, conf.CLS_PASS),
|
||||
)
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
|
@ -5,6 +5,8 @@ type AppConfig struct {
|
||||
RAS_PORT string `env:"RAS_PORT" envDefault:"1545"`
|
||||
CLS_USER string `env:"CLS_USER"`
|
||||
CLS_PASS string `env:"CLS_PASS"`
|
||||
AGNT_USER string `env:"AGNT_USER"`
|
||||
AGNT_PASS string `env:"AGNT_PASS"`
|
||||
MODE string `env:"MODE" envDefault:"pull"`
|
||||
PUSH_INTERVAL int `env:"PUSH_INTERVAL" envDefault:"500"`
|
||||
PUSH_HOST string `env:"PUSH_HOST" envDefault:"localhost"`
|
||||
|
@ -14,6 +14,8 @@ import (
|
||||
|
||||
type rpHostsCollector struct {
|
||||
ctx context.Context
|
||||
clsuser string
|
||||
clspass string
|
||||
wg sync.WaitGroup
|
||||
rasapi rascli.Api
|
||||
rpHosts *prometheus.Desc
|
||||
@ -34,11 +36,20 @@ type rpHostsCollector struct {
|
||||
Enable *prometheus.Desc
|
||||
}
|
||||
|
||||
func New(rasapi rascli.Api) prometheus.Collector {
|
||||
type opt func(*rpHostsCollector)
|
||||
|
||||
func WithCredentionals(clsuser, clspass string) opt {
|
||||
return func(c *rpHostsCollector) {
|
||||
c.clsuser = clsuser
|
||||
c.clspass = clspass
|
||||
}
|
||||
}
|
||||
|
||||
func New(rasapi rascli.Api, opts ...opt) prometheus.Collector {
|
||||
|
||||
proccesLabels := []string{"cluster", "pid", "host", "port", "startedAt"}
|
||||
|
||||
return &rpHostsCollector{
|
||||
rpc := rpHostsCollector{
|
||||
ctx: context.Background(),
|
||||
rasapi: rasapi,
|
||||
rpHosts: prometheus.NewDesc(
|
||||
@ -106,6 +117,12 @@ func New(rasapi rascli.Api) prometheus.Collector {
|
||||
"host enable",
|
||||
proccesLabels, nil),
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(&rpc)
|
||||
}
|
||||
|
||||
return &rpc
|
||||
}
|
||||
|
||||
func (c *rpHostsCollector) Describe(ch chan<- *prometheus.Desc) {
|
||||
@ -123,6 +140,7 @@ func (c *rpHostsCollector) Collect(ch chan<- prometheus.Metric) {
|
||||
|
||||
for _, сluster := range сlusters {
|
||||
c.wg.Add(1)
|
||||
c.rasapi.AuthenticateCluster(сluster.UUID, c.clsuser, c.clspass)
|
||||
go c.funInCollect(ch, *сluster)
|
||||
}
|
||||
c.wg.Wait()
|
||||
|
Loading…
Reference in New Issue
Block a user