@@ -2,11 +2,12 @@ package construct
22
33import (
44 "fmt"
5- "github.com/mongodb/mongodb-kubernetes-operator/pkg/util/envvar"
65 "os"
76 "strconv"
87 "strings"
98
9+ "github.com/mongodb/mongodb-kubernetes-operator/pkg/util/envvar"
10+
1011 "github.com/mongodb/mongodb-kubernetes-operator/pkg/automationconfig"
1112 "github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/container"
1213 "github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/persistentvolumeclaim"
@@ -53,13 +54,14 @@ const (
5354 VersionUpgradeHookImageEnv = "VERSION_UPGRADE_HOOK_IMAGE"
5455 ReadinessProbeImageEnv = "READINESS_PROBE_IMAGE"
5556 agentLogLevelEnv = "AGENT_LOG_LEVEL"
57+ agentLogFileEnv = "AGENT_LOG_FILE"
5658 agentMaxLogFileDurationHoursEnv = "AGENT_MAX_LOG_FILE_DURATION_HOURS"
5759
5860 automationMongodConfFileName = "automation-mongod.conf"
5961 keyfileFilePath = "/var/lib/mongodb-mms-automation/authentication/keyfile"
6062
6163 automationAgentOptions = " -skipMongoStart -noDaemonize -useLocalMongoDbTools"
62- automationAgentLogOptions = " -logFile /var/log/mongodb-mms-automation/automation-agent.log -maxLogFileDurationHrs ${AGENT_MAX_LOG_FILE_DURATION_HOURS} -logLevel ${AGENT_LOG_LEVEL}"
64+ automationAgentLogOptions = " -logFile ${AGENT_LOG_FILE} -maxLogFileDurationHrs ${AGENT_MAX_LOG_FILE_DURATION_HOURS} -logLevel ${AGENT_LOG_LEVEL}"
6365
6466 MongodbUserCommand = `current_uid=$(id -u)
6567AGENT_API_KEY="$(cat /mongodb-automation/agent-api-key/agentApiKey)"
@@ -98,6 +100,8 @@ type MongoDBStatefulSetOwner interface {
98100 LogsVolumeName () string
99101 // GetAgentLogLevel returns the log level for the MongoDB automation agent.
100102 GetAgentLogLevel () mdbv1.LogLevel
103+ // GetAgentLogFile returns the log file for the MongoDB automation agent.
104+ GetAgentLogFile () string
101105 // GetAgentMaxLogFileDurationHours returns the number of hours after which the log file should be rolled.
102106 GetAgentMaxLogFileDurationHours () int
103107
@@ -177,6 +181,11 @@ func BuildMongoDBReplicaSetStatefulSetModificationFunction(mdb MongoDBStatefulSe
177181 agentLogLevel = string (mdb .GetAgentLogLevel ())
178182 }
179183
184+ agentLogFile := automationconfig .DefaultAgentLogFile
185+ if mdb .GetAgentLogFile () != "" {
186+ agentLogFile = mdb .GetAgentLogFile ()
187+ }
188+
180189 agentMaxLogFileDurationHours := automationconfig .DefaultAgentMaxLogFileDurationHours
181190 if mdb .GetAgentMaxLogFileDurationHours () != 0 {
182191 agentMaxLogFileDurationHours = mdb .GetAgentMaxLogFileDurationHours ()
@@ -204,7 +213,7 @@ func BuildMongoDBReplicaSetStatefulSetModificationFunction(mdb MongoDBStatefulSe
204213 podtemplatespec .WithVolume (tmpVolume ),
205214 podtemplatespec .WithVolume (keyFileVolume ),
206215 podtemplatespec .WithServiceAccount (mongodbDatabaseServiceAccountName ),
207- podtemplatespec .WithContainer (AgentName , mongodbAgentContainer (mdb .AutomationConfigSecretName (), mongodbAgentVolumeMounts , agentLogLevel , agentMaxLogFileDurationHours )),
216+ podtemplatespec .WithContainer (AgentName , mongodbAgentContainer (mdb .AutomationConfigSecretName (), mongodbAgentVolumeMounts , agentLogLevel , agentLogFile , agentMaxLogFileDurationHours )),
208217 podtemplatespec .WithContainer (MongodbName , mongodbContainer (mdb .GetMongoDBVersion (), mongodVolumeMounts , mdb .GetMongodConfiguration ())),
209218 podtemplatespec .WithInitContainer (versionUpgradeHookName , versionUpgradeHookInit ([]corev1.VolumeMount {hooksVolumeMount })),
210219 podtemplatespec .WithInitContainer (ReadinessProbeContainerName , readinessProbeInit ([]corev1.VolumeMount {scriptsVolumeMount })),
@@ -220,7 +229,7 @@ func AutomationAgentCommand() []string {
220229 return []string {"/bin/bash" , "-c" , MongodbUserCommand + BaseAgentCommand () + " -cluster=" + clusterFilePath + automationAgentOptions + automationAgentLogOptions }
221230}
222231
223- func mongodbAgentContainer (automationConfigSecretName string , volumeMounts []corev1.VolumeMount , logLevel string , maxLogFileDurationHours int ) container.Modification {
232+ func mongodbAgentContainer (automationConfigSecretName string , volumeMounts []corev1.VolumeMount , logLevel string , logFile string , maxLogFileDurationHours int ) container.Modification {
224233 _ , containerSecurityContext := podtemplatespec .WithDefaultSecurityContextsModifications ()
225234 return container .Apply (
226235 container .WithName (AgentName ),
@@ -257,6 +266,10 @@ func mongodbAgentContainer(automationConfigSecretName string, volumeMounts []cor
257266 Name : agentLogLevelEnv ,
258267 Value : logLevel ,
259268 },
269+ corev1.EnvVar {
270+ Name : agentLogFileEnv ,
271+ Value : logFile ,
272+ },
260273 corev1.EnvVar {
261274 Name : agentMaxLogFileDurationHoursEnv ,
262275 Value : strconv .Itoa (maxLogFileDurationHours ),
0 commit comments