基于SpringBoot、WebSocket、Layui做的一个服务器日志监控工具

思路:最近在工作上,基于自己的兴趣,和监控需要。

设计并实现了日志监控工具,此工具,目的在与让在生产环境中没有服务器管理权限的开发人员,可以方便的访问到服务器中应用产生的日志和下载相关日志文件。

 

解决的需求是:方便开发人员在微服务环境下进行调试。排查错误。特别是当服务器众多的时候,实现分布式管理服务器。

 

采用技术:SpringBoot,SpringWebStarter,redis,后端shell 命令。前端:layui,html,jQuery。前后端交互:Rest,WebSocket。

服务器之间使用redis进行通信。它们之间的通信,使用redis通信,主要是考虑端口开放申请麻烦。当然Agent之间的通信可以使用TCP和UDP进行通信。或其他注册机制。

 

实现效果:

实现:

截图:

技术难点:

layui弹出窗口,关闭时,同步关闭websocket。

websocket和服务器通信。

 

相关源码:

log监控源码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>${logFile}</title>
<script th:src="@{/static/plugin/jQuery/jquery-2.2.3.min.js}"></script>
<script th:src="@{/static/plugin/bootstrap/js/bootstrap.min.js}"></script>
<link rel="stylesheet"
	th:href="@{/static/plugin/bootstrap/css/bootstrap.min.css}" />
<link th:href="@{/static/layui/css/layui.css}" rel="stylesheet" />
</head>
<body>
	<div id="log-container"
		style="height: 450px; overflow-y: scroll; background: #333; color: #aaa; padding: 10px;">
		<div></div>
	</div>
	<div id="closeWS"></div>
</body>
<script>
var logWS = new WebSocket('ws://[[${server}]]/log');
logWS.onmessage = function(event) {
	// 接收服务端的实时日志并添加到HTML页面中
	var divo = $("#log-container div");
	var text = divo.text;
	if(text.length>5000){
		divo.text(text.substring(5000));
	}
	divo.append(event.data);
    var scrollHeight = divo.prop("scrollHeight");
    divo.scrollTop($(document).height(),450);
}

$(window).scroll(function(){
	   var clientHeight = $(this).height();
	  var scrollTop = $(this).scrollTop();
	  var scrollHeight = $(document).height();
	  if(scrollTop + clientHeight == scrollHeight){
	    alert("到底部了!");
	  }
	});

logWS.onopen = function () {
	logWS.send('[[${logFile}]]');
}
function close(){
	logWS.close();
}

$(document).ready(function() {
	
});
</script>
</body>
</html>

这里的难点就是close的方法的使用,在关闭layui弹出窗时如何关闭websocket。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值