对运行时问题进行故障诊断

WebSphere Automation 正常操作期间可能会遇到问题,例如,失败的运行状况调查。 了解如何解决最常见的运行时问题。

以下问题可能会导致运行状况调查失败。 调查失败时,请使用 WebSphere Automation UI 或 REST API 下载调查的归档文件。 打开归档并检查 analysis.log 文件中是否存在错误。

安装了JDK修复包后,启用FIPS的服务器无法在 WebSphere Automation 注册,SecureRandom SHA2DRBG for provider not available错误消息
在注册 WebSphere Application ServerWebSphere Application Server Liberty 服务器上安装Java SDK运行时修复包时,如果该服务器配置为符合联邦信息处理标准(FIPS),可能会出现以下错误。
Stack Dump = java.lang.RuntimeException: SecureRandom SHA2DRBG for provider <provider_name> not available
要解决这个问题,请根据以下文章中的说明配置注册服务器。
无与服务器的联系,或与已注册的服务器的联系丢失
WebSphere Automation 使用 WebSphere Application ServerWebSphere Application Server Liberty 的使用率测量功能来注册服务器并与它们保持定期联系。 如果 WebSphere Automation 无法与服务器联系,或者与已注册服务器的联系丢失超过 6 小时,那么 WebSphere Automation 会在 UI 中显示可视指示符,使您了解情况。 如果由于已知且可接受的原因而导致联系人丢失,请尝试以下步骤来诊断并解决问题。
  1. 确保在目标服务器上正确配置了使用率测量。

    更多信息,请参阅设置安全监控

  2. 重新启动服务器。

    如果从 WebSphere Automation中除去了服务器,或者禁用了使用率测量功能,请启用该功能并重新启动目标服务器。 此操作将导致服务器再次向 WebSphere Automation 注册。 更多信息,请参阅取消注册服务器

  3. 检查网络连接。

    如果正确配置了使用率测量功能,但未建立联系,请检查目标服务器上的日志以获取可能阻止服务器与 WebSphere Automation之间通信的网络连接问题的指示信息。

没有为 Instana 警报创建调查
此问题可能是由于主机没有任何注册服务器导致的。 如果调查管理器找不到主机的注册服务器,那么在调查管理器日志文件中写入以下错误消息:
Investigation cannot be started because no assets are registered with the example.com host.
内存分析运行程序作业的内存不足错误
(In version 1.3 or later) java.lang.OutOfMemoryError: Java heap space
(In version 1.2) JVMDUMP039I Processing dump event "systhrow", detail "java/lang/OutOfMemoryError"
缺省情况下,内存分析运行器作业的内存请求和内存限制设置为 4 GB。 这些设置足以让运行器作业分析大多数堆转储。 如果您看到此错误消息,那么分析器没有足够的内存来分析堆转储。 您可以为 WebSphereHealth 定制资源中的 memoryAnalysisRunner 设置分配更多内存。 更多信息,请参阅 WebSphereHealth 自定义资源。 或者,您可以使用以下命令来编辑 WebSphereHealth 实例:
oc edit WebSphereHealth <instance-name> -n <namespace>
缺省实例名称为 wsa-health。 缺省名称空间为 wasautomation
注: 内存缺省为 4Gi ,限制为 4Gi。 您可以将内存增加到更大的值,例如 20Gi,如以下示例中所示。 将内存请求和内存限制设置为相同的值。 Java VM 使用由限制指定的内存量来计算最大堆大小。 Kubernetes 仅保证进程可以获取由请求指定的内存量。
spec:
  analysisManager:
    Image: …
    memoryAnalysisRunner:
      resources:
        limits:
          cpu: '1'
          memory: 20Gi
        requests:
          cpu: 500m
          memory: 20Gi
注:memoryAnalysisRunner分配更多资源时,请确保工作程序节点可以处理请求。

 

