当前位置:网站首页>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)@ResponseBodypublic 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-gatewayperson in charge :yinjihuanRequest address :http://xxx.com/xxx/xxx?id=xxxRequest body :{ "name": "xxx" }Request header :key=valueAbnormal code :500Exception types :RuntimeExceptionException 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]所创,转载请带上原文链接,感谢
边栏推荐
- High availability cluster deployment of jumpserver: (6) deployment of SSH agent module Koko and implementation of system service management
- Face to face Manual Chapter 16: explanation and implementation of fair lock of code peasant association lock and reentrantlock
- 阿里云Q2营收破纪录背后,云的打开方式正在重塑
- Just now, I popularized two unique skills of login to Xuemei
- How to select the evaluation index of classification model
- 中小微企业选择共享办公室怎么样?
- Using consult to realize service discovery: instance ID customization
- 助力金融科技创新发展,ATFX走在行业最前列
- A debate on whether flv should support hevc
- Installing the consult cluster
猜你喜欢

Filecoin的经济模型与未来价值是如何支撑FIL币价格破千的

DevOps是什么

PHP应用对接Justswap专用开发包【JustSwap.PHP】

I'm afraid that the spread sequence calculation of arbitrage strategy is not as simple as you think

Troubleshooting and summary of JVM Metaspace memory overflow

嘘!异步事件这样用真的好么?

Flink的DataSource三部曲之二:内置connector

Filecoin最新动态 完成重大升级 已实现四大项目进展!

CCR炒币机器人:“比特币”数字货币的大佬,你不得不了解的知识

加速「全民直播」洪流,如何攻克延时、卡顿、高并发难题?
随机推荐
Group count - word length
Python自动化测试学习哪些知识?
钻石标准--Diamond Standard
Analysis of react high order components
How to select the evaluation index of classification model
(2)ASP.NET Core3.1 Ocelot路由
Didi elasticsearch cluster cross version upgrade and platform reconfiguration
TRON智能钱包PHP开发包【零TRX归集】
快快使用ModelArts,零基礎小白也能玩轉AI!
50 + open source projects are officially assembled, and millions of developers are voting
Cos start source code and creator
C++和C++程序员快要被市场淘汰了
High availability cluster deployment of jumpserver: (6) deployment of SSH agent module Koko and implementation of system service management
Tool class under JUC package, its name is locksupport! Did you make it?
100元扫货阿里云是怎样的体验?
至联云分享:IPFS/Filecoin值不值得投资?
Synchronous configuration from git to consult with git 2consul
Character string and memory operation function in C language
业内首发车道级导航背后——详解高精定位技术演进与场景应用
GUI 引擎评价指标