当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- Troubleshooting and summary of JVM Metaspace memory overflow
- 阿里云Q2营收破纪录背后,云的打开方式正在重塑
- html
- 深度揭祕垃圾回收底層,這次讓你徹底弄懂她
- Leetcode's ransom letter
- Synchronous configuration from git to consult with git 2consul
- CCR炒币机器人:“比特币”数字货币的大佬,你不得不了解的知识
- How to demote a domain controller in Windows Server 2012 and later
- 合约交易系统开发|智能合约交易平台搭建
- Filecoin的经济模型与未来价值是如何支撑FIL币价格破千的
猜你喜欢
ES6学习笔记(五):轻松了解ES6的内置扩展对象
DRF JWT authentication module and self customization
带你学习ES5中新增的方法
Subordination judgment in structured data
Jmeter——ForEach Controller&Loop Controller
快快使用ModelArts,零基礎小白也能玩轉AI!
中国提出的AI方法影响越来越大,天大等从大量文献中挖掘AI发展规律
hadoop 命令总结
数字城市响应相关国家政策大力发展数字孪生平台的建设
Tool class under JUC package, its name is locksupport! Did you make it?
随机推荐
网络安全工程师演示:原来***是这样获取你的计算机管理员权限的!【维持】
Not long after graduation, he earned 20000 yuan from private work!
Leetcode's ransom letter
如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
從小公司進入大廠,我都做對了哪些事?
Top 10 best big data analysis tools in 2020
一时技痒,撸了个动态线程池,源码放Github了
加速「全民直播」洪流,如何攻克延时、卡顿、高并发难题?
Examples of unconventional aggregation
Character string and memory operation function in C language
Save the file directly to Google drive and download it back ten times faster
Basic principle and application of iptables
Flink的DataSource三部曲之二:内置connector
大数据应用的重要性体现在方方面面
使用 Iceberg on Kubernetes 打造新一代云原生数据湖
WeihanLi.Npoi 1.11.0/1.12.0 Release Notes
Just now, I popularized two unique skills of login to Xuemei
怎么理解Python迭代器与生成器?
熬夜总结了报表自动化、数据可视化和挖掘的要点,和你想的不一样
Did you blog today?