Loops 普罗米修斯仪表,带定制收集器-go
我在“重置”仪表的值时遇到问题,因为http servervice启动时“生命停止”,或者当我开始循环“runJob”时,服务器未启动 我试图证明这一点的方式: 我从YAML数组加载所有作业。 我从中生成仪表,然后运行循环来获取它们的一些值。 然后我注册它们 然后我为普罗米修斯启动http服务 所有的工作都很完美,直到下一个周期——下一个周期还没有开始 我试图在函数内部移动函数等 这就是我的主要功能:Loops 普罗米修斯仪表,带定制收集器-go,loops,go,prometheus,Loops,Go,Prometheus,我在“重置”仪表的值时遇到问题,因为http servervice启动时“生命停止”,或者当我开始循环“runJob”时,服务器未启动 我试图证明这一点的方式: 我从YAML数组加载所有作业。 我从中生成仪表,然后运行循环来获取它们的一些值。 然后我注册它们 然后我为普罗米修斯启动http服务 所有的工作都很完美,直到下一个周期——下一个周期还没有开始 我试图在函数内部移动函数等 这就是我的主要功能: //gets poll time from yaml (60s) ti
//gets poll time from yaml (60s)
timerCh := time.Tick(time.Duration(appConf.PollTimeSec) * time.Second)
//loop after given time
for range timerCh {
runJobs()
}
//start new muxServer
server := http.NewServeMux()
log.Println("DEBUG: Starting server")
server.Handle(appConf.HostPath, promhttp.Handler())
http.ListenAndServe(":"+appConf.ListenerPort, server)
我的runJobs函数基本上获取Http响应代码
并将其广告给普罗米修斯测量值。
--这一切都很好,在开始时效果很好,但在我尝试开始睡眠时(如主围棋所示),它就卡住了-
服务器已启动,值未更改
因此,我有(我的选择)两种可能的修复方法:
- 这就是服务器未启动的原因
- 但当我在那个里添加了一个if语句,即在第一次运行(循环)时应该启动服务器,那个么当服务器启动时,它仍然会卡住(下一个循环循环就不会启动)
服务器以第一个值启动,每分钟后它都会再次运行“runJobs”。按照它的编写方式,您的程序不会超出for循环。请尝试以下方法:
go func() {
//loop after given time
for range timerCh {
runJobs()
}
}()
它在自己的goroutine中运行for循环,runJobs每隔一段时间执行一次