关于《DevOps元素周期表—2号元素Kibana》一文,主要讲述了ELK日志中心的相关操作,突然想到之前做过一个对ELK中核心日志指标进行报表处理的程序,叫做Kibana-eye,也就是Kibana的眼睛。

https://github.com/CasterWx/kibana-eye

利用它可以将你日志中心中的核心指标(SQL耗时,RPC调用失败率/耗时,HTTP服务响应时间等等)每天进行统计,生成表格,邮件通知或者钉钉报警,还支持执行Python任务脚本。

新建Job

image.png

查看现有Job,可立刻执行

image.png

自动生成查询条件

image.png

任务执行结果查看

image.png

image.png image.png

支持数据导出Excel

image.png

这里面涉及了一个核心组件,就是定时任务,什么时候进行数据统计,此处使用了时间轮算法,实现了每日定时任务。

这里用了一张网上的图,时间轮算法的核心在于该轮中每一格都有一个任务队列,初始化时根据执行时间去模轮的大小,每秒移动一个bucket,检查该任务是否还需过几轮执行。

image.png

如果觉得时间轮实现麻烦,其实也可以使用Spring的Scheduled来代替。

另外关于Java应用中执行Python脚本,可以使用Jython完成,或者Java的Runtime的exec。

<dependency>
	<groupId>org.python</groupId>
	<artifactId>jython</artifactId>
	<version>2.7.2</version>
</dependency>
 Process proc = null;
 try {
 	proc = Runtime.getRuntime().exec("python script.py");
  	proc.waitFor();
 } catch (Exception e) {
    	return Response.error("执行脚本错误");
 }

应用内置了一套Elasticsearch查询结果的解析器,主要是针对Json返回Html内容,用于浏览器显示以及邮件显示。

前端使用了vue-element-admin,后端使用了Spring Boot。

上个月在GitHub开源过一段时间,一天下午突然多了很多star,在接近100star的时候我把这个仓库设置为了私有,因为我需要检查一下有没有泄露一些隐私,emoji people:see_no_evil 检查完发现,没有...... 只好重新开源,又回到1个star了emoji people:bust_in_silhouette

image.png

image.png

这个坑也不知道能不能再挖下去了,实在不行,摇身一变搞成一个定时任务平台也不搓。