未能识别主机 example.com 上的服务器
Failed to identify the server on host example.com
此错误可能由多个问题引起。 要解决此问题,请尝试以下步骤:
MyCustomRole 角色包含无效许可权:can_view_websphere_inventory
如果 V1.1 中包含定制角色中的 can_view_websphere_inventory 许可权,那么在 V1.2 中已移除此许可权。 要修正您的定制角色,必须使用 API:
  1. 从 cpd UI 中获取 API 密钥。

    从 cpd 控制台,单击用户 > 配置文件和设置 ,然后单击 API 密钥按钮。

  2. 获取用于 API 调用的不记名令牌:
    curl -k -X POST -H 'Content-Type: application/json' -d '{"username":"<user_name>","api_key":"<api_key>"}' https://$(oc get route -n wasautomation -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/icp4d-api/v1/authorize
  3. 获取这些角色的列表。 需要此列表来获取扩展名称和 JSON 元数据,在后续步骤中使用此扩展名称和 JSON 元数据来修改中断的定制角色:
    curl -X GET -k -v -H "Authorization: Bearer <bearer_token>" --header "Content-Type: application/json" --header "Accept: application/json" https://$(oc get route -n wasautomation -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/api/v1/usermgmt/v1/roles

    示例:

    curl -X GET -k -v -H "Authorization: Bearer eyJhbGciOiJSUz..." --header "Content-Type: application/json" --header "Accept: application/json" -d '{"role_name":"mycustomrole","description":"","permissions":[]}' https://$(oc get route -n wasautomation -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/api/v1/usermgmt/v1/roles

    响应(已截断):

    {"rows":[{"id":"f60b72c3-ae7e-4860-8f98-649e316af6d2","key":"f60b72c3-ae7e-4860-8f98-649e316af6d2","doc":{"_id":"f60b72c3-ae7e-4860-8f98-649e316af6d2","extension_id":"_ce_703424172539772929","extension_name":"f60b72c3-ae7e-4860-8f98-649e316af6d2","role_name":"mycustomrole","description":"","permissions":["can_view_websphere_inventory"]...],"messageCode":"success","message":"success"}
  4. 对于包含 can_view_websphere_inventory 许可权的每个定制角色,请移除该许可权并将其替换为 can_view_application_runtime_security 许可权。
    curl -X PUT -k -v -H "Authorization: Bearer <bearer_token>" --header "Content-Type: application/json" --header "Accept: application/json" -d '{"role_name":"","description":"","permissions":['can_view_application_runtime_security']}' https://$(oc get route -n wasautomation -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/api/v1/usermgmt/v1/role/<extension_name>

    示例:

    curl -X PUT -k -v -H "Authorization: Bearer eyJhbGciOiJSUz..." --header "Content-Type: application/json" --header "Accept: application/json" -d '{"role_name":"mycustomrole","description":"","permissions":["can_view_application_runtime_security"]}' https://$(oc get route -n wasautomation -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/api/v1/usermgmt/v1/role/f60b72c3-ae7e-4860-8f98-649e316af6d2

    响应(已截断):

    {"id":"f60b72c3-ae7e-4860-8f98-649e316af6d2","messageCode":"success","message":"success"}
修订安装失败,Connection error: read operation timed out错误消息

如果由于 runbook.log 文件中存在此错误而导致修订的安装失败,请稍后在 UI 中单击 安装修订 以重新启动修订的安装。

对于在 Linux 或 UNIX 上以组方式使用 Installation Manager 的非 root 用户, WebSphere Application Server Liberty 上的修订安装失败

发生此错误的原因是 WebSphere Automation 访问的 InstallationManager.dat 文件未按预期位于非 root 用户的主目录中。 要解决此问题,请在非 root 用户的主目录中创建一个 InstallationManager.dat 文件,该文件具有指向 InstallationManager.dat 文件的实际位置的符号链接。 请参阅以下示例。

ln -s /<my_group_name>/InstallationManager_AppData/etc/.ibm/registry/InstallationManager.dat \
/home/<non-root-username>/etc/.ibm/registry/InstallationManager.dat
安装修订包后 Node Agent 运行状态或同步时发生错误
使用 WebSphere AutomationWebSphere Application Server Network Deployment 中的节点上安装修订包后,可能会看到下列其中一个问题:
  • 管理控制台中节点的运行状态不正确
  • 管理控制台中节点的同步不正确
  • 类似于 SystemOut.log 文件中的以下错误:
    ADMD0026W: The version of the deployment manager (9.0.5.11) is earlier than that of this node (node1, 9.0.5.12).

发生这些问题的原因是节点的修订包版本高于 Deployment Manager 主机的版本。 要解决此问题,请手动将 Deployment Manager 主机更新为等于或高于修订包版本的版本。

Installation of the fix cannot proceed错误消息
如果Installation of the fix cannot proceed出现错误消息,这可能是由下列其中一个问题导致的:
  • WebSphere Automation 与 IBM Fix Central之间可能存在通信问题。
  • 可能存在阻止 WebSphere Automation 向 IBM Fix Central进行认证的配置问题。
  • 可能存在阻止 WebSphere Automation 在受管服务器上安装修订的用户特权问题。

请检查配置以确保它们正确。 如果配置正确且怀疑存在通信问题,请在大约 1 小时后再次尝试启动修订。

Problem with request to install fix错误消息

如果Problem with request to install fix出现错误消息,这是因为在特定主机上启动了多个修订安装。 一次只能在特定主机上安装一个修订。 请等待当前修订安装过程完成,然后再尝试在该主机上安装另一个修订。

Windows 服务器上安装修订

如果在 Windows 服务器上安装修订的过程停滞了不合理的时间,请重新启动 Windows 服务器,然后重新启动该修订的安装。

Install-fix pod 在安装修复程序时因 ContainerStatusUnknown 而停滞不前
修订安装可能会延迟并显示Installing fixWebSphere Automation UI 中,并且要使 install-fix pod 保持 ContainerStatusUnknown 状态。 在此情况下,同一主机上的后续安装尝试不会继续,并导致以下错误消息。
WIORM0806E: 正在主机 "myhost.com" 上安装其他修订。 请稍后重试。

要检查 pod 状态,请运行 oc get pod 命令。 查找 ContainerStatusUnknown 状态。

oc get pod | grep install-fix
install-fix-f6054b58-f20d-4351-8c44-7c1efd93f2d5-9m89j    0/1    ContainerStatusUnknown   1    48m

要解决此问题,必须删除从未超过 in-progress 状态的已停止安装,然后删除相关的 install-fix 作业。

  1. 使用 Swagger UI 或 CLI 命令删除延迟的安装。

    要使用 Swagger UI 删除已停止的安装,请找到其 installationId 值,然后在 DELETE 操作中使用该值。 有关如何使用 Swagger UI 的一般说明,请参阅 WebSphere Automation "如何 "系列 #10:如何使用 Swagger UI 查看 WebSphere Automation REST API。

    1. 通过使用 hostNamestatus 查询参数的 /installations 上的 GET 操作,在仍处于 in-progress 状态的主机上查找安装。
    2. 使用使用 installationId 值的 DELETE 操作来删除这些安装。
      DELETE /installations/{installationId}
    要使用CLI命令删除停滞的安装,首先获取令牌和 URL ,然后通过CLI使用 WebSphere Automation REST API删除安装。
    1. 获取令牌值。 查看 REST API 详细说明如何获取授权用户概要文件的令牌值。

      1. 获取管理员帐户的密码。
        oc -n WSA_INSTANCE_NAMESPACE get secret ibm-iam-bindinfo-platform-auth-idp-credentials -o jsonpath='{.data.admin_password}' | base64 -d && echo

        WSA_INSTANCE_NAMESPACE 是安装 的实例的命名空间;如果安装时选择了默认值,则该值为。 WebSphere Automation websphere-automation

      2. 用上一步命令返回的值替换以下命令中的 <password> ,并使用 WSA_INSTANCE_NAMESPACE 的正确值。
        curl -k -X POST -H 'Content-Type: application/json' -d '{"username":"cpadmin","password":"<password>"}' https://$(oc get route -n WSA_INSTANCE_NAMESPACE -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/icp4d-api/v1/authorize | jq -r .token
    2. curl 命令的结果复制到 TOKEN 变量中。
    3. 获取所需URL ,以便在 curl 命令中使用。 在以下命令的结果中附加前缀 https:// 和后缀 /websphereauto/secvul/apis/v1

      oc get route -n WSA_INSTANCE_NAMESPACE -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}'

      Linux设置 URL ,可以使用以下命令。

      URL=https://$(oc get route -n WSA_INSTANCE_NAMESPACE
       -o jsonpath='{.items[?(@.spec.to.name=="ibm-nginx-svc")].spec.host}')/websphereauto/secvul/apis/v1
    4. 获取特定主机上安装卡住 in-progressinstallationId 。 在替换 HOSTNAME之后,可以使用以下命令。
      curl -k -X GET "${URL}/installations?hostName=HOSTNAME&status=in-progress" -H "accept: application/json" -H "Authorization: Bearer $TOKEN" | jq . | grep id
    5. 删除该安装。 将命令中的 INSTALLATIONID 替换为上一步中的 installationId 值。
      curl -k -X DELETE "${URL}/installations/INSTALLATIONID" -H "accept: application/json" -H "Authorization: Bearer $TOKEN"
  2. 删除安装修订作业。

    1. 使用 oc get job 命令获取作业名。
      oc get job | grep install-fix
      install-fix-306dfd00-cb07-456c-91bb-7d3be8e5c0d7   0/1      14h   14h
    2. 使用 oc delete job job_name 命令删除相关的 install-fix 作业。
      oc delete job install-fix-306dfd00-cb07-456c-91bb-7d3be8e5c0d7
