代码拉取完成,页面将自动刷新
package targets
import (
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/api"
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/positions"
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/scrapeconfig"
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/targets/file"
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/targets/target"
"github.com/go-kit/kit/log"
"github.com/pkg/errors"
"github.com/prometheus/client_golang/prometheus"
)
const (
FileScrapeConfigs = "fileScrapeConfigs"
JournalScrapeConfigs = "journalScrapeConfigs"
)
type targetManager interface {
Ready() bool
Stop()
ActiveTargets() map[string][]target.Target
AllTargets() map[string][]target.Target
}
// TargetManagers manages a list of target managers.
type TargetManagers struct {
targetManagers []targetManager
positions positions.Positions
}
// NewTargetManagers makes a new TargetManagers
func NewTargetManagers(
reg prometheus.Registerer,
logger log.Logger,
positionsConfig positions.Config,
client api.EntryHandler,
scrapeConfigs []scrapeconfig.Config,
targetConfig *file.Config,
) (*TargetManagers, error) {
var targetManagers []targetManager
targetScrapeConfigs := make(map[string][]scrapeconfig.Config, 4)
//if targetConfig.Stdin {
// level.Debug(logger).Log("msg", "configured to read from stdin")
// stdin, err := stdin.NewStdinTargetManager(reg, logger, app, client, scrapeConfigs)
// if err != nil {
// return nil, err
// }
// targetManagers = append(targetManagers, stdin)
// return &TargetManagers{targetManagers: targetManagers}, nil
//}
for _, cfg := range scrapeConfigs {
switch {
case cfg.HasServiceDiscoveryConfig():
targetScrapeConfigs[FileScrapeConfigs] = append(targetScrapeConfigs[FileScrapeConfigs], cfg)
case cfg.JournalConfig != nil:
targetScrapeConfigs[JournalScrapeConfigs] = append(targetScrapeConfigs[JournalScrapeConfigs], cfg)
default:
return nil, errors.New("unknown scrape config")
}
}
var positionFile positions.Positions
// position file is a singleton, we use a function to keep it so.
getPositionFile := func() (positions.Positions, error) {
if positionFile == nil {
var err error
positionFile, err = positions.New(logger, positionsConfig)
if err != nil {
return nil, err
}
}
return positionFile, nil
}
var (
fileMetrics *file.Metrics
)
if len(targetScrapeConfigs[FileScrapeConfigs]) > 0 {
fileMetrics = file.NewMetrics(reg)
}
for target, scrapeConfigs := range targetScrapeConfigs {
switch target {
case FileScrapeConfigs:
pos, err := getPositionFile()
if err != nil {
return nil, err
}
fileTargetManager, err := file.NewFileTargetManager(
fileMetrics,
logger,
pos,
client,
scrapeConfigs,
targetConfig,
)
if err != nil {
return nil, errors.Wrap(err, "failed to make file target manager")
}
targetManagers = append(targetManagers, fileTargetManager)
default:
return nil, errors.New("unknown scrape config")
}
}
return &TargetManagers{
targetManagers: targetManagers,
positions: positionFile,
}, nil
}
// ActiveTargets returns active targets per jobs
func (tm *TargetManagers) ActiveTargets() map[string][]target.Target {
result := map[string][]target.Target{}
for _, t := range tm.targetManagers {
for job, targets := range t.ActiveTargets() {
result[job] = append(result[job], targets...)
}
}
return result
}
// AllTargets returns all targets per jobs
func (tm *TargetManagers) AllTargets() map[string][]target.Target {
result := map[string][]target.Target{}
for _, t := range tm.targetManagers {
for job, targets := range t.AllTargets() {
result[job] = append(result[job], targets...)
}
}
return result
}
// Ready if there's at least one ready target manager.
func (tm *TargetManagers) Ready() bool {
for _, t := range tm.targetManagers {
if t.Ready() {
return true
}
}
return false
}
// Stop the TargetManagers.
func (tm *TargetManagers) Stop() {
for _, t := range tm.targetManagers {
t.Stop()
}
if tm.positions != nil {
tm.positions.Stop()
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。