一、本文目的
网上有很多关于BatteryHistorian环境搭建的指导,很多是基于完整环境搭建进行的,基本的流程如下:
- 安装Go编程语言;
- 配置环境变量;
- 安装Git;
- 安装Python;
- 安装JAVA环境;
- 继续配置环境变量;
- 下载Battery Historian源码(需要解决各种墙的问题);
- 运行Battery Historian(同样会遇到墙的问题);
关是安装各种环境就要耗费大量的时间和精力。
本文是基于windows10环境结合Docker容器快速搭建BatteryHistorian环境的过程,参考了网上相关的文章(见底部参考资料)。
因为是基于容器搭建,省去了前面1-7的步骤,对于希望能快速搭建环境专注分析与解决问题的朋友能起到一定的帮助。
友情提醒
虽然基于Docker我们很快就能把环境跑起来,但是踩坑,填坑的过程依然会有一点点挑战,欢迎有兴趣的小伙伴一起学习和交流。
二、前置知识及所需准备
2.1.前置知识
容器: Containers
用于运行镜像服务的Linux简化系统;
镜像: Images
打包安装好相应运行环境及业务应用的压缩包(包括GO,Python运行环境等),运行时会加载到Containers中运行;
端口映射: Port(s)
容器内运行的服务需要对宿主机提供访问时,需要先对端口进行映射,建立起两台服务器之间的虚拟通道。
2.2.前置准备
- 下载Docker Desktop Installer(链接见底部参考资料:Docker下载及安装)
- 下载wsl_update_x64(链接见底部参考资料:WSL2 Linux 内核更新包)
三、操作过程
3.1安装Docker Desktop
- 两个选项都勾选上
- 首次启动Docker
- 根据提示下载WSL
如果上一章节的前置准备对应的包你已经下载好,可以直接执行安装,如果未下载,可以根据以下提示步骤引导进入下载安装
- 安装完成
安装完成后,如果提示窗没有关闭,可以点击"Restart"刷新界面
首次进入,此时你的Docker容器与镜像列表都是空的。
3.2获取镜像
完成以上程序的安装后,接下来就要来获取BatteryHistorian镜像文件了。
- 调出命令行窗口
- 查找BatteryHistorian镜像
输入以下命令:
docker search battery
- 拉取镜像文件
选择一个battery-historian
镜像,通过docker pull
命令拉取镜像,效果如下:
docker pull blystad/battery-historian
整个镜像大约900M,下载的时长根据你家的网络情况而定。
当你看到:Downloaded newer image for XX时,就说明镜像文件已下载完成。
- 加载并启动镜像
切换到【Images】:
这里的端口参数必须要填写,否则你会踩到第一个坑(详见下一章节)。
- 访问BatteryHistorian
在【Containers】下点击对应服务的更多菜单,选择**”Open with browser“**
至此,BatteryHistorian的环境搭建就已完成。
通过*”Browse“*按钮上传report文件,即可开始日志分析。
关于如果导日志,以及耗电分析的具体介绍,不在本文范围,有需要的朋友可以上网百度学习。
四、问题处理(踩坑、填坑)
问题一: 启动服务后,没有"Open with browser",无法访问
问题原因:
服务启动时,没有配置对外映射的端口,导致宿主机无法直接访问虚拟服务器上的服务 。
处理方法:
删除服务,重新参照【加载并启动镜像】章节完成端口配置即可。
问题二: 浏览上传文件后,无法提交进行分析
问题原因:
是JS相关依赖库无法加载导致。
处理方法:
翻墙后刷新即可(下次就不用翻墙了)。
问题三: 上传日志文件提交后,报错:Could not parse aggregated battery stats
问题原因:
运行环境下的go代码存在兼容性问题导致当前系统下执行报错。
处理方法:
对容器服务中的代码进行修改。
1.启动状态下,进入命令行窗口
2.安装vim工具(文件编辑工具,容器默认没有安装)
- 修改GO代码
注:此操作涉及一些Linux基本操作,相关知识点建议根据需要进行百度,现学现用。以下罗列的操作命令供参考。
编辑指定文件:
vim checkinparse/checkin_parse.go
编辑状态下根据关键字定位:
/关键字
不保存退出:按下esc键后:
:q!
保存退出:按下esc键后:
:wq
- 重启服务
重启后,重新刷新页面,上传日志文件,提交,即可看到相应的日志分析图形:
问题四: Docker无法启动
问题原因:
Docker与VMware冲突导致。
微软的hyper-V(虚拟化软件),使用docker就必须要启动hyper-V服务,当开始hyper-V启动后,VMware的Windows10会由于启动了hyper-V导致VMware的Windows10无法启动,产生冲突。
处理方法:
- 打开控制面板,点击卸载程序进入到程序和功能
- 点击启用或关闭Windows功能,进入Windows功能
- 勾选(Docker正常使用)取消勾选(Vmware正常使用)
- 命令行下启用Hyper-V(管理员身份运行)
bcdedit /set hypervisorlaunchtype auto(启用hyper-V)
- 重启电脑让以上设置生效。
注意:
因两者冲突,以上操作将会导致VMware不可用,如果想恢复让VMware正产使用,可逆向操作,同时,命令行关闭hyper-V服务:
bcdedit /set hypervisorlaunchtype off(关闭hyper-V)
五、参考资料
- Docker下载及安装
- WSL2 Linux 内核更新包
- Battery Historian官网指导
- Battery Historian安装及报错解决
- 解决docke容器下无vi编辑命令的处理方法
- Windows下Linux子系统(WSL)完美安装流程
- 关于本机Docker与vmware冲突问题