ARCS 系统日志分析指导
0 目录简介
0.1 系统目录
请不要随意修改系统文件。
日志文件不会无限存储,新日志会覆盖旧日志
/root/arcs_ws
│
├── config ARCS 配置文件夹
│
├── program 工程文件夹
│ ├── xxx.pro 程序文件
│ ├── xxx.ins 安装配置文件
│ └── xxx.lua 脚本文件:由同名程序文件和安装配置文件编译生成
│
├── db 数据库文件夹:请勿私自改动,如需修改,请先备份
│
├── log 日志文件夹
│
├── extensions 插件文件夹
│
├── oem 定制文件夹
│
└── ...
0.2 日志压缩包目录
arcs_report_xxxxxxxxxxxx.zip
│
├── config ARCS 配置文件夹
│ ├── aubo_control.conf aubo_control 的配置文件
│ ├── aubo_scope.ini aubo_scope 的配置文件:包含用户自定义的配置信息
│ ├── extensions aubo_scope 插件配置文件(加载插件才会存在)
│ ├── robot_type 记录机械臂类型
│ ├── frpc.ini 反向代理的配置文件
│ ├── netif_lck 接口板接入的网卡名称
│ └── ...
│
├── program 工程文件夹
│
├── db 数据库文件夹:请勿私自改动,如需修改,请先备份
│
├── log 日志文件夹
│ ├── .crash 崩溃日志文件
│ │ ├── aubo_control
│ │ ├── aubo_scope
│ │ │ ├── aubo_scope_xxxx 有线示教器端崩溃日志
│ │ │ └── ...
│ │ └── ...
│ │
│ ├── .trace 操作日志文件夹
│ ├── webscope Android 端日志文件夹
│ │ ├── backend.log 后端日志
│ │ ├── backend_xxx.log
│ │ └── frontend.log 前端日志
│ │
│ ├── aubo_control.log
│ └── aubo_scope.log
│
├── system 系统日志文件夹
│
├── aubo_recordSystem CUP 和内存文件夹
│
└── ...
1 aubo_scope 日志分析
aubo_scope 日志分为三部分:常规日志、操作日志和 崩溃日志。
1.1 常规日志
有线示教器常规日志 aubo_scope.log ,位于控制柜 /root/arcs_ws/log/下。基本内容格式如下图所示:

每一条日志记录包含时间、线程号、日志等级与日志内容。
aubo_scope.log 中的日志等级分为:DEBUG-调试、WARNING-警告、ERROR-错误、FATAL-致命、INFO-信息。出现异常情况时主要看 ERROR,其次是 WARNING,FATAL 几乎不会出现。

aubo_scope.log 中有线示教器启动的标志如下图所示:

aubo_scope.log 中有线示教器连上控制器端,成功获取到当前控制柜与机械臂模型、成功接入机械臂的日志标志如下图所示:
此处日志所指示的是最根本的控制柜模型与机械臂模型。


aubo_scope.log 中与RobotModeType、SafetyModeType更新相关的日志如下图所示:


有线示教器界面操作,点击按钮开始运行程序的日志标志如下图所示:

有线示教器发生卡顿时会记录有助于排查卡顿原因的关键信息,如下图所示:

1.2 操作日志
有线示教器操作日志 aubo_scope.trace 位于控制柜 /root/arcs_ws/log/.trace/下。主要是针对有线示教器的界面操作记录。排查异常情况时,可查阅操作日志看问题发生之前做过什么操作,根据操作日志的信息 尝试看能否稳定复现。

1.3 崩溃日志
有线示教器崩溃日志是运行过程中突发崩溃产生的日志,对于排查解决崩溃问题非常重要。崩溃日志位于控制柜 /root/arcs_ws/log/.crash/aubo_scope/下。发生崩溃,异常中止之后,有线示教器服务通常会自动重启,所以崩溃日志文件名的时间与常规日志中示教器启动的时间有对应关系。

2 web_scope 日志分析
webscope 日志分为两部分,后端日志和 App 日志,下面将依次讲解文件位置以及简单分析方法
2.1 后端日志
后端日志文件位于控制柜 /root/arcs_ws/log/webscope/ 文件夹下,以 backend开头,末尾数字越大日志时间越老,末尾不带数字的文件是最新日志。

日志按照以下顺序依次打印,排查问题时,最重要的是问题发生时间。在问题发生时间上下找 WARN、ERROR 类型的日志一般可以定位到问题原因。

2.2 App 运行日志
App 日志位于平板电脑 /Download/00RLogs/AuboStudioLog/ 文件夹下,以 aubostudio 开头,包含日期信息。备份日志的文件名称末尾数字越大日志时间越新,末尾不带数字的文件是最新日志。

日志按照以下顺序依次打印,在问题发生时间上下找 WARN、ERROR 类型的日志一般可以定位到问题原因。

2.3 App 崩溃日志
App 崩溃日志位于平板电脑 /Download/00RLogs/Crash/ 文件夹下,以 java_crash 开头,末尾是精确到秒的时间,可以根据问题出现时间进行精确定位。

