开发者学堂课程【Elasticsearch 实战进阶营:课时3: 实操讲解:微服务运行异常告警(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/899/detail/14320
课时3: 实操讲解:微服务运行异常告警(二)
3、APM 异常
比如我们选着的是 service01 这个服务,在过去十五分钟,假设这个服务消耗的时间的0.1毫秒,服务超过一秒钟需要告警,该怎么做呢?
方法是一摸一样的,首先我们先打开微服务地址(countèsumèOF select a fieldèsummary.down),这个服务访问的时间很长.在选中 GROUPED OVER 这个,在选中 all 下的 all documents,很快就会捕捉到。
它是基于 api 来捕捉的,刚刚触发的时候超过10秒,很显然这中肯定是要报警的。
它属于典型的服务异常,服务的超时异常。上面那个是服务运行状态异常,而这个是服务运行性能异常,我们基于这个来做一个告警。
微服务的监控有好几个:有的是微服务的 error,出现错误的异常;一个是 trysketion 的一个异常,它主要是在 span 里面。
我们可以来查一下,查询的数据根据 service name =service01,来按照时间来排序,也就是最新的数据,可以看到一个消耗时间 span,超过了微秒纳秒,换算可以去查一下。
在 idea 重新启动项目,在到网页里面去刷新一下网页。
比如我们的这个服务超过了一百万,也算我们的这个服务出现了异常了,基于这个来做一个告警,更具这个时间异常来创建一个,过去一分钟间隔来统计,主要统计的是它的最大的值(时间),根据自己的需求来拿,注意要拿最大的,间隔十五秒来刷新。
选着 span duwietion error 超过多少,值很大超过这个值。当超过这个值的时候出现了异常报警,触发报警的时候选着一个 weikebaok(图形如下)
在表达式里面提取最大值,如果这个条件超过了这个值,同时转换一下,然发送一个请求,告诉服务器。
可以把服务的接口或者名称发一个报警(图形如下),可以从上下文里面,把字段;
比如:service02 这个字段,把这个服务拉进去,把这个信息传到服务里面,也可以把这个 api 的接口也传进去,span 的信息特别多,可以在之后的学习的时候进行学习。
讲 api 的深入学习。
GET apm-7.7.1-error/_search
GET apm-7.7.1-transaction/_searchGET apm-7.7.1-span/_search
{
"query": {"term"": {
" service.name":d
"value": "serficee1"
}
sort": [{
"@timestamp": {"arder": "desc"}
]]
GET apm-7.7.l-metric/_search
apm-7.7.1-profile/ search
创建告警的方法都是一样的,日志异常比较简单,我们也是只做了一些常规的异常,日志采集这些,方法都是一样的。
它的运行效果(如下图):
二、总结
总共有四次:
讲 harbit 微服务线上运行情况,可以监控到作用服务器的运行状况,而且非常的便捷;即使你的服务增加,但是对它都是没有太多的影响的。
这里只是展示搭建了六个,要是搭建一百个、两百个,只要配置一个简单的 herbit 都可以进行下去。
文本日志,我们是基于 file bit 来采集的,在 logs 里面它默认的时候也会收集进来;
如果我们的 file bit 创建可以看见一个实时流的, 相对可以持续的刷新,非常的方便,相当于大屏。
可以抓取任何的日志,建议大家抓取的时候用 json 的格式,这样抓取下来的数据对代码影响较小,代码是一样的进行。
包括中间使用的 kafuka 提取数据的时候都是一样的。所以不建议使用这种格式,阅读性是可以的,实用性太复杂了。
Apm,我们去抓取的时候要部署 apm service,我们在每一个的微服务里面把参数加进去,我们通过 javaajingt 采集,服务名字;
然后把这个地址 apmagint 定义好命名空间 pakging 名字,然后这个工作就完成了,非常的简单,它自己会去扫描这些 api 的框架,o代码这种。
创建了告警的方式,我们都可以创建,基于已有的内容,相当于我们把运行状态、日志、apm 一网打尽了,构成了基本的微服务体系。