in clusterloader2/pkg/prometheus/prometheus.go [209:282]
func (pc *Controller) SetUpPrometheusStack() error {
k8sClient := pc.framework.GetClientSets().GetClient()
klog.V(2).Info("Setting up prometheus stack")
if err := client.CreateNamespace(k8sClient, namespace); err != nil {
return err
}
// Removing Storage Class as Reclaim Policy cannot be changed
if err := client.DeleteStorageClass(k8sClient, storageClass); err != nil {
return err
}
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.CoreManifests); err != nil {
return err
}
if pc.clusterLoaderConfig.PrometheusConfig.ScrapeNodeExporter {
if err := pc.runNodeExporter(); err != nil {
return err
}
}
if pc.clusterLoaderConfig.PrometheusConfig.ScrapeWindowsNodeExporter {
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.WindowsNodeExporterManifests); err != nil {
return err
}
} else {
// Backward compatibility
// If enabled scraping windows node, need to setup windows node and template mapping
if isWindowsNodeScrapingEnabled(pc.templateMapping, pc.clusterLoaderConfig) {
if err := setUpWindowsNodeAndTemplate(k8sClient, pc.templateMapping); err != nil {
return err
}
}
}
if !pc.isKubemark() {
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.DefaultServiceMonitors); err != nil {
return err
}
}
if pc.clusterLoaderConfig.PrometheusConfig.ScrapeKubeStateMetrics && pc.clusterLoaderConfig.ClusterConfig.Provider.Features().SupportKubeStateMetrics {
klog.V(2).Infof("Applying kube-state-metrics in the cluster.")
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.KubeStateMetricsManifests); err != nil {
return err
}
}
if pc.clusterLoaderConfig.PrometheusConfig.ScrapeMetricsServerMetrics && pc.clusterLoaderConfig.ClusterConfig.Provider.Features().SupportMetricsServerMetrics {
klog.V(2).Infof("Applying metrics server in the cluster.")
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.MetricsServerManifests); err != nil {
return err
}
}
if _, ok := pc.templateMapping["MasterIps"]; ok {
if err := pc.exposeAPIServerMetrics(); err != nil {
return err
}
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.MasterIPServiceMonitors); err != nil {
return err
}
}
if pc.clusterLoaderConfig.PrometheusConfig.EnablePushgateway {
klog.V(2).Infof("Applying Pushgateway in the cluster.")
if err := pc.applyManifests(pc.clusterLoaderConfig.PrometheusConfig.PushgatewayManifests); err != nil {
return err
}
}
if err := pc.waitForPrometheusToBeHealthy(); err != nil {
dumpAdditionalLogsOnPrometheusSetupFailure(k8sClient)
return err
}
klog.V(2).Info("Prometheus stack set up successfully")
if err := pc.cachePrometheusDiskMetadataIfEnabled(); err != nil {
klog.Warningf("Error while caching prometheus disk metadata: %v", err)
}
return nil
}