2.4 注意事项:
AuboStudio 0.9.4-rc.20 | 0.10.0-alpha.34 及以前的版本,App 运行日志文件分为两个,位置/Download/00RLogs/目录下的 Native和 FrontendLog下。
3 aubo_control 日志分析
如需更全面的了解 aubo_control 日志文件结构与关键信息请参考:aubo_control 日志分析
3.1 无控制器问题
3.1.1 示教器表现
当出现无控制问题时,示教器会表现一些具体的特征,提示“无控制器”,并且【上电】按键处于置灰状态,无法点击上电。
点击【连接】后会提示“检测到本地控制器不存在”。
3.1.2 可能原因
出现这种现象的可能原因有以下几点,需逐步分析排查解决:
- 控制器进程崩溃;
- 控制器进程启动失败;
- 通信问题引起的示教器连接控制器失败。
3.1.3 控制器崩溃排查
后台进程检查
当出现控制器崩溃导致无控制器情况时,控制器崩溃后示教器会提示“无控制器”,并且后台进程已结束,后台
aubo_control的进程表现可以通过命令行工具进行检查:使用
ps -ef|grep aubo_control指令后得到的结果类似于以下内容,这表明aubo_control服务未启动或不存在:
aubo_control服务正常时如下:
使用
systemctl status aubo_control指令后得到的结果类似于以下内容,这表明aubo_control服务未启动:
aubo_control服务正常时如下:
崩溃原因分析
分析具体引起崩溃的原因,要根据日志内容深入剖析引起控制器崩溃的原因,主要是根据崩溃日志来分析,但有时可能没有生成崩溃日志,这时就需要结合控制器日志和系统日志来排查,日志包括:
控制器运行日志:
控制器日志存放在文件夹下
/root/arcs_ws/log/,如果控制器出现重启,根据文本aubo_cotrol start查找重启的日志,重启附近就是发生崩溃的地方,看看控制器是接收了什么请求,运行了什么功能,进而定位引起崩溃的原因;崩溃后有可能未重启,则直接看aubo_control.log中的最新日志是在什么地方结束的,从而定位引起崩溃的原因。
控制器崩溃日志:
崩溃日志存放在文件夹下
/root/arcs_ws/log/.crash,要找发生崩溃时间点对应的崩溃日志,有了崩溃日志,请第一时间将崩溃日志发给研发人员进行分析;崩溃日志包括两个文件:aubo_control_20231026182805和b7a6da7d-323c-43c8-610c0d95-90a8e00a.dmp。
注意:.crash 文件夹为隐藏文件夹,需要使用键盘输入 crtl + H 显示隐藏的文件夹。
使用工具
minidump_stackwalk查看.dmp崩溃堆栈信息请参考 使用工具查看崩溃日志系统日志:
系统日志存放在
/var/log下的syslog文件中,当使用示教器导出日志后,系统日志是在system文件夹下,控制器崩溃后syslog中一般会出现以下类似的日志内容:
导出日志请参考 ARCS 日志拷贝操作指南
控制器崩溃的解决方案
- 导出日志并记录下崩溃时的使用场景和使用步骤,联系相关的研发人员进行及时的修复;
- 发生崩溃后,先导出日志,记录现场的使用情况,如果现场比较着急,可以及时进行回滚切换版本,切换到上一个可用版本,具体可用版本号可以联系 FAE 获取。
启动时发生崩溃的原因大多是发生在配置文件错误,可以在备份配置文件后将配置文件删除,从
aubo_description中拷贝对应的aubo_control.conf配置文件来替换。如果使用了新打的补丁,可能是打的补丁有问题,需联系打补丁的开发人员重新打补丁;运行过程中发生崩溃的原因是使用了新版本增加的新功能或者更新了算法,还有可能是新的应用场景和使用方式;这些情况都需要导出日志文件,记录使用的软件版本和使用场景和步骤,并联系研发人员进行排查解决。
3.1.4 控制器启动失败排查
如果是控制器启动失败导致无控制器情况时,示教器会提示“无控制器”,后台 aubo_control 的进程表现可以通过命令行工具进行检查:
使用
systemctl status aubo_control指令后得到的结果类似于以下内容,表明aubo_control服务未启动:
使用
systemctl start aubo_control命令来启动aubo_control的进程:
使用
systemctl restart aubo_control命令(可选)来重启aubo_control的进程:
aubo_control 的进程正常启动后,示教器就可以直接连接控制器了。
3.1.5 通信问题排查
如果是由于通信问题导致示教器连接控制器失败,这种情况一般是出现在无线示教器中,示教器不仅会有提示“无控制器”,而且在点击【连接】按钮时会连接失败。
出现这种情况的原因一般会有以下几种:
- 示教器中连接的目标 IP 地址填错了,或者填写的目标控制器的 IP(机器人 IP)不存在。
- 本机设备和目标控制器的(机器人)之前的网络通信有问题。
针对上面提到的情况,需要查看机器人 IP 是多少,可以进入机器人后台,使用 ifconfig 来查看网卡 IP,然后把这个 IP 填入示教器的地址栏即可。
检查设备之间的网络通信
使用 ping 命令检查无线示教器所在设备和控制柜之间的网络通信是否正常,通信正常时如下:
通信异常时会返回 无法访问目标主机/Host Unreachable ,内容如下:
解决方法: 确保无线示教器所在设备和控制柜在同一局域网下,并且目标IP地址是控制柜的IP地址。
浏览器上使用 AuboStudio App 时检查网络通信请参考:如何在浏览器上使用 AuboStudio App