github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/application/applications/metricspersisting/config/metrics.go (about) 1 package config 2 3 import ( 4 toolsetslatest "github.com/caos/orbos/internal/operator/boom/api/latest" 5 ambassadormetrics "github.com/caos/orbos/internal/operator/boom/application/applications/apigateway/metrics" 6 "github.com/caos/orbos/internal/operator/boom/application/applications/apiserver" 7 "github.com/caos/orbos/internal/operator/boom/application/applications/boom" 8 "github.com/caos/orbos/internal/operator/boom/application/applications/database" 9 kubestatemetrics "github.com/caos/orbos/internal/operator/boom/application/applications/kubemetricsexporter/metrics" 10 lometrics "github.com/caos/orbos/internal/operator/boom/application/applications/logcollection/metrics" 11 lokimetrics "github.com/caos/orbos/internal/operator/boom/application/applications/logspersisting/metrics" 12 pometrics "github.com/caos/orbos/internal/operator/boom/application/applications/metriccollection/metrics" 13 "github.com/caos/orbos/internal/operator/boom/application/applications/metricspersisting/metrics" 14 "github.com/caos/orbos/internal/operator/boom/application/applications/metricspersisting/servicemonitor" 15 "github.com/caos/orbos/internal/operator/boom/application/applications/networking" 16 pnemetrics "github.com/caos/orbos/internal/operator/boom/application/applications/nodemetricsexporter/metrics" 17 "github.com/caos/orbos/internal/operator/boom/application/applications/orbiter" 18 argocdmetrics "github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/metrics" 19 psemetrics "github.com/caos/orbos/internal/operator/boom/application/applications/systemdmetricsexporter/metrics" 20 "github.com/caos/orbos/internal/operator/boom/application/applications/zitadel" 21 "github.com/caos/orbos/internal/operator/boom/labels" 22 ) 23 24 func ScrapeMetricsCrdsConfig(instanceName string, namespace string, toolsetCRDSpec *toolsetslatest.ToolsetSpec) *Config { 25 if toolsetCRDSpec.MetricsPersisting == nil || !toolsetCRDSpec.MetricsPersisting.Deploy { 26 return nil 27 } 28 servicemonitors := make([]*servicemonitor.Config, 0) 29 30 if toolsetCRDSpec.APIGateway != nil && toolsetCRDSpec.APIGateway.Deploy && 31 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Ambassador) { 32 servicemonitors = append(servicemonitors, ambassadormetrics.GetServicemonitor(instanceName)) 33 } 34 35 if toolsetCRDSpec.MetricCollection != nil && toolsetCRDSpec.MetricCollection.Deploy && 36 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.PrometheusOperator) { 37 servicemonitors = append(servicemonitors, pometrics.GetServicemonitor(instanceName)) 38 } 39 40 if toolsetCRDSpec.NodeMetricsExporter != nil && toolsetCRDSpec.NodeMetricsExporter.Deploy && 41 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.PrometheusNodeExporter) { 42 servicemonitors = append(servicemonitors, pnemetrics.GetServicemonitors(instanceName)...) 43 } 44 45 if toolsetCRDSpec.SystemdMetricsExporter != nil && toolsetCRDSpec.SystemdMetricsExporter.Deploy && 46 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.PrometheusSystemdExporter) { 47 servicemonitors = append(servicemonitors, psemetrics.GetServicemonitor(instanceName)) 48 } 49 50 if toolsetCRDSpec.KubeMetricsExporter != nil && toolsetCRDSpec.KubeMetricsExporter.Deploy && 51 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.KubeStateMetrics) { 52 servicemonitors = append(servicemonitors, kubestatemetrics.GetServicemonitors(instanceName)...) 53 } 54 55 if toolsetCRDSpec.Reconciling != nil && toolsetCRDSpec.Reconciling.Deploy && 56 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Argocd) { 57 servicemonitors = append(servicemonitors, argocdmetrics.GetServicemonitors(instanceName)...) 58 } 59 60 if toolsetCRDSpec.LogCollection != nil && toolsetCRDSpec.LogCollection.Deploy && 61 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.LoggingOperator) { 62 servicemonitors = append(servicemonitors, lometrics.GetServicemonitors(instanceName)...) 63 } 64 65 if toolsetCRDSpec.LogsPersisting != nil && toolsetCRDSpec.LogsPersisting.Deploy && 66 (toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Loki) { 67 servicemonitors = append(servicemonitors, lokimetrics.GetServicemonitor(instanceName)) 68 } 69 70 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Prometheus { 71 servicemonitors = append(servicemonitors, metrics.GetServicemonitor(instanceName)) 72 } 73 74 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.APIServer { 75 servicemonitors = append(servicemonitors, apiserver.GetServicemonitor(instanceName)) 76 } 77 78 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Boom { 79 servicemonitors = append(servicemonitors, boom.GetServicemonitor(instanceName)) 80 } 81 82 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Orbiter { 83 servicemonitors = append(servicemonitors, orbiter.GetServicemonitor(instanceName)) 84 } 85 86 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Zitadel { 87 for _, sm := range zitadel.GetServicemonitors(instanceName) { 88 servicemonitors = append(servicemonitors, sm) 89 } 90 } 91 92 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Database { 93 for _, sm := range database.GetServicemonitors(instanceName) { 94 servicemonitors = append(servicemonitors, sm) 95 } 96 } 97 98 if toolsetCRDSpec.MetricsPersisting.Metrics == nil || toolsetCRDSpec.MetricsPersisting.Metrics.Networking { 99 servicemonitors = append(servicemonitors, networking.GetServicemonitor(instanceName)) 100 } 101 102 prom := &Config{ 103 Prefix: "", 104 Namespace: namespace, 105 MonitorLabels: labels.GetMonitorSelectorLabels(instanceName), 106 RuleLabels: labels.GetRuleSelectorLabels(instanceName), 107 ServiceMonitors: servicemonitors, 108 AdditionalScrapeConfigs: getScrapeConfigs(), 109 } 110 111 if toolsetCRDSpec.MetricsPersisting.Storage != nil { 112 prom.StorageSpec = &StorageSpec{ 113 StorageClass: toolsetCRDSpec.MetricsPersisting.Storage.StorageClass, 114 Storage: toolsetCRDSpec.MetricsPersisting.Storage.Size, 115 } 116 117 if toolsetCRDSpec.MetricsPersisting.Storage.AccessModes != nil { 118 prom.StorageSpec.AccessModes = toolsetCRDSpec.MetricsPersisting.Storage.AccessModes 119 } 120 } 121 122 return prom 123 }