func (s *alertmanagerSet) sync(tgs []*targetgroup.Group) {
	allAms := []alertmanager{}
	allDroppedAms := []alertmanager{}

	for _, tg := range tgs {
		ams, droppedAms, err := alertmanagerFromGroup(tg, s.cfg)
		if err != nil {
			level.Error(s.logger).Log("msg", "Creating discovered Alertmanagers failed", "err", err)
			continue
		}
		allAms = append(allAms, ams...)
		allDroppedAms = append(allDroppedAms, droppedAms...)
	}

	s.mtx.Lock()
	defer s.mtx.Unlock()
	// Set new Alertmanagers and deduplicate them along their unique URL.
	s.ams = []alertmanager{}
	s.droppedAms = []alertmanager{}
	s.droppedAms = append(s.droppedAms, allDroppedAms...)
	seen := map[string]struct{}{}

	for _, am := range allAms {
		us := am.url().String()
		if _, ok := seen[us]; ok {
			continue
		}

		// This will initialize the Counters for the AM to 0.
		s.metrics.sent.WithLabelValues(us)
		s.metrics.errors.WithLabelValues(us)

		seen[us] = struct{}{}
		s.ams = append(s.ams, am)
	}
}
func (s *alertmanagerSet) sync(tgs []*targetgroup.Group) {
	allAms := []alertmanager{}
	allDroppedAms := []alertmanager{}

	for _, tg := range tgs {
		ams, droppedAms, err := alertmanagerFromGroup(tg, s.cfg)
		if err != nil {
			level.Error(s.logger).Log("msg", "Creating discovered Alertmanagers failed", "err", err)
			continue
		}
		allAms = append(allAms, ams...)
		allDroppedAms = append(allDroppedAms, droppedAms...)
	}

	s.mtx.Lock()
	defer s.mtx.Unlock()
	
	s.ams = []alertmanager{}
	s.droppedAms = []alertmanager{}
	s.droppedAms = append(s.droppedAms, allDroppedAms...)
	seen := map[string]struct{}{}

	for _, am := range allAms {
		us := am.url().String()
		if _, ok := seen[us]; ok {
			continue
		}

		
		s.metrics.sent.WithLabelValues(us)
		s.metrics.errors.WithLabelValues(us)

		seen[us] = struct{}{}
		s.ams = append(s.ams, am)
	}
}
func ( s * alertmanagerSet ) sync ( tgs [ ] * targetgroup . Group ) { allAms := [ ] alertmanager { } allDroppedAms := [ ] alertmanager { } for _ , tg := range tgs { ams , droppedAms , err := alertmanagerFromGroup ( tg , s . cfg ) if err != nil { level . Error ( s . logger ) . Log ( " " , " " , " " , err ) continue } allAms = append ( allAms , ams ... ) allDroppedAms = append ( allDroppedAms , droppedAms ... ) } s . mtx . Lock ( ) defer s . mtx . Unlock ( ) // Set new Alertmanagers and deduplicate them along their unique URL. s . ams = [ ] alertmanager { } s . droppedAms = [ ] alertmanager { } s . droppedAms = append ( s . droppedAms , allDroppedAms ... ) seen := map [ string ] struct { } { } for _ , am := range allAms { us := am . url ( ) . String ( ) if _ , ok := seen [ us ] ; ok { continue } // This will initialize the Counters for the AM to 0. s . metrics . sent . WithLabelValues ( us ) s . metrics . errors . WithLabelValues ( us ) seen [ us ] = struct { } { } s . ams = append ( s . ams , am ) } }
// sync extracts a deduplicated set of Alertmanager endpoints from a list
// of target groups definitions.
sync extracts a deduplicated set of Alertmanager endpoints from a list of target groups definitions .