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  }