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
}