
# ALM-17003 Oozie服务不可用
#### 告警解释
系统每5秒周期性检测Oozie服务状态，当Oozie或者Oozie所依赖的组件无法正常提供服务时，系统产生此告警。
当Oozie服务恢复可用状态时，告警自动消除。
#### 告警属性
| 告警ID  | 告警级别 | 是否自动清除 |
|:---|:---|:---|
| 17003 | 紧急   | 是      |
   
#### 告警参数
| 参数名称    | 参数含义       |
|:---|:---|
| 来源      | 产生告警的集群名称。 |
| 服务名     | 产生告警的服务名称。 |
| 角色名     | 产生告警的角色名称。 |
| 主机名     | 产生告警的主机名。  |
| Details | 对告警信息的补充。  |
   
#### 对系统的影响
无法使用Oozie服务调度任务。
#### 可能原因
- DBService服务异常或者Oozie存储在DBService中的数据遭到破坏，导致Oozie服务不可用。
- HDFS服务异常或者Oozie存储在HDFS中的数据遭到破坏时，导致Oozie服务不可用。
- Yarn服务异常，导致Oozie服务不可用。
- Nodeagent进程故障，导致Oozie服务不可用。
 
#### 处理步骤
**查询Oozie服务健康状态码。**
1. 在FusionInsight Manager中，选择"集群 \> *待操作集群的名称* \> 服务 \> Oozie"，单击"oozie WebUI"的"oozie"（两个任选一个），进入Oozie WebUI页面。
   
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
   **admin**用户默认不具备其他组件的管理权限，如果访问组件原生界面时出现因权限不足而打不开页面或内容显示不全时，可手动创建具备对应组件管理权限的用户进行登录。
   
   
2. 在浏览器地址栏的URL地址后追加"/servicehealth"重新访问，"statusCode"对应的值即为当前Oozie的服务健康状态码。 
   例如，在浏览器中访问"https://10.10.0.117:20026/Oozie/oozie/130/oozie/servicehealth"，显示结果为：
   ```
   {"beans":[{"name":"serviceStatus","statusCode":0}]}
   ```
   如果无法查询出健康状态码或者浏览器一直无响应，可能是由于Oozie进程故障导致服务不可用，请参考[步骤 13]进行处理。
   
   
3. 根据查询到的错误码执行相关处理步骤，请参考[表1]。
   
    表1Oozie服务健康状态码一览表 
   | 状态码   | 错误描述          | 错误原因                                     | 处理步骤                                     |
   |:---|:---|:---|:---|
   | 0     | 服务正常          | 无                                        | 无                                        |
   | 18002 | DBService服务异常 | Oozie连接DBservice失败或者存储在DBService中的数据遭到破坏 | 请参考[步骤 4]。  |
   | 18003 | HDFS服务异常      | Oozie连接HDFS失败或者存储在HDFS中的数据遭到破坏           | 请参考[步骤 7]。  |
   | 18005 | Mapreduce服务异常 | Yarn服务异常                                 | 请参考[步骤 11]。 |
      
   
   
**检查DBService服务。**
4. 在FusionInsight Manager界面，选择"集群 \> *待操作集群的名称* \> 服务"，检查DBService服务当前状态是否正常。
   
   - 是，执行[步骤 6]。
   
   - 否，执行[步骤 5]。
   
   
   
   
5. 参考DBService服务的相关告警帮助进行处理，然后查看本告警是否恢复。
   
   - 是，处理完毕。
   
   - 否，执行[步骤 18]。
   
   
   
   
6. 登录Oozie数据库检查数据是否完整。
   
   1. 以**root** 用户登录DBService主节点，用户密码为安装前用户自定义，请咨询系统管理员。
      在FusionInsight Manager界面，选择"集群 \> *待操作集群的名称* \> 服务 \> DBService \> 实例"，即可查看DBService主节点IP地址信息。
      
   
   2. 执行以下命令登录Oozie数据库。 **su - omm**
      **source ${BIGDATA_HOME}/FusionInsight_BASE_** **8.1.0.1** **/install/FusionInsight-dbservice-2.7.0/.dbservice_profile**
      **gsql -U** *用户名* **-W** *Oozie* *数据库密码* **-p 20051 -d** *数据库名称*
      
   
   3. 登录成功后，输入**\\d** ，检查数据表是否共有15张。
      Oozie服务默认有15张数据表，如果这些数据表被删除或者表结构被修改都可能导致Oozie服务不可用，请联系运维人员备份相关数据后进行恢复。
      
   
   
   
   
**检查HDFS服务。**
7. 在FusionInsight Manager界面，选择"集群 \> *待操作集群的名称* \> 服务"，检查HDFS服务当前状态是否正常。
   
   - 是，执行[步骤 9]。
   
   - 否，执行[步骤 8]。
   
   
   
   
8. 参考HDFS服务的相关告警帮助进行处理，然后查看本告警是否恢复。
   
   - 是，处理完毕。
   
   - 否，执行[步骤 18]。
   
   
   
   
9. 登录HDFS检查Oozie文件目录是否完整。
   
   1. 下载并安装HDFS客户端。
   
   2. 以**root** 用户登录客户端所在节点，执行以下命令，检查"/user/oozie/share"路径是否存在，用户密码为安装前用户自定义，请咨询系统管理员。
      如果集群采用安全版本，要进行安全认证。
      **kinit admin**
      **hdfs dfs -ls /user/oozie/share**
      
   
   
   - 是，执行[步骤 18]。
   
   - 否，执行[步骤 10]。
   
   
   
   
10. 在Oozie客户端安装目录中手动将share目录上传至HDFS的"/user/oozie"路径下，检查告警是否恢复。
    
    - 是，处理完毕。
    
    - 否，执行[步骤 18]。
    
    
    
    
**检查Yarn/Mapreduce服务。**
11. 在FusionInsight Manager界面，选择"集群 \> *待操作集群的名称* \> 服务"，检查Yarn、Mapreduce服务当前状态是否正常。
    
    - 是，执行[步骤 18]。
    
    - 否，执行[步骤 12]。
    
    
    
    
12. 参考Yarn、Mapreduce服务的相关告警帮助进行处理，然后查看本告警是否恢复。
    
    - 是，处理完毕。
    
    - 否，执行[步骤 18]。
    
    
    
    
**检查Oozie进程。**
13. 以**root** 用户分别登录Oozie服务两个节点，用户密码为安装前用户自定义，请咨询系统管理员。
    
    在FusionInsight Manager界面单击"集群 \> *待操作集群的名称* \> 服务 \> Oozie \> 实例"，即可查看服务所在节点的IP地址信息。
    
    
14. 执行命令**ps -ef \| grep oozie** ，检查Oozie进程是否存在。
    
    - 是，执行[步骤 15]。
    
    - 否，执行[步骤 18]。
    
    
    
    
15. 分别检查和收集Oozie日志目录"/var/log/Bigdata/oozie"中的prestartDetail.log、oozie.log、catalina.out里的异常信息，确认非人为误操作导致的问题后，执行[步骤 16]。
**检查Nodeagent进程。**
16. 以**root** 用户分别登录Oozie服务两个节点。执行命令**ps -ef \| grep nodeagent** ，检查Nodeagent进程是否存在。
    
    - 是，执行[步骤 17]。
    
    - 否，执行[步骤 18]。
    
    
    
    
17. 执行**kill -9** *查询到的nodeagent* *进程ID* 命令，等待10分钟后，检查本告警是否恢复。
    
    - 是，处理完毕。
    
    - 否，执行[步骤 18]。
    
    
    
    
18. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
无。
