当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- Microservices: how to solve the problem of link tracing
- 带你学习ES5中新增的方法
- 前端都应懂的入门基础-github基础
- 采购供应商系统是什么?采购供应商管理平台解决方案
- 教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
- 华为云“四个可靠”的方法论
- Can't be asked again! Reentrantlock source code, drawing a look together!
- “颜值经济”的野望:华熙生物净利率六连降,收购案遭上交所问询
- 嘘!异步事件这样用真的好么?
- 怎么理解Python迭代器与生成器?
猜你喜欢
How long does it take you to work out an object-oriented programming interview question from Ali school?
Can't be asked again! Reentrantlock source code, drawing a look together!
ES6学习笔记(五):轻松了解ES6的内置扩展对象
Grouping operation aligned with specified datum
git rebase的時候捅婁子了,怎麼辦?線上等……
DevOps是什么
PLC模拟量输入和数字量输入是什么
(1) ASP.NET Introduction to core3.1 Ocelot
助力金融科技创新发展,ATFX走在行业最前列
DRF JWT authentication module and self customization
随机推荐
业内首发车道级导航背后——详解高精定位技术演进与场景应用
git rebase的時候捅婁子了,怎麼辦?線上等……
Want to do read-write separation, give you some small experience
Keyboard entry lottery random draw
C++和C++程序员快要被市场淘汰了
After reading this article, I understand a lot of webpack scaffolding
Subordination judgment in structured data
Skywalking series blog 2-skywalking using
(2)ASP.NET Core3.1 Ocelot路由
This article will introduce you to jest unit test
Don't go! Here is a note: picture and text to explain AQS, let's have a look at the source code of AQS (long text)
Flink on paasta: yelp's new stream processing platform running on kubernetes
How to get started with new HTML5 (2)
Working principle of gradient descent algorithm in machine learning
条码生成软件如何隐藏部分条码文字
基於MVC的RESTFul風格API實戰
Flink的DataSource三部曲之二:内置connector
PHPSHE 短信插件说明
Programmer introspection checklist
Not long after graduation, he earned 20000 yuan from private work!