func SetGlobalSettingsInCollectorConfig()

in otelcollector/shared/configmap/mp/tomlparser-set-global-config.go [44:92]


func SetGlobalSettingsInCollectorConfig() {
	azmonSetGlobalSettings := os.Getenv("AZMON_SET_GLOBAL_SETTINGS")

	if azmonSetGlobalSettings == "true" {
		mergedCollectorConfigPath := "/opt/microsoft/otelcollector/collector-config.yml"
		mergedCollectorConfigFileContents, err := os.ReadFile(mergedCollectorConfigPath)
		if err != nil {
			fmt.Printf("Unable to read file contents from: %s - %v\n", mergedCollectorConfigPath, err)
			return
		}
		var promScrapeConfig map[string]interface{}
		var otelConfig OtelConfig
		err = yaml.Unmarshal([]byte(mergedCollectorConfigFileContents), &otelConfig)
		if err != nil {
			fmt.Printf("Unable to unmarshal merged otel configuration from: %s - %v\n", mergedCollectorConfigFileContents, err)
			return
		}

		promScrapeConfig = otelConfig.Receivers.Prometheus.Config
		globalSettingsFromMergedOtelConfig := promScrapeConfig["global"]

		if globalSettingsFromMergedOtelConfig != nil {
			fmt.Println("Found global settings in merged otel config, triyng to replace replicaset collector config")
			collectorConfigReplicasetPath := "/opt/microsoft/otelcollector/collector-config-replicaset.yml"
			replicasetCollectorConfigFileContents, err := os.ReadFile(collectorConfigReplicasetPath)
			if err != nil {
				fmt.Printf("Unable to read file contents from: %s - %v\n", replicasetCollectorConfigFileContents, err)
				return
			}
			var otelConfigReplicaset OtelConfig
			err = yaml.Unmarshal([]byte(replicasetCollectorConfigFileContents), &otelConfigReplicaset)
			if err != nil {
				fmt.Printf("Unable to unmarshal merged otel configuration from: %s - %v\n", replicasetCollectorConfigFileContents, err)
				return
			}
			otelConfigReplicaset.Receivers.Prometheus.Config = map[string]interface{}{"global": ""}
			otelConfigReplicaset.Receivers.Prometheus.Config["global"] = globalSettingsFromMergedOtelConfig
			otelReplacedConfigYaml, _ := yaml.Marshal(otelConfigReplicaset)
			if err := os.WriteFile(collectorConfigReplicasetPath, otelReplacedConfigYaml, 0644); err != nil {
				fmt.Printf("Unable to write to: %s - %v\n", collectorConfigReplicasetPath, err)
				return
			}

			log.Println("Updated file with global settings", collectorConfigReplicasetPath)
			return
		}
		fmt.Println("Global settings are empty in custom config map, making no replacement")
	}
}