加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

定心丸之无监控的系统就是半废

发布时间:2022-05-30 08:41:18 所属栏目:安全 来源:互联网
导读:比如我们对于我们开出去的接口,所依赖调用别人的二方三方服务,究竟是怎样的表现,如果没有监控告警体系,那我们基本就是乱猜。比如,没有客诉,那么大概系统运行得还不错吧。这太瞎扯了,作为一个合格的工程师不允许这种情况出现。 有了监控,我们随时都可
         比如我们对于我们开出去的接口,所依赖调用别人的二方三方服务,究竟是怎样的表现,如果没有监控告警体系,那我们基本就是乱猜。比如,没有客诉,那么大概系统运行得还不错吧。这太瞎扯了,作为一个合格的工程师不允许这种情况出现。
 
         有了监控,我们随时都可以对我们的系统有一个比较全面的了解,以及有一个比较全面的把控。有了告警,遇到问题我们可以第一时间感知,也可以第一时间介入。这些事情我们需要去解,各个公司各个平台的技术实力和经济实力都不同,所以解决方案也差别比较大。这些可能都是我们开发人员需要花时间额外去做的,无论是一次性的营销方案,还是长期运行的系统,都需要准备监控告警方案。用钱换时间,以及用时间换钱,这就是我们需要权衡的东西。当然,准备方案基本都是一致的,在这里我先只聊接口层面的监控。其他的关于数据库、JVM、消息队列、分布式缓存、tomcat 线程、主机CPU磁盘网络等,均不在此次讨论范围,这些需要更高层面的聚合服务来实现监控,监控逻辑几乎都是一致的。
 
         监控告警五部曲
 
         想要做到统一监控,不外乎做到下面这么几件事情,但是每一件事都很难很重要。
 
1. 全链路调用唯一ID
 
2. 标准化日志
 
3. 打点方案
 
4. 监控大盘
 
5. 告警方案
 
1. 全链路调用唯一ID
 
全链路调用使用唯一ID,这是一个比较有价值的事情,可以用来判断某个调用链的调用过程是怎样的,能够在排查问题的追溯过程确保追溯流程的准确性。比如我们有5个系统,如果我们没有了这个唯一ID,在跨越五个系统的时候我们必然只能靠时间、订单、人 等业务维度来确定调用链路。只有两个字,低效。
 
正确的解决方式,就是在开始调用的时候生成一个几乎全局唯一的ID,然后在调用的过程中不断地传递给下游和分支,然后让下游再链式地传递给下游。
 
比如在 Java 中的处理方案。所有的接口入参都增加一个 traceId,然后放到 ThreadLocal 中,方便在任何地方进行打点。
 
2.  打点方案
 
标准化返回值
 
其中最核心的就是 ,具体可以参照下 大蕉蕉的三道 Java 私房菜 No.131 中的 ResultExecutor + ResultDTO 组合,核心就是标准化所有的出参,以便可以标准化进行 AOP 打印日志,核心值就是 succ 和 code。经过了标准化返回值之后,我们就可以针对返回值进行打点了,这就到了第二步。
 
AOP 切面
 
我们会使用切面的方式来进行日志打点,比如提供的服务接口调用前后,调用数据库的调用前后,调用公共缓存服务前后,调用消息中间件前后。如果是 Java 的话,建议使用 AspectJAroundAdvice,这样可以增加统计 rt (响应时间)。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!