当前位置:网站首页>I've been rejected by the product manager. Why don't you know
I've been rejected by the product manager. Why don't you know
2020-11-06 01:18:00 【Yin Jihuan】
Preface
A few days ago, I was chatting with readers , He said he was rejected by the product manager . The reason is online Bug 了 , Finally, it's the feedback from customers that we know .
I asked him : Are you not monitoring ?
readers : We are a newly established entrepreneurial team , The most important thing at the moment is the heap function , A lot of infrastructure doesn't have time to do .
How big a bowl is, how much rice do you eat , Don't blindly pursue large scale , That's a great plan , Just the right one . So is monitoring , Small plans as long as they're enough , Can solve problems , It's also a very good choice .
Let's introduce some common abnormal monitoring methods :
Cost minimization
If it's a newly established entrepreneurial team , We can use the minimum implementation cost to monitor the system exception in real time . The so-called minimum implementation cost , It can be implemented without relying on any three-party framework .
It can be used to manually bury the point to alarm the abnormality , In this way, it is better to alarm at the place of global exception handling , Can be managed in a unified way .
As the code shows :
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResponseData<Object> defaultErrorHandler(HttpServletRequest req, Exception e) {
// Record exceptions
// Pin or SMS alert
}
When we have global exception handling in our project , When the bottom reports an error , All exceptions will enter ExceptionHandler To deal with , stay ExceptionHandler We can pass HttpServletRequest To get the response request information and exception information , And then give an alarm .
Abnormal alarm information
Abnormal alarm information must be detailed , When something goes wrong on the line , The first time to fix this problem . If you don't have detailed information, you can't reproduce the problem at all , It's not easy to locate and solve .
Alarm information needs to have the following content :
Alarm service :mobile-gateway
person in charge :yinjihuan
Request address :http://xxx.com/xxx/xxx?id=xxx
Request body :{ "name": "xxx" }
Request header :key=value
Abnormal code :500
Exception types :RuntimeException
Exception stack :java.lang.RuntimeException: com.xxx.exception.ApplicationException: obtain XXX Information failed !
The most important thing is the request parameters , Errors can only be reproduced with parameters . What needs to be noticed is through HttpServletRequest An error will be reported when getting the request body , Because the stream can only be read once .
By the time the global exception handling class has been read , So we need to do something special , Write a filter to cache the value of the request body , Sure org.springframework.web.util.ContentCachingRequestWrapper Yes HttpServletRequest Decorate , And then through ContentCachingRequestWrapper Get request body .
Cost minimization + Give consideration to performance
The method of manual burying point can give real-time alarm to the abnormality , And then directly send SMS and other warning information , This process is synchronous , More or less increases the response time , However, if the request enters the exception handling area, it proves that the request has failed , The impact is not big .
Although the impact is not big , But you can still optimize it a little bit . The most common optimization method is to convert synchronous operation to asynchronous operation , For example, it is dropped into a separate thread pool for alarm , Put it in the memory queue , Use a single thread to get the alarm .
Local asynchrony may be lost , There are a few problems with this type of monitoring information loss , If you don't want to lose , An external message queue can be used to store alarm information , There are individual consumers who consume , Alarm operation .
Unified log monitoring
Ways to minimize costs , Just a few dozen lines of code can do it . The bad thing is that every project has to have this code , The alarm logic is also coupled in the code ..
what EFK,ELK I believe everyone has heard of , Collect the logs in a unified way , centralized management . Each system needs to write exception information to the local log when there is an error , There is no need to separately alert the exception , The alarm action can be done by a separate alarm system , The alarm system judges according to the collected logs , Whether an alarm is needed , Alarm frequency, etc .
Unified log monitoring needs to build a log platform , The cost is relatively high . Of course, you can also use open source solutions , There are also commercial solutions .
Business can use cloud services , Easy to use , Fast access , Support alarm rules of various dimensions , It's just a little expensive .
If you just want to monitor exceptions , I recommend an open source error tracking system ,Sentry Is an open source real-time error tracking system , It can help developers monitor and fix abnormal problems in real time , Of course Sentry There's also a commercial version .
APM monitor
apm(Application Performance Management) In addition to the call chain to the service , Performance is monitored in detail , At the same time, it also has better monitoring of abnormal information .
common apm Yes skywalking,pinpoint,cat etc. , With cat For example ,problem The report shows the error information of the application , And in cat The home page of the market will show the error of each application by minute , If there are a lot of mistakes , The color of the big plate is red , When you see a piece of red , There are too many exceptions .
Of course cat It also has alarm function , It is unrealistic to see the market by artificial timing , When there is a mistake , It's the timely warning that makes sense . Want to know more about cat You can take a look at my article :https://mp.weixin.qq.com/s/3mqmySr2nv4Xpd6nZlfsVg
summary
Do a minimum cost anomaly monitoring , It is estimated that it will be finished in one day . If you don't do , Then we can only wait for being rejected . You can't control it bug Next to impossible , If it's a program, there's bound to be bug. All we need to do is go out bug The first time I found this bug, And destroy it .
It's not easy to code words , If you can, let's have a triple shot , thank !
About author : Yin Jihuan , Simple technology enthusiasts ,《Spring Cloud Microservices - Full stack technology and case analysis 》, 《Spring Cloud Microservices introduction Actual combat and advanced 》 author , official account Ape world Originator .
I have compiled a complete set of learning materials , Those who are interested can search through wechat 「 Ape world 」, Reply key 「 Learning materials 」 Get what I've sorted out Spring Cloud,Spring Cloud Alibaba,Sharding-JDBC Sub database and sub table , Task scheduling framework XXL-JOB,MongoDB, Reptiles and other related information .
版权声明
本文为[Yin Jihuan]所创,转载请带上原文链接,感谢
边栏推荐
- 事半功倍:在没有机柜的情况下实现自动化
- Aprelu: cross border application, adaptive relu | IEEE tie 2020 for machine fault detection
- PN8162 20W PD快充芯片,PD快充充电器方案
- Listening to silent words: hand in hand teaching you sign language recognition with modelarts
- 2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
- Analysis of ThreadLocal principle
- 采购供应商系统是什么?采购供应商管理平台解决方案
- After reading this article, I understand a lot of webpack scaffolding
- 网络安全工程师演示:原来***是这样获取你的计算机管理员权限的!【维持】
- 你的财务报告该换个高级的套路了——财务分析驾驶舱
猜你喜欢
Not long after graduation, he earned 20000 yuan from private work!
Use of vuepress
大数据应用的重要性体现在方方面面
Just now, I popularized two unique skills of login to Xuemei
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
快快使用ModelArts,零基础小白也能玩转AI!
如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
使用 Iceberg on Kubernetes 打造新一代云原生数据湖
ES6学习笔记(五):轻松了解ES6的内置扩展对象
前端都应懂的入门基础-github基础
随机推荐
TRON智能钱包PHP开发包【零TRX归集】
EOS创始人BM: UE,UBI,URI有什么区别?
Troubleshooting and summary of JVM Metaspace memory overflow
DevOps是什么
深度揭祕垃圾回收底層,這次讓你徹底弄懂她
CCR炒币机器人:“比特币”数字货币的大佬,你不得不了解的知识
Synchronous configuration from git to consult with git 2consul
Filecoin的经济模型与未来价值是如何支撑FIL币价格破千的
数据产品不就是报表吗?大错特错!这分类里有大学问
Python自动化测试学习哪些知识?
ipfs正舵者Filecoin落地正当时 FIL币价格破千来了
After brushing leetcode's linked list topic, I found a secret!
Elasticsearch database | elasticsearch-7.5.0 application construction
Examples of unconventional aggregation
有关PDF417条码码制的结构介绍
Do not understand UML class diagram? Take a look at this edition of rural love class diagram, a learn!
Technical director, to just graduated programmers a word - do a good job in small things, can achieve great things
C++和C++程序员快要被市场淘汰了
容联完成1.25亿美元F轮融资
Network security engineer Demo: the original * * is to get your computer administrator rights! 【***】