code: 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)
  	}
  }
docs: // sync extracts a deduplicated set of Alertmanager endpoints from a list
  // of target groups definitions.