在具有 AIX 操作系统的目标服务器上安装 iFix 失败,发生错误chmod: A flag or octal number is not correct
当连接用户和 become_user 都没有特权时,此错误与在 AIX 操作系统上使用 Ansible 相关。 要防止此问题重现,请执行以下步骤:
  1. --from-literal=ansible_pipelining=true 添加到私钥。
  2. /etc/sudoers 文件中对所有受管主机禁用 requiretty
    您可以通过注释掉 Defaults requiretty 行来执行此操作,如以下示例中所示。
    #Defaults requiretty
检测到内存泄漏后调用 Webhook 失败
对 Instana 警报模式的意外更新可能会导致此问题。 WebSphere Automation 使用 JSON 模式来验证从 Instana 发送的 JSON。 WebSphere Automation 使用的模式在 wsa-schema-instana-alerts 配置映射中设置。 确保将环境变量 $WSA_INSTANCE_NAMESPACE 设置为 WebSphere Automation 实例名称空间。
  1. 从缺省 ConfigMap 中检索缺省 Instana 警报模式,作为名为 instana-alerts-custom.json的本地文件。
    oc get cm wsa-schema-instana-alerts -n $WSA_INSTANCE_NAMESPACE -o "jsonpath={.data['instanaAlerts\.json']}" > instana-alerts-custom.json
  2. instana-alerts-custom.json JSON 文件进行必要的更改。
  3. 创建定制 ConfigMap。
    oc create cm wsa-schema-instana-alerts-custom -n $WSA_INSTANCE_NAMESPACE --from-file=instanaAlerts.json=instana-alerts-custom.json
