发现Accesslog中的秘密By Elasticsearch7.5 + Kibana7.5之API性能趋势
前面几篇文章写了从AccessLog中发现API流量的对比图,还有查看流量异常的趋势图,可以参考如下链接:
发现Accesslog中的秘密By Elasticsearch7.5 + Kibana7.5之流量对比图
发现Accesslog中的秘密By Elasticsearch7.5 + Kibana7.5之流量变化原因
下面来聊一下如何生成我们API响应时间的性能图表。
创建一个曲线图
和上一篇一样,创建一个曲线图,选择索引,依次如下图:
首先生成平均响应值的曲线
在Buckets里添加X轴,选择如下图所示;
在Metrics里修改Y轴,聚合函数(Aggregation)选择Average,计算平均数,聚合字段(Field)选择responsetime
字段,意思是将这一字段求平均值;
在Custom Label里填写平均响应时间
,可选,不过标示出来更明了;
选择好后,点击Run
按钮,得到下图:
从图上看我们接口的性能还可以是吧,其实并不是,衡量一个接口的性能不能只从平均响应时间来看,还要看整体的响应时间,比如有部分的接口响应时间会很长,但平均却很小,所以我们还要对有可能很大的单次响应时间进行统计。
增加999Line的响应时间统计
999line的意思是:所有响应时间按从小到大排序,在99.9%的位置上,这个响应时间的值是多少,也就是我们99.9%的接口响应时间都低于这个值,现在我们把这个值的曲线加到上图中:
增加一个Metrics,也就是加一个独立的Y轴数据
聚合函数选择计算百分位数(Percentiles)
选择字段responsetime
,删除多余的百分位栏,剩下一个把百分位改成99.9
点击run
按钮生成如下图表:
可见999line的响应时间都在350ms左右,此时看图表下方,显示的时间间隔是30分钟,这样的粒度下会隐藏很多较大数字,我们可以择选按分钟间隔显示,在X轴的配置上的Minimum interval
里选择Minute
,以分钟为间隔时间,得到下图,曲线变化的更激烈了一些:
我们看到因为时间跨度的关系,不能显示分钟级别的数据,Kibana会合并数据,取10分钟一段的999Line的响应时间。