diff --git a/docs-source/content/samples/simple/domains/domain-home-in-image/_index.md b/docs-source/content/samples/simple/domains/domain-home-in-image/_index.md index cddbe5b09cb..f8fea4b7d48 100644 --- a/docs-source/content/samples/simple/domains/domain-home-in-image/_index.md +++ b/docs-source/content/samples/simple/domains/domain-home-in-image/_index.md @@ -150,7 +150,7 @@ The following parameters can be provided in the inputs file. | `initialManagedServerReplicas` | Number of Managed Servers to initially start for the domain. | `2` | | `javaOptions` | Java options for starting the Administration Server and Managed Servers. A Java option can have references to one or more of the following pre-defined variables to obtain WebLogic domain information: `$(DOMAIN_NAME)`, `$(DOMAIN_HOME)`, `$(ADMIN_NAME)`, `$(ADMIN_PORT)`, and `$(SERVER_NAME)`. If `sslEnabled` is set to `true` and the WebLogic demo certificate is used, add `-Dweblogic.security.SSL.ignoreHostnameVerification=true` to allow the managed servers to connect to the Administration Server while booting up. The WebLogic generated demo certificate in this environment typically contains a host name that is different from the runtime container's host name. | `-Dweblogic.StdoutDebugEnabled=false` | | `logHomeOnPV` | Specifies whether the log home is stored on the persistent volume. If set to true, then you must specify the `logHome`, `persistentVolumeClaimName`, and `domainPVMountPath` parameters.| `false` | -| `logHome` | The in-pod location for domain log, server logs, server out, Node Manager log, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. This parameter is required if `logHomeOnPV` is true. Otherwise, it is ignored. | `/shared/logs/domain1` | +| `logHome` | The in-pod location for domain log, server logs, server out, Node Manager log, introspector out, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. This parameter is required if `logHomeOnPV` is true. Otherwise, it is ignored. | `/shared/logs/domain1` | | `managedServerNameBase` | Base string used to generate Managed Server names. | `managed-server` | | `managedServerPort` | Port number for each Managed Server. | `8001` | | `managedServerSSLPort` | SSL port number for each Managed Server. | `8002` | @@ -210,7 +210,7 @@ spec: includeServerOutInPodLog: true # Whether to enable log home # logHomeEnabled: false - # The in-pod location for domain log, server logs, server out, and Node Manager log files + # The in-pod location for domain log, server logs, server out, introspector out, and Node Manager log files # logHome: /shared/logs/domain1 # serverStartPolicy legal values are "NEVER", "IF_NEEDED", or "ADMIN_ONLY" # This determines which WebLogic Servers the operator will start up when it discovers this Domain diff --git a/docs-source/content/samples/simple/domains/domain-home-on-pv/_index.md b/docs-source/content/samples/simple/domains/domain-home-on-pv/_index.md index baf9ea25e14..a8d2dfc0afb 100644 --- a/docs-source/content/samples/simple/domains/domain-home-on-pv/_index.md +++ b/docs-source/content/samples/simple/domains/domain-home-on-pv/_index.md @@ -118,7 +118,7 @@ The following parameters can be provided in the inputs file. | `includeServerOutInPodLog` | Boolean indicating whether to include the server `.out` in the pod's `stdout`. | `true` | | `initialManagedServerReplicas` | Number of Managed Servers to start initially for the domain. | `2` | | `javaOptions` | Java options for starting the Administration Server and Managed Servers. A Java option can have references to one or more of the following pre-defined variables to obtain WebLogic domain information: `$(DOMAIN_NAME)`, `$(DOMAIN_HOME)`, `$(ADMIN_NAME)`, `$(ADMIN_PORT)`, and `$(SERVER_NAME)`. | `-Dweblogic.StdoutDebugEnabled=false` | -| `logHome` | The in-pod location for domain log, server logs, server out, Node Manager log, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. | `/shared/logs/domain1` | +| `logHome` | The in-pod location for domain log, server logs, server out, introspector out, Node Manager log, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. | `/shared/logs/domain1` | | `managedServerNameBase` | Base string used to generate Managed Server names. | `managed-server` | | `managedServerPort` | Port number for each Managed Server. | `8001` | | `namespace` | Kubernetes Namespace in which to create the domain. | `default` | @@ -178,7 +178,7 @@ spec: includeServerOutInPodLog: true # Whether to enable log home logHomeEnabled: true - # The in-pod name location for domain log, server logs, server out, and Node Manager log files + # The in-pod name location for domain log, server logs, server out, introspector out, and Node Manager log files logHome: /shared/logs/domain1 # serverStartPolicy legal values are "NEVER", "IF_NEEDED", or "ADMIN_ONLY" # This determines which WebLogic Servers the operator will start up when it discovers this Domain diff --git a/docs-source/content/samples/simple/domains/fmw-domain/_index.md b/docs-source/content/samples/simple/domains/fmw-domain/_index.md index 003e011faab..fc217b012bc 100644 --- a/docs-source/content/samples/simple/domains/fmw-domain/_index.md +++ b/docs-source/content/samples/simple/domains/fmw-domain/_index.md @@ -122,7 +122,7 @@ The following parameters can be provided in the inputs file. | `includeServerOutInPodLog` | Boolean indicating whether to include the server `.out` in the pod's `stdout`. | `true` | | `initialManagedServerReplicas` | Number of Managed Servers to start initially for the domain. | `2` | | `javaOptions` | Java options for starting the Administration Server and Managed Servers. A Java option can have references to one or more of the following pre-defined variables to obtain WebLogic domain information: `$(DOMAIN_NAME)`, `$(DOMAIN_HOME)`, `$(ADMIN_NAME)`, `$(ADMIN_PORT)`, and `$(SERVER_NAME)`. | `-Dweblogic.StdoutDebugEnabled=false` | -| `logHome` | The in-pod location for the domain log, server logs, server out, Node Manager log, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. | `/shared/logs/domain1` | +| `logHome` | The in-pod location for the domain log, server logs, server out, Node Manager log, introspector out, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. | `/shared/logs/domain1` | | `managedServerNameBase` | Base string used to generate Managed Server names. | `managed-server` | | `managedServerPort` | Port number for each Managed Server. | `8001` | | `namespace` | Kubernetes Namespace in which to create the domain. | `default` | @@ -195,7 +195,7 @@ spec: includeServerOutInPodLog: true # Whether to enable log home logHomeEnabled: true - # The in-pod location for domain log, server logs, server out, and Node Manager log files + # The in-pod location for domain log, server logs, server out, introspector out, and Node Manager log files logHome: /shared/logs/fmw-domain # serverStartPolicy legal values are "NEVER", "IF_NEEDED", or "ADMIN_ONLY" # This determines which WebLogic Servers the Operator will start up when it discovers this Domain diff --git a/docs-source/content/samples/simple/domains/model-in-image/initial.md b/docs-source/content/samples/simple/domains/model-in-image/initial.md index 19354315502..643a4a17d3c 100644 --- a/docs-source/content/samples/simple/domains/model-in-image/initial.md +++ b/docs-source/content/samples/simple/domains/model-in-image/initial.md @@ -426,7 +426,7 @@ Copy the following to a file called `/tmp/mii-sample/mii-initial.yaml` or simila # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 @@ -548,7 +548,7 @@ Copy the following to a file called `/tmp/mii-sample/mii-initial.yaml` or simila # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/docs-source/content/samples/simple/domains/soa-domain/_index.md b/docs-source/content/samples/simple/domains/soa-domain/_index.md index 917a812b565..aef94884ace 100644 --- a/docs-source/content/samples/simple/domains/soa-domain/_index.md +++ b/docs-source/content/samples/simple/domains/soa-domain/_index.md @@ -105,7 +105,7 @@ The following parameters can be provided in the inputs file. | `includeServerOutInPodLog` | Boolean indicating whether to include the server `.out` in the pod's `stdout`. | `true` | | `initialManagedServerReplicas` | Number of Managed Servers to start initially for the domain. | `2` | | `javaOptions` | Java options for starting the Administration Server and Managed Servers. A Java option can have references to one or more of the following pre-defined variables to obtain WebLogic domain information: `$(DOMAIN_NAME)`, `$(DOMAIN_HOME)`, `$(ADMIN_NAME)`, `$(ADMIN_PORT)`, and `$(SERVER_NAME)`. | `-Dweblogic.StdoutDebugEnabled=false` | -| `logHome` | The in-pod location for the domain log, server logs, server out, Node Manager log, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. | `/u01/oracle/user_projects/domains/logs/soainfra` | +| `logHome` | The in-pod location for the domain log, server logs, server out, Node Manager log, introspector out, and server HTTP access log files. If not specified, the value is derived from the `domainUID` as `/shared/logs/`. | `/u01/oracle/user_projects/domains/logs/soainfra` | | `managedServerNameBase` | Base string used to generate Managed Server names. | `soa_server` | | `managedServerPort` | Port number for each Managed Server. | `8001` | | `namespace` | Kubernetes Namespace in which to create the domain. | `soans` | @@ -229,7 +229,7 @@ spec: # Whether to enable log home logHomeEnabled: true - # The in-pod location for domain log, server logs, server out, and Node Manager log files + # The in-pod location for domain log, server logs, server out, introspector out, and Node Manager log files logHome: /u01/oracle/user_projects/domains/logs/soainfra # An (optional) in-pod location for data storage of default and custom file stores. # If not specified or the value is either not set or empty (e.g. dataHome: "") then the diff --git a/docs-source/content/userguide/managing-domains/_index.md b/docs-source/content/userguide/managing-domains/_index.md index 8f58491e1a3..fb80bdf0553 100644 --- a/docs-source/content/userguide/managing-domains/_index.md +++ b/docs-source/content/userguide/managing-domains/_index.md @@ -32,8 +32,8 @@ Be aware of the following important considerations for WebLogic domains running [WebLogic domain in Docker image protection]({{}}). {{% /notice %}} -* _Log File Locations:_ The operator can automatically override WebLogic domain and server log locations using - configuration overrides. This occurs if the Domain `logHomeEnabled` field is explicitly set to `true`, or if `logHomeEnabled` isn't set +* _Log File Locations:_ The operator can automatically override WebLogic domain, server, and introspector log locations. + This occurs if the Domain `logHomeEnabled` field is explicitly set to `true`, or if `logHomeEnabled` isn't set and `domainHomeSourceType` is set to `PersistentVolume`. When overriding, the log location will be the location specified by the `logHome` setting. * _Listen Address Overrides:_ The operator will automatically override all WebLogic domain default, diff --git a/docs-source/content/userguide/managing-domains/configoverrides/_index.md b/docs-source/content/userguide/managing-domains/configoverrides/_index.md index 0a66ce68a1c..2b6e51fbcc5 100644 --- a/docs-source/content/userguide/managing-domains/configoverrides/_index.md +++ b/docs-source/content/userguide/managing-domains/configoverrides/_index.md @@ -372,12 +372,18 @@ By setting the `FAIL_BOOT_ON_SITUATIONAL_CONFIG_ERROR` environment variable in t * Make sure you've followed each step in the [Step-by-step guide](#step-by-step-guide). * If WebLogic Server instance Pods do not come up at all, then: + * Examine your Domain resource status: `kubectl -n MYDOMAINNAMESPACE describe domain MYDOMAIN` * In the domain's namespace, see if you can find a job named `DOMAIN_UID-introspect-domain-job` and a corresponding pod named something like `DOMAIN_UID-introspect-domain-job-xxxx`. If so, examine: * `kubectl -n MYDOMAINNAMESPACE describe job INTROSPECTJOBNAME` * `kubectl -n MYDOMAINNAMESPACE logs INTROSPECTPODNAME` * Check your operator log for Warning/Error/Severe messages. * `kubectl -n MYOPERATORNAMESPACE logs OPERATORPODNAME` +{{% notice tip %}} +The introspector log is mirrored to the Domain resource `spec.logHome` directory +when `spec.logHome` is configured and `spec.logHomeEnabled` is true. +{{% /notice %}} + * If WebLogic Server instance Pods do start, then: * Search your Administration Server Pod's `kubectl log` for the keyword `situational`, for example `kubectl logs MYADMINPOD | grep -i situational`. * The only WebLogic Server log lines that match should look something like: diff --git a/docs-source/content/userguide/managing-domains/domain-lifecycle/introspection.md b/docs-source/content/userguide/managing-domains/domain-lifecycle/introspection.md index f21d3341722..8f03f0847c8 100644 --- a/docs-source/content/userguide/managing-domains/domain-lifecycle/introspection.md +++ b/docs-source/content/userguide/managing-domains/domain-lifecycle/introspection.md @@ -54,6 +54,11 @@ The introspection will be periodically retried and then will eventually timeout Please review the details for diagnosing introspection failures related to [configuration overrides]({{}}) or [Model in Image domain home generation]({{}}). +{{% notice tip %}} +The introspector log is mirrored to the Domain resource `spec.logHome` directory +when `spec.logHome` is configured and `spec.logHomeEnabled` is true. +{{% /notice %}} + ### Introspection use cases #### Adding clusters or Managed Servers to the WebLogic domain configuration diff --git a/docs-source/content/userguide/managing-domains/domain-resource.md b/docs-source/content/userguide/managing-domains/domain-resource.md index f26ab34c970..5e24d1d04d1 100644 --- a/docs-source/content/userguide/managing-domains/domain-resource.md +++ b/docs-source/content/userguide/managing-domains/domain-resource.md @@ -108,7 +108,7 @@ Elements related to domain identification, container image, and domain home: Elements related to logging: * `includeServerOutInPodLog`: Specifies whether the server .out file will be included in the Pod's log. Defaults to true. -* `logHome`: The directory in a server's container in which to store the domain, Node Manager, server logs, server *.out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. Ignored if `logHomeEnabled` is false. +* `logHome`: The directory in a server's container in which to store the domain, Node Manager, server logs, server *.out, introspector .out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. Ignored if `logHomeEnabled` is false. * `logHomeEnabled`: Specifies whether the log home folder is enabled. Defaults to true if `domainHomeSourceType` is PersistentVolume; false, otherwise. * `httpAccessLogInLogHome`: Specifies whether the server HTTP access log files will be written to the same directory specified in `logHome`. Otherwise, server HTTP access log files will be written to the directory configured in the WebLogic domain configuration. Defaults to true. diff --git a/docs-source/content/userguide/managing-domains/model-in-image/debugging.md b/docs-source/content/userguide/managing-domains/model-in-image/debugging.md index 9d1257d1614..73ee775442c 100644 --- a/docs-source/content/userguide/managing-domains/model-in-image/debugging.md +++ b/docs-source/content/userguide/managing-domains/model-in-image/debugging.md @@ -68,6 +68,11 @@ For example, assuming your domain UID is `sample-domain1` and your domain namesp 1. WLSDPLY-05007: Model file /u01/wdt/models/model1.yaml,/weblogic-operator/wdt-config-map/..2020_03_19_15_43_05.993607882/datasource.yaml contains an unrecognized section: TYPOresources. The recognized sections are domainInfo, topology, resources, appDeployments, kubernetes ``` +{{% notice tip %}} +The introspector log is mirrored to the Domain resource `spec.logHome` directory +when `spec.logHome` is configured and `spec.logHomeEnabled` is true. +{{% /notice %}} + {{% notice tip %}} If a model file error references a model file in your `spec.configuration.model.configMap`, then you can correct the error by redeploying the ConfigMap with a corrected model file and then initiating a domain restart or roll. Similarly, if a model file error references a model file in your model image, then you can correct the error by deploying a corrected image, modifying your Domain YAML file to reference the new image, and then initiating a domain restart or roll. {{% /notice %}} diff --git a/docs/domains/Domain.json b/docs/domains/Domain.json index 2b822a3819c..e4fb14d20e8 100644 --- a/docs/domains/Domain.json +++ b/docs/domains/Domain.json @@ -309,7 +309,7 @@ "$ref": "#/definitions/AdminServer" }, "logHome": { - "description": "The directory in a server\u0027s container in which to store the domain, Node Manager, server logs, server *.out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. Ignored if `logHomeEnabled` is false.", + "description": "The directory in a server\u0027s container in which to store the domain, Node Manager, server logs, server *.out, introspector .out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. Ignored if `logHomeEnabled` is false.", "type": "string" }, "includeServerOutInPodLog": { diff --git a/docs/domains/Domain.md b/docs/domains/Domain.md index 92c477812f4..f9110236ac0 100644 --- a/docs/domains/Domain.md +++ b/docs/domains/Domain.md @@ -31,7 +31,7 @@ The specification of the operation of the WebLogic domain. Required. | `imagePullSecrets` | array of [Local Object Reference](k8s1.13.5.md#local-object-reference) | A list of image pull Secrets for the WebLogic container image. | | `includeServerOutInPodLog` | Boolean | Specifies whether the server .out file will be included in the Pod's log. Defaults to true. | | `introspectVersion` | string | Changes to this field cause the operator to repeat its introspection of the WebLogic domain configuration. Repeating introspection is required for the operator to recognize changes to the domain configuration, such as adding a new WebLogic cluster or Managed Server instance, to regenerate configuration overrides, or to regenerate the WebLogic domain home when the `domainHomeSourceType` is FromModel. Introspection occurs automatically, without requiring change to this field, when servers are first started or restarted after a full domain shut down. For the FromModel `domainHomeSourceType`, introspection also occurs when a running server must be restarted because of changes to any of the fields listed here: https://oracle.github.io/weblogic-kubernetes-operator/userguide/managing-domains/domain-lifecycle/startup/#properties-that-cause-servers-to-be-restarted. See also `domains.spec.configuration.overridesConfigurationStrategy`. | -| `logHome` | string | The directory in a server's container in which to store the domain, Node Manager, server logs, server *.out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. Ignored if `logHomeEnabled` is false. | +| `logHome` | string | The directory in a server's container in which to store the domain, Node Manager, server logs, server *.out, introspector .out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. Ignored if `logHomeEnabled` is false. | | `logHomeEnabled` | Boolean | Specifies whether the log home folder is enabled. Defaults to true if `domainHomeSourceType` is PersistentVolume; false, otherwise. | | `managedServers` | array of [Managed Server](#managed-server) | Lifecycle options for individual Managed Servers, including Java options, environment variables, additional Pod content, and the ability to explicitly start, stop, or restart a named server instance. The `serverName` field of each entry must match a Managed Server that already exists in the WebLogic domain configuration or that matches a dynamic cluster member based on the server template. | | `maxClusterConcurrentStartup` | number | The maximum number of cluster member Managed Server instances that the operator will start in parallel for a given cluster, if `maxConcurrentStartup` is not specified for a specific cluster under the `clusters` field. A value of 0 means there is no configured limit. Defaults to 0. | diff --git a/kubernetes/crd/domain-crd.yaml b/kubernetes/crd/domain-crd.yaml index 600484baf87..dbb29770723 100644 --- a/kubernetes/crd/domain-crd.yaml +++ b/kubernetes/crd/domain-crd.yaml @@ -5488,9 +5488,9 @@ spec: logHome: type: string description: The directory in a server's container in which to store - the domain, Node Manager, server logs, server *.out, and optionally - HTTP access log files if `httpAccessLogInLogHome` is true. Ignored - if `logHomeEnabled` is false. + the domain, Node Manager, server logs, server *.out, introspector + .out, and optionally HTTP access log files if `httpAccessLogInLogHome` + is true. Ignored if `logHomeEnabled` is false. includeServerOutInPodLog: type: boolean description: Specifies whether the server .out file will be included diff --git a/kubernetes/crd/domain-v1beta1-crd.yaml b/kubernetes/crd/domain-v1beta1-crd.yaml index 9111dc0b889..82343749619 100644 --- a/kubernetes/crd/domain-v1beta1-crd.yaml +++ b/kubernetes/crd/domain-v1beta1-crd.yaml @@ -5377,9 +5377,9 @@ spec: logHome: type: string description: The directory in a server's container in which to store - the domain, Node Manager, server logs, server *.out, and optionally - HTTP access log files if `httpAccessLogInLogHome` is true. Ignored - if `logHomeEnabled` is false. + the domain, Node Manager, server logs, server *.out, introspector + .out, and optionally HTTP access log files if `httpAccessLogInLogHome` + is true. Ignored if `logHomeEnabled` is false. includeServerOutInPodLog: type: boolean description: Specifies whether the server .out file will be included diff --git a/kubernetes/hands-on-lab/domain.yaml b/kubernetes/hands-on-lab/domain.yaml index 0bf7fb0b1be..cd92135c9f9 100644 --- a/kubernetes/hands-on-lab/domain.yaml +++ b/kubernetes/hands-on-lab/domain.yaml @@ -47,10 +47,8 @@ spec: # If you want to use a mounted volume as the log home, i.e. to persist logs outside the container, then # uncomment this and set it to `true`: # logHomeEnabled: false - # The in-pod name of the directory to store the domain, node manager, server logs, and server .out - # files in. - # If not specified or empty, domain log file, server logs, server out, and node manager log files - # will be stored in the default logHome location of /shared/logs//. + # The in-pod name of the directory to store the domain, node manager, server logs, server .out, + # and introspector .out files. Default is /shared/logs/. See also logHomeEnabled. # logHome: /shared/logs/domain1 # serverStartPolicy legal values are "NEVER", "IF_NEEDED", or "ADMIN_ONLY" diff --git a/kubernetes/samples/scripts/common/domain-template.yaml b/kubernetes/samples/scripts/common/domain-template.yaml index 7c7f85c0d8d..a64edf3a81c 100644 --- a/kubernetes/samples/scripts/common/domain-template.yaml +++ b/kubernetes/samples/scripts/common/domain-template.yaml @@ -42,7 +42,7 @@ spec: # Whether to write HTTP access log file to log home %LOG_HOME_ON_PV_PREFIX%httpAccessLogInLogHome: %HTTP_ACCESS_LOG_IN_LOG_HOME% - # The in-pod location for domain log, server logs, server out, and Node Manager log files + # The in-pod location for domain log, server logs, server out, introspector out, and Node Manager log files %LOG_HOME_ON_PV_PREFIX%logHome: %LOG_HOME% # An (optional) in-pod location for data storage of default and custom file stores. # If not specified or the value is either not set or empty (e.g. dataHome: "") then the diff --git a/kubernetes/samples/scripts/common/jrf-domain-template.yaml b/kubernetes/samples/scripts/common/jrf-domain-template.yaml index 5486c5e9e09..051127c424e 100644 --- a/kubernetes/samples/scripts/common/jrf-domain-template.yaml +++ b/kubernetes/samples/scripts/common/jrf-domain-template.yaml @@ -42,7 +42,7 @@ spec: # Whether to write HTTP access log file to log home %LOG_HOME_ON_PV_PREFIX%httpAccessLogInLogHome: %HTTP_ACCESS_LOG_IN_LOG_HOME% - # The in-pod location for domain log, server logs, server out, and Node Manager log files + # The in-pod location for domain log, server logs, server out, introspector out, and Node Manager log files %LOG_HOME_ON_PV_PREFIX%logHome: %LOG_HOME% # An (optional) in-pod location for data storage of default and custom file stores. # If not specified or the value is either not set or empty (e.g. dataHome: "") then the diff --git a/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-in-image/create-domain-inputs.yaml b/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-in-image/create-domain-inputs.yaml index 1d5b5f5d81e..0355965e55c 100644 --- a/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-in-image/create-domain-inputs.yaml +++ b/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-in-image/create-domain-inputs.yaml @@ -79,7 +79,7 @@ includeServerOutInPodLog: true # The default is false. logHomeOnPV: false -# The in-pod location for domain log, server logs, server out, Node Manager log, and +# The in-pod location for domain log, server logs, server out, Node Manager log, introspector out, and # HTTP access log files. If not specified, the value is derived from the domainUID as # /shared/logs/. # This parameter is required if 'logHomeOnPV' is true. diff --git a/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/create-domain-inputs.yaml b/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/create-domain-inputs.yaml index 9001c4a10ca..b7e768785de 100644 --- a/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/create-domain-inputs.yaml +++ b/kubernetes/samples/scripts/create-fmw-infrastructure-domain/domain-home-on-pv/create-domain-inputs.yaml @@ -65,7 +65,7 @@ weblogicCredentialsSecretName: domain1-weblogic-credentials # The default is true. includeServerOutInPodLog: true -# The in-pod location for domain log, server logs, server out, Node Manager log, and +# The in-pod location for domain log, server logs, server out, Node Manager log, introspector out, and # HTTP access log files. If not specified, the value is derived from the domainUID as # /shared/logs/. logHome: /shared/logs/domain1 diff --git a/kubernetes/samples/scripts/create-soa-domain/domain-home-on-pv/create-domain-inputs.yaml b/kubernetes/samples/scripts/create-soa-domain/domain-home-on-pv/create-domain-inputs.yaml index efa085e9545..932b5262367 100644 --- a/kubernetes/samples/scripts/create-soa-domain/domain-home-on-pv/create-domain-inputs.yaml +++ b/kubernetes/samples/scripts/create-soa-domain/domain-home-on-pv/create-domain-inputs.yaml @@ -75,7 +75,7 @@ weblogicCredentialsSecretName: soainfra-domain-credentials # The default is true. includeServerOutInPodLog: true -# The in-pod location for domain log, server logs, server out, Node Manager log, and +# The in-pod location for domain log, server logs, server out, Node Manager log, introspector out, and # HTTP access log files. If not specified, the value is derived from the domainUID as # /shared/logs/. logHome: /u01/oracle/user_projects/domains/logs/soainfra diff --git a/kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image/create-domain-inputs.yaml b/kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image/create-domain-inputs.yaml index 710cc783353..6580d4f2c3b 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image/create-domain-inputs.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image/create-domain-inputs.yaml @@ -89,7 +89,7 @@ includeServerOutInPodLog: true # The default is false. logHomeOnPV: false -# The in-pod location for domain log, server logs, server out, Node Manager log, and +# The in-pod location for domain log, server logs, server out, Node Manager log, introspector out, and # HTTP access log files. If not specified, the value is derived from the domainUID as # /shared/logs/. # This parameter is required if 'logHomeOnPV' is true. diff --git a/kubernetes/samples/scripts/create-weblogic-domain/domain-home-on-pv/create-domain-inputs.yaml b/kubernetes/samples/scripts/create-weblogic-domain/domain-home-on-pv/create-domain-inputs.yaml index ab646d315a5..9bc5aa386c6 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/domain-home-on-pv/create-domain-inputs.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/domain-home-on-pv/create-domain-inputs.yaml @@ -64,7 +64,7 @@ weblogicCredentialsSecretName: domain1-weblogic-credentials # The default is true. includeServerOutInPodLog: true -# The in-pod location for domain log, server logs, server out, Node Manager log, and +# The in-pod location for domain log, server logs, server out, Node Manager log, introspector out, and # HTTP access log files. If not specified, the value is derived from the domainUID as # /shared/logs/. logHome: /shared/logs/domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/manually-create-domain/domain.yaml b/kubernetes/samples/scripts/create-weblogic-domain/manually-create-domain/domain.yaml index ae6c90635b1..059ae03d9e0 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/manually-create-domain/domain.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/manually-create-domain/domain.yaml @@ -48,7 +48,7 @@ spec: # logHomeEnabled: false # The in-pod name of the directory to store the domain, node manager, server logs, and server .out # files in. - # If not specified or empty, domain log file, server logs, server out, and node manager log files + # If not specified or empty, domain log file, server logs, server out, introspector out, and node manager log files # will be stored in the default logHome location of /shared/logs//. # logHome: /shared/logs/domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-initial-d1-JRF-v1.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-initial-d1-JRF-v1.yaml index 03c248d5911..aac0a369301 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-initial-d1-JRF-v1.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-initial-d1-JRF-v1.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update1-d1-JRF-v1-ds.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update1-d1-JRF-v1-ds.yaml index 971f8559771..2d81b421e14 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update1-d1-JRF-v1-ds.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update1-d1-JRF-v1-ds.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update2-d2-JRF-v1-ds.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update2-d2-JRF-v1-ds.yaml index f777164ce52..edacea21539 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update2-d2-JRF-v1-ds.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update2-d2-JRF-v1-ds.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain2 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update3-d1-JRF-v2-ds.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update3-d1-JRF-v2-ds.yaml index beb2628fc5b..c3934f3fe8d 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update3-d1-JRF-v2-ds.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/JRF/mii-update3-d1-JRF-v2-ds.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-initial-d1-WLS-v1.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-initial-d1-WLS-v1.yaml index cd80b2be7a2..9f61a217c38 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-initial-d1-WLS-v1.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-initial-d1-WLS-v1.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update1-d1-WLS-v1-ds.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update1-d1-WLS-v1-ds.yaml index f8ab98b5c92..b35dac193a3 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update1-d1-WLS-v1-ds.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update1-d1-WLS-v1-ds.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update2-d2-WLS-v1-ds.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update2-d2-WLS-v1-ds.yaml index 309c0e5bf11..8177fc31686 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update2-d2-WLS-v1-ds.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update2-d2-WLS-v1-ds.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain2 diff --git a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update3-d1-WLS-v2-ds.yaml b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update3-d1-WLS-v2-ds.yaml index 6ad4f4b858d..2b25462df1d 100644 --- a/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update3-d1-WLS-v2-ds.yaml +++ b/kubernetes/samples/scripts/create-weblogic-domain/model-in-image/domain-resources/WLS/mii-update3-d1-WLS-v2-ds.yaml @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/sample-domain1 diff --git a/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/DomainSpec.java b/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/DomainSpec.java index 64b4c86d91a..f3f7e2b7d74 100644 --- a/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/DomainSpec.java +++ b/operator/src/main/java/oracle/kubernetes/weblogic/domain/model/DomainSpec.java @@ -93,11 +93,12 @@ public class DomainSpec extends BaseConfiguration { /** * The in-pod name of the directory to store the domain, Node Manager, server logs, server - * .out, and HTTP access log files in. + * .out, introspector.out, and HTTP access log files in. */ @Description( "The directory in a server's container in which to store the domain, Node Manager, server logs, " - + "server *.out, and optionally HTTP access log files if `httpAccessLogInLogHome` is true. " + + "server *.out, introspector .out, and optionally HTTP access log files " + + "if `httpAccessLogInLogHome` is true. " + "Ignored if `logHomeEnabled` is false.") private String logHome; diff --git a/operator/src/main/resources/scripts/introspectDomain.sh b/operator/src/main/resources/scripts/introspectDomain.sh index dd5ebc44253..d09090a6d9a 100644 --- a/operator/src/main/resources/scripts/introspectDomain.sh +++ b/operator/src/main/resources/scripts/introspectDomain.sh @@ -11,20 +11,23 @@ # - encrypted admin user password passed in via a plain-text secret (for use in sit config) # - md5 checksum of the DOMAIN_HOME/security/SerializedSystemIni.dat domain secret file # - situational config files for overriding the configuration within the DOMAIN_HOME +# - Model in Image domain home zips and md5s (when the domain source type is MII) # # It works as part of the following flow: # # (1) When an operator discovers a new domain, it launches this script via an # introspector k8s job. # (2) This script then: -# (2A) Configures and starts a NM via startNodeManager.sh (in NODEMGR_HOME) -# (2B) Calls introspectDomain.py, which depends on the NM -# (2C) Exits 0 on success, non-zero otherwise. +# (2A) Generates MII domain home zips/md5 files if the domain home source type is MII +# (2B) Configures and starts a NM via startNodeManager.sh (in NODEMGR_HOME) +# (2C) Calls introspectDomain.py, which depends on the NM and puts files in stdout +# (2D) Exits 0 on success, non-zero otherwise. # (5) Operator parses the output of introspectDomain.py into files and: # (5A) Uses one of the files to get the domain's name, cluster name, ports, etc. # (5B) Deploys a config map for the domain containing the files. # (6) Operator starts pods for domain's WebLogic servers. # (7) Pod 'startServer.sh' script loads files from the config map, +# generates a domain home from the files for the MII case, # copies/uses encrypted files, and applies sit config files. It # also checks that domain secret md5 cksum matches the cksum # obtained by this script. @@ -43,16 +46,20 @@ SCRIPTPATH="$( cd "$(dirname "$0")" > /dev/null 2>&1 ; pwd -P )" +# # setup tracing +# source ${SCRIPTPATH}/utils.sh [ $? -ne 0 ] && echo "[SEVERE] Missing file ${SCRIPTPATH}/utils.sh" && exit 1 traceTiming "INTROSPECTOR '${DOMAIN_UID}' MAIN START" - +# # Local createFolder method which does an 'exit 1' instead of exitOrLoop for # immediate failure during introspection +# + function createFolder { mkdir -m 750 -p $1 if [ ! -d $1 ]; then @@ -61,21 +68,68 @@ function createFolder { fi } -trace "Introspecting the domain" +# +# setup MII functions in case this is a MII domain +# + +source ${SCRIPTPATH}/modelInImage.sh +[ $? -ne 0 ] && trace SEVERE "Error sourcing ${SCRIPTPATH}/modelInImage.sh" && exit 1 + +# +# setup introspector log file +# + +traceDirs before LOG_HOME + +if [ ! -z "${LOG_HOME}" ] && [ ! -d "${LOG_HOME}" ]; then + trace "Creating log home directory: '${LOG_HOME}'" + createFolder ${LOG_HOME} +fi + +ilog_dir="${LOG_HOME:-/tmp}" +ilog_timestamp="$(date --utc '+%Y-%m-%d_%H.%M.%S')" +ilog_prefix="${ilog_dir}/introspector_script" +ilog_file="${ilog_prefix}_${ilog_timestamp}_.out" +ilog_max=${MAX_INTROSPECTOR_LOG_FILES:-10} + +if [ ! -d "${ilog_dir}" ]; then + trace "Creating introspector log directory: '${ilog_dir}'" + createFolder "${ilog_dir}" +fi + +echo "" >> ${ilog_file} + +# +# main introspection function +# + +function doIntrospect() { -# list potentially interesting env-vars and dirs before they're updated by export.*Homes + trace "Introspecting domain '${DOMAIN_UID}', log location: '$ilog_file'" -traceEnv before -traceDirs before + traceDirs after LOG_HOME -# set defaults -# set ORACLE_HOME/WL_HOME/MW_HOME to defaults if needed + # keep only 10 total log files by default (delete oldest first) + for ilog_cur in \ + $(ls -1r ${ilog_prefix}* 2>/dev/null | tail -n +$((ilog_max + 1))) + do + trace "Removing old introspector log file '${ilog_cur}'" + rm ${ilog_cur} + done -exportInstallHomes + # list potentially interesting env-vars and dirs before they're updated by export.*Homes -# check if prereq env-vars, files, and directories exist + traceEnv before + traceDirs before DOMAIN_HOME DATA_HOME -checkEnv -q \ + # set defaults + # set ORACLE_HOME/WL_HOME/MW_HOME to defaults if needed + + exportInstallHomes + + # check if prereq env-vars, files, and directories exist + + checkEnv -q \ DOMAIN_UID \ NAMESPACE \ ORACLE_HOME \ @@ -86,37 +140,30 @@ checkEnv -q \ OPERATOR_ENVVAR_NAMES \ || exit 1 -for script_file in "${SCRIPTPATH}/wlst.sh" \ - "${SCRIPTPATH}/startNodeManager.sh" \ - "${SCRIPTPATH}/modelInImage.sh" \ - "${SCRIPTPATH}/introspectDomain.py"; do - [ ! -f "$script_file" ] && trace SEVERE "Missing file '${script_file}'." && exit 1 -done - -for dir_var in JAVA_HOME WL_HOME MW_HOME ORACLE_HOME; do - [ ! -d "${!dir_var}" ] && trace SEVERE "Missing ${dir_var} directory '${!dir_var}'." && exit 1 -done - -# -# DATA_HOME env variable exists implies override directory specified. Attempt to create directory -# -if [ ! -z "${DATA_HOME}" ] && [ ! -d "${DATA_HOME}" ]; then - trace "Creating data home directory: '${DATA_HOME}'" - createFolder ${DATA_HOME} -fi - - -traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII CREATE DOMAIN START" + for script_file in "${SCRIPTPATH}/wlst.sh" \ + "${SCRIPTPATH}/startNodeManager.sh" \ + "${SCRIPTPATH}/introspectDomain.py"; do + [ ! -f "$script_file" ] && trace SEVERE "Missing file '${script_file}'." && exit 1 + done + + for dir_var in JAVA_HOME WL_HOME MW_HOME ORACLE_HOME; do + [ ! -d "${!dir_var}" ] && trace SEVERE "Missing ${dir_var} directory '${!dir_var}'." && exit 1 + done + + # + # DATA_HOME env variable exists implies override directory specified. Attempt to create directory + # + if [ ! -z "${DATA_HOME}" ] && [ ! -d "${DATA_HOME}" ]; then + trace "Creating data home directory: '${DATA_HOME}'" + createFolder ${DATA_HOME} + fi -source ${SCRIPTPATH}/modelInImage.sh -if [ $? -ne 0 ]; then - trace SEVERE "Error sourcing modelInImage.sh" && exit 1 -fi + traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII CREATE DOMAIN START" -# Add another env/attribute in domain yaml for model in image -# log error if dir exists and attribute set -DOMAIN_CREATED=0 -if [ ${DOMAIN_SOURCE_TYPE} == "FromModel" ]; then + # Add another env/attribute in domain yaml for model in image + # log error if dir exists and attribute set + DOMAIN_CREATED=0 + if [ ${DOMAIN_SOURCE_TYPE} == "FromModel" ]; then trace "Beginning Model In Image" command -v gzip if [ $? -ne 0 ] ; then @@ -142,43 +189,39 @@ if [ ${DOMAIN_SOURCE_TYPE} == "FromModel" ]; then createWLDomain || exit 1 created_domain=$DOMAIN_CREATED trace "Create domain return code = " ${created_domain} -else + else created_domain=1 -fi - -traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII CREATE DOMAIN END" - + fi -# check DOMAIN_HOME for a config/config.xml, reset DOMAIN_HOME if needed + traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII CREATE DOMAIN END" -exportEffectiveDomainHome || exit 1 + # check DOMAIN_HOME for a config/config.xml, reset DOMAIN_HOME if needed -# list potentially interesting env-vars and dirs after they're updated by export.*Homes + exportEffectiveDomainHome || exit 1 -traceEnv after -traceDirs after + # list potentially interesting env-vars and dirs after they're updated by export.*Homes -# check if we're using a supported WebLogic version -# (the check will log a message if it fails) + traceEnv after + traceDirs after DOMAIN_HOME DATA_HOME -checkWebLogicVersion || exit 1 + # check if we're using a supported WebLogic version + # (the check will log a message if it fails) -# start node manager -# run instrospector wlst script -if [ ${created_domain} -ne 0 ]; then + checkWebLogicVersion || exit 1 + # start node manager + # run instrospector wlst script + if [ ${created_domain} -ne 0 ]; then traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII NM START" - # start node manager -why ?? + # introspectDomain.py uses an NM to setup credentials for the server NMs + # (see 'nmConnect' in introspectDomain.py) trace "Starting node manager" ${SCRIPTPATH}/startNodeManager.sh || exit 1 traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII NM END" - traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII MD5 START" - traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII NM END" - traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII MD5 START" # put domain secret's md5 cksum in file '/tmp/DomainSecret.md5' @@ -186,14 +229,38 @@ if [ ${created_domain} -ne 0 ]; then generateDomainSecretMD5File '/tmp/DomainSecret.md5' || exit 1 traceTiming "INTROSPECTOR '${DOMAIN_UID}' MII MD5 END" - traceTiming "INTROSPECTOR '${DOMAIN_UID}' INTROSPECT START" trace "Running introspector WLST script ${SCRIPTPATH}/introspectDomain.py" ${SCRIPTPATH}/wlst.sh ${SCRIPTPATH}/introspectDomain.py || exit 1 traceTiming "INTROSPECTOR '${DOMAIN_UID}' INTROSPECT END" -fi -trace "Domain introspection complete" + fi + trace "Domain introspection complete" +} -exit 0 +# we have different log file modes in case we need to revert 'tee' mode + +case "${INTROSPECTOR_LOG_FILE_MODE:-tee}" in + tee) + set -o pipefail + doIntrospect |& tee $ilog_file + exit $? + ;; + bg_and_tail) + ${SCRIPTPATH}/tailLog.sh $ilog_file /tmp/dontcare & + tail_log_pid=$! + doIntrospect >> $ilog_file 2>&1 & + wait $! + exitCode=$? + # sleep 1 second in case background 'tail' needs time to catch up + sleep 1 + kill -9 $tail_log_pid + exit $exitCode + ;; + *) + # no log file - everything simply goes to stdout/stderr (old behavior) + doIntrospect + exit $? + ;; +esac diff --git a/operator/src/main/resources/scripts/modelInImage.sh b/operator/src/main/resources/scripts/modelInImage.sh index 9620c487608..5a997e1d482 100755 --- a/operator/src/main/resources/scripts/modelInImage.sh +++ b/operator/src/main/resources/scripts/modelInImage.sh @@ -3,7 +3,7 @@ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. # # This script contains the all the function of model in image -# It is used by introspectDomain.sh job and starServer.sh +# It is used by introspectDomain.sh job and startServer.sh source ${SCRIPTPATH}/utils.sh @@ -532,8 +532,8 @@ function diff_model() { org.python.util.jython \ ${SCRIPTPATH}/model_diff.py $1 $2 > ${WDT_OUTPUT} 2>&1 if [ $? -ne 0 ] ; then - trace SEVERE "Failed to compare models. Check logs for error." - trace SEVERE "$(cat ${WDT_OUTPUT})" + trace SEVERE "Failed to compare models. Check logs for error. Comparison output:" + cat ${WDT_OUTPUT} exitOrLoop fi trace "Exiting diff_model" @@ -648,11 +648,8 @@ function generateMergedModel() { ${archive_list} ${variable_list} -domain_type ${WDT_DOMAIN_TYPE} > ${WDT_OUTPUT} ret=$? if [ $ret -ne 0 ]; then - trace SEVERE "WDT Failed: Validate Model Failed " - if [ -d ${LOG_HOME} ] && [ ! -z ${LOG_HOME} ] ; then - cp ${WDT_OUTPUT} ${LOG_HOME}/introspectJob_validateDomain.log - fi - trace SEVERE "$(cat ${WDT_OUTPUT})" + trace SEVERE "WDT Failed: Validate Model Failed:" + cat ${WDT_OUTPUT} exitOrLoop fi @@ -679,11 +676,8 @@ function wdtCreatePrimordialDomain() { > ${WDT_OUTPUT} ret=$? if [ $ret -ne 0 ]; then - trace SEVERE "WDT Create Domain Failed ${ret}" - if [ -d ${LOG_HOME} ] && [ ! -z ${LOG_HOME} ] ; then - cp ${WDT_OUTPUT} ${LOG_HOME}/introspectJob_createDomain.log - fi - trace SEVERE "$(cat ${WDT_OUTPUT})" + trace SEVERE "WDT Create Domain Failed, ret=${ret}:" + cat ${WDT_OUTPUT} exitOrLoop fi @@ -712,11 +706,8 @@ function wdtUpdateModelDomain() { ret=$? if [ $ret -ne 0 ]; then - trace SEVERE "WDT Update Domain Failed " - if [ -d ${LOG_HOME} ] && [ ! -z ${LOG_HOME} ] ; then - cp ${WDT_OUTPUT} ${LOG_HOME}/introspectJob_updateDomain.log - fi - trace SEVERE "$(cat ${WDT_OUTPUT})" + trace SEVERE "WDT Update Domain Failed:" + cat ${WDT_OUTPUT} exitOrLoop fi @@ -788,8 +779,8 @@ function encrypt_decrypt_model() { trace SEVERE "Fatal Error: Failed to $1 domain model. This error is irrecoverable. Check to see if the secret " \ "described in the configuration.model.runtimeEncryptionSecret domain resource field has been changed since the " \ "creation of the domain. You can either reset the password to the original one and try again or delete "\ - "and recreate the domain." - trace SEVERE "$(cat ${WDT_OUTPUT})" + "and recreate the domain. Failure output:" + cat ${WDT_OUTPUT} exitOrLoop fi @@ -829,8 +820,8 @@ function encrypt_decrypt_domain_secret() { trace SEVERE "Fatal Error: Failed to $1 domain secret. This error is irrecoverable. Check to see if the secret " \ "described in the configuration.model.runtimeEncryptionSecret domain resource field has been changed since the " \ "creation of the domain. You can either reset the password to the original one and try again or delete "\ - "and recreate the domain." - trace SEVERE "$(cat ${WDT_OUTPUT})" + "and recreate the domain. Failure output:" + cat ${WDT_OUTPUT} exitOrLoop fi diff --git a/operator/src/main/resources/scripts/startServer.sh b/operator/src/main/resources/scripts/startServer.sh index 1c60660ee67..b0f7bfdd2c6 100755 --- a/operator/src/main/resources/scripts/startServer.sh +++ b/operator/src/main/resources/scripts/startServer.sh @@ -242,7 +242,7 @@ function prepareMIIServer() { # trace env vars and dirs before export.*Home calls traceEnv before -traceDirs before +traceDirs before DOMAIN_HOME LOG_HOME DATA_HOME traceTiming "POD '${SERVICE_NAME}' MII UNZIP START" @@ -316,7 +316,7 @@ exportEffectiveDomainHome || exitOrLoop # trace env vars and dirs after export.*Home calls traceEnv after -traceDirs after +traceDirs after DOMAIN_HOME LOG_HOME DATA_HOME # # Check if introspector actually ran. This should never fail since diff --git a/operator/src/main/resources/scripts/tailLog.sh b/operator/src/main/resources/scripts/tailLog.sh old mode 100644 new mode 100755 index ac429090b3d..8733fc2e12c --- a/operator/src/main/resources/scripts/tailLog.sh +++ b/operator/src/main/resources/scripts/tailLog.sh @@ -13,7 +13,7 @@ echo $$ > $2 while true ; do if [ -f $1 ]; then - tail -F -n +0 $1 || sleep 10 + tail -F -s 0.1 -n +0 $1 || sleep 10 fi sleep 0.1 done diff --git a/operator/src/main/resources/scripts/utils.sh b/operator/src/main/resources/scripts/utils.sh index 3d1e96fe257..9e9c428a179 100755 --- a/operator/src/main/resources/scripts/utils.sh +++ b/operator/src/main/resources/scripts/utils.sh @@ -286,15 +286,17 @@ function traceEnv() { } # -# traceDirs before|after -# Trace contents and owner of DOMAIN_HOME/LOG_HOME/DATA_HOME directories -# +# traceDirs before|after DOMAIN_HOME LOG_HOME DATA_HOME ... +# Trace contents and owner of directory for the specified env vars... + function traceDirs() { trace "id = '`id`'" + local keyword="$1" + shift local indir - for indir in DOMAIN_HOME LOG_HOME DATA_HOME; do + for indir in $*; do [ -z "${!indir}" ] && continue - trace "Directory trace for $indir=${!indir} ($1)" + trace "Directory trace for $indir=${!indir} ($keyword)" local cnt=0 local odir="" local cdir="${!indir}/*" diff --git a/src/integration-tests/model-in-image/deploy-operator.sh b/src/integration-tests/model-in-image/deploy-operator.sh index 38e312c62c0..2e65d838cac 100755 --- a/src/integration-tests/model-in-image/deploy-operator.sh +++ b/src/integration-tests/model-in-image/deploy-operator.sh @@ -36,6 +36,9 @@ mkdir -p $WORKDIR/test-out if [ -e $WORKDIR/test-out/operator-values.orig ]; then helm get values ${OPER_NAME} -n ${OPER_NAMESPACE} > $WORKDIR/test-out/operator-values.cur 2>&1 helm list -n ${OPER_NAMESPACE} | awk '{ print $1 }' >> $WORKDIR/test-out/operator-values.cur + for evar in DOMAIN_NAMESPACE OPER_NAMESPACE OPER_NAME OPER_IMAGE OPER_SA ; do + echo "${evar}=${!evar}" >> $WORKDIR/test-out/operator-values.cur + done if [ "$(cat $WORKDIR/test-out/operator-values.cur)" = "$(cat $WORKDIR/test-out/operator-values.orig)" ]; then echo "@@" echo "@@ Operator already running. Skipping." @@ -69,6 +72,9 @@ kubectl get deployments -n $OPER_NAMESPACE helm get values ${OPER_NAME} -n ${OPER_NAMESPACE} > $WORKDIR/test-out/operator-values.orig 2>&1 helm list -n ${OPER_NAMESPACE} | awk '{ print $1 }' >> $WORKDIR/test-out/operator-values.orig +for evar in DOMAIN_NAMESPACE OPER_NAMESPACE OPER_NAME OPER_IMAGE OPER_SA ; do + echo "${evar}=${!evar}" >> $WORKDIR/test-out/operator-values.orig +done echo "@@ log command: kubectl logs -n $OPER_NAMESPACE -c weblogic-operator deployments/weblogic-operator" diff --git a/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-JRF b/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-JRF index d15824db476..0226606dbc5 100644 --- a/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-JRF +++ b/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-JRF @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/@@DOMAIN_UID@@ diff --git a/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-WLS b/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-WLS index db1941f47f6..eaf73517c4e 100644 --- a/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-WLS +++ b/src/integration-tests/model-in-image/mii-sample-wrapper/mii-domain.yaml.template-WLS @@ -40,7 +40,7 @@ spec: # Whether to enable overriding your log file location, see also 'logHome' #logHomeEnabled: false - # The location for domain log, server logs, server out, and Node Manager log files + # The location for domain log, server logs, server out, introspector out, and Node Manager log files # see also 'logHomeEnabled', 'volumes', and 'volumeMounts'. #logHome: /shared/logs/@@DOMAIN_UID@@