公告导入作业在气郄安装中失败

在气郄安装中, wsa-secure-bulletins-import pod 可能无法完成。 例如,如果运行以下命令:

oc get pods | grep import

您可能会看到有错误的输出:

wsa-secure-bulletins-import-1.6.0-8526l 0/1 错误 0 2d15h
wsa-secure-bulletins-import-1.6.0-b7jld 0/1 错误 0 2d15h
wsa-secure-bulletins-import-1.6.0-c4cxf 0/1 错误 0 2d15h
wsa-secure-bulletins-import-1.6.0-dsmdg 0/1 错误 0 2d15h
wsa-secure-bulletins-import-1.6.0-fgj7p 0/1 错误 0 2d21h
wsa-secure-bulletins-import-1.6.0-kw9qm 0/1 错误 0 2d15h
wsa-secure-bulletins-import-1.6.0-t5sgl 0/1 错误 0 2d15h

如果是这样,请删除公告导入作业。

oc delete job wsa-secure-bulletins-import-1.6.0

将创建新的公告导入作业。

访问 “操作” > “应用程序运行时” 页面时超出超时时间
当 WebSphereSecure UI 使用 Red Hat OpenShift 提供的证书时,无法联系平台 UI 实例,从而导致此问题。 当应用程序通信失败时,浏览器会迂到超时,并显示以下错误:
timeout of 20000ms exceeded

要解决这个问题,请删除 WebSphereSecure UI 部署 (<instance-name>-secure-ui) 以重新启动应用程序。

例如,使用 WebSphere Automation 实例名称 wsa时,应删除 wsa-secure-ui

使用 oc delete deployment deployment_name 命令删除相关部署。

oc delete deployment <instance-name>-secure-ui -n <namespace>
在支持 FIPS 的环境中,安装修订或内存泄漏调查不会进行
如果使用在支持 FIPS 的 WebSphere Automation安装中的非 FIPS 系统上生成的 SSH 密钥对,那么修订的应用程序或内存泄漏调查可能无法进行。 Pod 日志可能在以下行处停止:
[07/28/23 18:27:00:516 UTC] 1    com.ibm.ws.automation.core.runbook.runner.RunbookRunnerCLI INFO start Request received to execute runbook: install-fix against server: server1.example.com (correlationId: 65301e97-5754-4001-afbe-0c669d6774ff)
[07/28/23 18:27:00:607 UTC] 1    com.ibm.ws.automation.core.runbook.runner.AnsibleRunner INFO runRunbook Here is the standard output of the command:

