1 Star 0 Fork 0

tianmaotalk/promtail_embedded

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
manager.go 4.06 KB
一键复制 编辑 原始数据 按行查看 历史
zhimin.tian 提交于 2023-09-08 10:23 +08:00 . init
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()
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/tianmaotalk/promtail_embedded.git
git@gitee.com:tianmaotalk/promtail_embedded.git
tianmaotalk
promtail_embedded
promtail_embedded
10aecdb7d823

搜索帮助