Esempio n. 1
0
// Run periodically calls m.updateHandler.
func (m *MetricTags) Run() {
	// Collect Go's runtime stats the first time this is run.
	metrics.RegisterDebugGCStats(m.registry)
	metrics.RegisterRuntimeMemStats(m.registry)

	updateTime := m.nowHandler()
	gcTime, memTime := updateTime, updateTime
	for {
		now := m.nowHandler()
		// Get GC runtime stats
		if now.Sub(gcTime) > m.StatsGCCollection {
			metrics.CaptureDebugGCStatsOnce(m.registry)
			gcTime = now
		}
		// Get memory runtime stats
		if now.Sub(memTime) > m.StatsMemCollection {
			metrics.CaptureRuntimeMemStatsOnce(m.registry)
			memTime = now
		}
		select {
		case <-m.quitCh:
			// Update stats one last time
			m.updateHandler()
			m.quitCh <- struct{}{}
			return
		case <-time.After(m.flushInterval):
			m.updateHandler()
		}
	}
}
Esempio n. 2
0
func newGCMetricaDataSource(pollInterval int) goMetricaDataSource {
	r := metrics.NewRegistry()

	metrics.RegisterDebugGCStats(r)
	go metrics.CaptureDebugGCStats(r, time.Duration(pollInterval)*time.Second)
	return goMetricaDataSource{r}
}
Esempio n. 3
0
func (s *stats) start() {
	// Register GC stats.
	registerGCStats(s.registry)
	go captureGCStats(s.registry, recordInterval)

	// Register rusage stats.
	registerRusageStats(s.registry)
	go captureRusageStats(s.registry, recordInterval)

	// Register debug stats.
	metrics.RegisterDebugGCStats(s.registry)
	go metrics.CaptureDebugGCStats(s.registry, recordInterval)

	// Register runtime stats.
	metrics.RegisterRuntimeMemStats(s.registry)
	go metrics.CaptureRuntimeMemStats(s.registry, recordInterval)

	// Start monitoring
	go s.monitor()
}