func getApacheOtelConfig()

in pkg/instrumentation/apachehttpd.go [193:265]


func getApacheOtelConfig(pod corev1.Pod, apacheSpec v1alpha1.ApacheHttpd, index int, otelEndpoint string, resourceMap map[string]string) string {
	template := `
#Load the Otel Webserver SDK
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_common.so
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_resources.so
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_trace.so
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_otlp_recordable.so
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_exporter_ostream_span.so
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_exporter_otlp_grpc.so
#Load the Otel ApacheModule SDK
LoadFile %[1]s/sdk_lib/lib/libopentelemetry_webserver_sdk.so
#Load the Apache Module. In this example for Apache 2.4
#LoadModule otel_apache_module %[1]s/WebServerModule/Apache/libmod_apache_otel.so
#Load the Apache Module. In this example for Apache 2.2
#LoadModule otel_apache_module %[1]s/WebServerModule/Apache/libmod_apache_otel22.so
LoadModule otel_apache_module %[1]s/WebServerModule/Apache/libmod_apache_otel%[2]s.so
#Attributes
`
	if otelEndpoint == "" {
		otelEndpoint = "http://localhost:4317/"
	}
	serviceName := chooseServiceName(pod, resourceMap, index)
	serviceNamespace := pod.GetNamespace()
	if len(serviceNamespace) == 0 {
		serviceNamespace = resourceMap[string(semconv.K8SNamespaceNameKey)]
		if len(serviceNamespace) == 0 {
			serviceNamespace = "apache-httpd"
		}

	}
	// Namespace name override TBD

	// There are two versions of the OTEL modules - for Apache HTTPD 2.4 and 2.2.
	// 2.4 is default and the module does not have any version suffix
	// 2.2 has version suffix "22"
	versionSuffix := ""
	if apacheSpec.Version == "2.2" {
		versionSuffix = "22"
	}

	attrMap := map[string]string{
		"ApacheModuleEnabled": "ON",
		// ApacheModule Otel Exporter details
		"ApacheModuleOtelSpanExporter":     "otlp",
		"ApacheModuleOtelExporterEndpoint": otelEndpoint,
		// Service name and other IDs
		"ApacheModuleServiceName":       serviceName,
		"ApacheModuleServiceNamespace":  serviceNamespace,
		"ApacheModuleServiceInstanceId": apacheServiceInstanceId,

		"ApacheModuleResolveBackends": " ON",
		"ApacheModuleTraceAsError":    " ON",
	}
	for _, attr := range apacheSpec.Attrs {
		attrMap[attr.Name] = attr.Value
	}

	configFileContent := fmt.Sprintf(template,
		apacheAgentDirectory+apacheAgentSubDirectory,
		versionSuffix)

	keys := make([]string, 0, len(attrMap))
	for key := range attrMap {
		keys = append(keys, key)
	}
	sort.Strings(keys)

	for _, key := range keys {
		configFileContent += fmt.Sprintf("%s %s\n", key, attrMap[key])
	}

	return configFileContent
}