mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-14 16:12:15 +01:00
lib/promscrape: export vm_promscrape_active_scrapers{type="<sd_type>"}
metric for tracking the number of active scrapers per each service discovery type
This commit is contained in:
parent
b5b32c65b0
commit
56a0b058c1
@ -5,6 +5,7 @@
|
||||
* FEATURE: allow multiple whitespace chars between measurements, fields and timestamp when parsing InfluxDB line protocol.
|
||||
Though [InfluxDB line protocol](https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_tutorial/) denies multiple whitespace chars between these entities,
|
||||
some apps improperly put multiple whitespace chars. This workaround allows accepting data from such apps.
|
||||
* FEATURE: export `vm_promscrape_active_scrapers{type="<sd_type>"}` metric for tracking the number of active scrapers per each service discovery type.
|
||||
|
||||
* BUGFIX: prevent from duplicate `name` tag returned from `/tags/autoComplete/tags` handler. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/942
|
||||
* BUGFIX: do not enable strict parsing for `-promscrape.config` if `-promscrape.config.dryRun` comand-line flag is set. Strict parsing can be enabled with `-promscrape.config.strictParse` command-line flag. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/944
|
||||
|
@ -244,20 +244,24 @@ func (scfg *scrapeConfig) run() {
|
||||
}
|
||||
|
||||
type scraperGroup struct {
|
||||
name string
|
||||
wg sync.WaitGroup
|
||||
mLock sync.Mutex
|
||||
m map[string]*scraper
|
||||
pushData func(wr *prompbmarshal.WriteRequest)
|
||||
changesCount *metrics.Counter
|
||||
name string
|
||||
wg sync.WaitGroup
|
||||
mLock sync.Mutex
|
||||
m map[string]*scraper
|
||||
pushData func(wr *prompbmarshal.WriteRequest)
|
||||
|
||||
changesCount *metrics.Counter
|
||||
activeScrapers *metrics.Counter
|
||||
}
|
||||
|
||||
func newScraperGroup(name string, pushData func(wr *prompbmarshal.WriteRequest)) *scraperGroup {
|
||||
sg := &scraperGroup{
|
||||
name: name,
|
||||
m: make(map[string]*scraper),
|
||||
pushData: pushData,
|
||||
changesCount: metrics.NewCounter(fmt.Sprintf(`vm_promscrape_config_changes_total{type=%q}`, name)),
|
||||
name: name,
|
||||
m: make(map[string]*scraper),
|
||||
pushData: pushData,
|
||||
|
||||
changesCount: metrics.NewCounter(fmt.Sprintf(`vm_promscrape_config_changes_total{type=%q}`, name)),
|
||||
activeScrapers: metrics.NewCounter(fmt.Sprintf(`vm_promscrape_active_scrapers{type=%q}`, name)),
|
||||
}
|
||||
metrics.NewGauge(fmt.Sprintf(`vm_promscrape_targets{type=%q, status="up"}`, name), func() float64 {
|
||||
return float64(tsmGlobal.StatusByGroup(sg.name, true))
|
||||
@ -308,11 +312,13 @@ func (sg *scraperGroup) update(sws []ScrapeWork) {
|
||||
|
||||
// Start a scraper for the missing key.
|
||||
sc := newScraper(sw, sg.name, sg.pushData)
|
||||
sg.activeScrapers.Inc()
|
||||
sg.wg.Add(1)
|
||||
go func() {
|
||||
defer sg.wg.Done()
|
||||
sc.sw.run(sc.stopCh)
|
||||
tsmGlobal.Unregister(sw)
|
||||
sg.activeScrapers.Dec()
|
||||
}()
|
||||
tsmGlobal.Register(sw)
|
||||
sg.m[key] = sc
|
||||
|
Loading…
Reference in New Issue
Block a user