[07/28/23 18:27:00:613 UTC] 1    com.ibm.ws.automation.core.runbook.runner.AnsibleRunner INFO runRunbook was:
[07/28/23 18:27:00:613 UTC] 1    com.ibm.ws.automation.core.runbook.runner.AnsibleRunner INFO runRunbook   hosts:
[07/28/23 18:27:00:613 UTC] 1    com.ibm.ws.automation.core.runbook.runner.AnsibleRunner INFO runRunbook     server1.example.com:
[07/28/23 18:27:00:613 UTC] 1    com.ibm.ws.automation.core.runbook.runner.AnsibleRunner INFO runRunbook       ansible_user: root
[07/28/23 18:27:00:625 UTC] 1    com.ibm.ws.automation.core.runbook.runner.AnsibleRunner INFO runRunbook Agent pid 41

发生此问题的原因是非 FIPS 系统上的 ssh-keygen 命令使用 MD5 摘要算法来生成密钥。 在支持 FIPS 的系统上,已禁用 MD5 摘要算法。 没有口令的 SSH 密钥对不受影响。

在支持 FIPS 的集群上运行 WebSphere Automation 时,请选择下列其中一个选项以在支持 FIPS 的系统上使用受口令保护的 SSH 密钥对。

  • 在启用 FIPS 的系统上生成新的受口令保护的 SSH 密钥对。
  • 将现有专用密钥转换为与 FIPS 兼容的格式:
    $ openssl pkcs8 -topk8 -v2 aes128 -in <INPUT FILENAME> -out <OUTPUT FILENAME>
    Enter pass phrase for id_rsa:   <PASSPHRASE OF EXISTING KEY>
    Enter Encryption Password:      <PASSPHRASE FOR NEW KEY>
    Verifying - Enter Encryption Password:    <PASSPHRASE FOR NEW KEY>
未发送电子邮件通知, wsa-secure-vulnerability-notifier pod 日志中存在 Can't verify identity of server 错误消息

WebSphere Automation 1.7开始,使用比以前的版本更安全的 Javamail 服务,它在建立 TLS 连接时强制执行服务器身份。 如果证书与邮件服务器的主机名不匹配,那么无法建立安全连接,并且不会发送任何电子邮件。

要在发送电子邮件时禁用主机名验证,可以在 " 通知 " 页面中将 mail.smtps.ssl.checkserveridentity 属性设置为 false

  1. 以具有 管理通知 特权的用户身份登录 WebSphere Automation
  2. 点击菜单图标 > 操作 > 应用程序运行时 ,然后打开通知页面。
  3. 在 " 通知 " 页面上的 电子邮件服务器下,单击 配置服务器
  4. 单击 添加其他字段下的 添加 按钮。
  5. 添加 mail.smtps.ssl.checkserveridentity 参数,并将其值设置为 false
  6. 单击保存
运行手册日志包含文件访问许可权错误

WebSphere Automation 运行手册要求为 ansible_user 连接变量定义的用户概要文件具有对以下 WebSphere Application Server 传统文件及其父目录的读访问权。

app_server_root/properties/profileRegistry.xml
app_server_root/properties/version/installed.xml

如果为 ansible_user 连接变量定义的概要文件无法读取文件,那么您可能会在运行手册日志中看到类似于以下内容的错误:

ValueError: File not found or no permissions to access app_server_root/properties/version/installed.xml

Permission denied: 'app_server_root/properties/profileRegistry.xml'

要授予对文件的读访问许可权,请使用操作系统工具来更改文件许可权。 例如:

chmod +r /opt/IBM/WebSphere/AppServer/properties/profileRegistry.xml
chmod +r /opt/IBM/WebSphere/AppServer/properties
chmod +r /opt/IBM/WebSphere/AppServer/properties/version/installed.xml
chmod +r /opt/IBM/WebSphere/AppServer/properties/version

更多有用信息,请参阅 WebSphere Application Server 文档中的 " 为配置文件相关任务授予写入权限 "。 尤其请参阅步骤 8 ,并记住链接文档中的用例不同; 请勿明确遵循这些指示信息。

没有用于修复 Java SDK 运行时中的漏洞的 iFix 选项
在 " 准备修订 " 对话框中,没有任何临时修订 (iFixes) 显示为用于修订 Java SDK 运行时中的漏洞的选项。 必须在 " 选择全局选项 " 页面上选择 修订包 作为 修订类型 ,然后在 " 选择修订 " 页面上选择要安装的修订包。