in cmd/amazon-cloudwatch-agent-target-allocator/watcher/promOperator.go [210:273]
func (w *PrometheusCRWatcher) LoadConfig(ctx context.Context) (*promconfig.Config, error) {
store := assets.NewStore(w.k8sClient.CoreV1(), w.k8sClient.CoreV1())
serviceMonitorInstances := make(map[string]*monitoringv1.ServiceMonitor)
smRetrieveErr := w.informers[monitoringv1.ServiceMonitorName].ListAll(w.serviceMonitorSelector, func(sm interface{}) {
monitor := sm.(*monitoringv1.ServiceMonitor)
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(monitor)
w.addStoreAssetsForServiceMonitor(ctx, monitor.Name, monitor.Namespace, monitor.Spec.Endpoints, store)
serviceMonitorInstances[key] = monitor
})
if smRetrieveErr != nil {
return nil, smRetrieveErr
}
podMonitorInstances := make(map[string]*monitoringv1.PodMonitor)
pmRetrieveErr := w.informers[monitoringv1.PodMonitorName].ListAll(w.podMonitorSelector, func(pm interface{}) {
monitor := pm.(*monitoringv1.PodMonitor)
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(monitor)
w.addStoreAssetsForPodMonitor(ctx, monitor.Name, monitor.Namespace, monitor.Spec.PodMetricsEndpoints, store)
podMonitorInstances[key] = monitor
})
if pmRetrieveErr != nil {
return nil, pmRetrieveErr
}
generatedConfig, err := w.configGenerator.GenerateServerConfiguration(
ctx,
"30s",
"",
nil,
nil,
monitoringv1.TSDBSpec{},
nil,
nil,
serviceMonitorInstances,
podMonitorInstances,
map[string]*monitoringv1.Probe{},
map[string]*promv1alpha1.ScrapeConfig{},
store,
nil,
nil,
nil,
[]string{})
if err != nil {
return nil, err
}
promCfg := &promconfig.Config{}
unmarshalErr := yaml.Unmarshal(generatedConfig, promCfg)
if unmarshalErr != nil {
return nil, unmarshalErr
}
// set kubeconfig path to service discovery configs, else kubernetes_sd will always attempt in-cluster
// authentication even if running with a detected kubeconfig
for _, scrapeConfig := range promCfg.ScrapeConfigs {
for _, serviceDiscoveryConfig := range scrapeConfig.ServiceDiscoveryConfigs {
if serviceDiscoveryConfig.Name() == "kubernetes" {
sdConfig := interface{}(serviceDiscoveryConfig).(*kubeDiscovery.SDConfig)
sdConfig.KubeConfig = w.kubeConfigPath
}
}
}
return promCfg, nil
}