UMC通过控制k8s集群中的容器控制公司产品,在进行控制之前要能监视产品的动态。在实例监视中原有的运行日志功能只能显示一个容器的运行日志,而产品在k8s集群中可能拥有多个容器,会产生日志信息显示不完整且不方便对比的问题,需要对运行日志功能进行改造升级。从前期思路和知识要点的确认到编写设计再到功能实现和功能完善,本篇文档将对整个过程进行详细介绍。
1.前期准备
在进行功能改造之前,我们首先要确定设计运行日志的改造思路;其次思路确定后需要补充知识,对需要用到的知识进行大体了解;最后撰写设计,明确如何改造功能。
1.1总体思路
修改功能的大致过程就是总体思路,也就是说,在改造之前要想到修改功能需要使用哪些以前功能中就有的内容,根据功能中已有内容思考还需要添加哪些没有的内容,最后将这些想法清晰的分步写出来。
1.点击实例监视的产品节点,利用环境ID和产品ID获取当前环境下当前产品的所有容器ID
2.利用容器的心跳时间查看是否存在该容器,并判断出所有容器ID中正在运行的容器ID。
3.如同一页面中显示多个日志,需要根据容器ID的数量将页面划分区域。
4.利用WebSocket获取容器的实时信息,并显示在不同区域中。
1.2知识补充
根据总体思路学习改造功能的过程中可能会使用的知识点如下:
1.使用BootStrap中网格系统划分区域,网格系统可以根据class自动划分,最多划分12列
2.WebSocket 是 HTML5 提供的一种在单个 TCP 连接上进行全双工通讯的协议,使用WebSocket获取日志信息方法如下:
<%
if (pageBean.getStringValue("wsReqURL") != null){
%>
var websocket = null;
if('WebSocket' in window){
websocket = new WebSocket("<%=pageBean.getStringValue("wsReqURL")%>");
}
else{
alert('Not support websocket')
}
websocket.onerror = function(){
setMessageInnerHTML("error");
};
websocket.onopen = function(event){
setMessageInnerHTML("connected!");
}
websocket.onmessage = function(eve