我们日常生产环境反馈有问题的做法一般都是直接在线上 debug,比如直接在线上修改代码打日志等。。 因为我们使用的是 PHP,其优点在这里就可以凸显出,那就是可以随时修改代码随时看效果,所以我们都是在线上改代码打日志。。。但我觉得这样子不是正常的做法。。
不知道有没有什么样的系统性方案。。来应对这么些问题:
所以不知道大家都是怎么做的?难道是应用中日志埋点做满,但平常不输出和采集,只有出问题时,通过修改日志采集配置再进行日志采集?比较困惑
|      1superrichman      2020-06-22 16:03:49 +08:00 via iPhone 生产环境 debug ?居然没有被运维打死? | 
|  |      2evill      2020-06-22 16:04:27 +08:00 日志级别 + 日志调用链路 + requestID | 
|      3yukinomiu      2020-06-22 16:07:25 +08:00 生成环境 debug 这个需求本身已经不优雅了. | 
|  |      4Vegetable      2020-06-22 16:09:52 +08:00 只在生产环境出现的问题真的有这么多吗?标准操作就是日志拉满,非生产环境复现问题。 日志是定时切分压缩或清理的,叫 rotation,应用层系统层都可以实现,占不了多少地方。你分布式之后会涉及到日志收集。 你欠缺可能是一个 stage 环境 | 
|      5xhcnb      2020-06-22 16:10:55 +08:00 哈哈, 没有经历过生活的毒打 | 
|      6lff0305      2020-06-22 16:21:00 +08:00 把 PROD 的 request 镜像到你的调试机上 需要 IT 配合 | 
|      7vitoliu      2020-06-22 16:28:09 +08:00 核心功能打好 request 和 response,公司如果有流量回放的中间件可以用上,如果没有可以用 arthas 或者去哪儿的 bistoury | 
|  |      8lower      2020-06-22 16:30:00 +08:00 果然 PHP 才是世界上最好的编程语言 | 
|  |      9asanelder      2020-06-22 16:34:50 +08:00 俺说下自己的看法 1. 首先这个问题只能在生产环境复现,那么,这种问题就应该是一种少有的情况(如果你的项目大部分问题都是在生产环境复现,你应该考虑是不是项目本身出什么问题了)。既然是一种少有的情况,就特殊对待即可,而看样子,楼主想使用一种通用的方案,俺觉得企图使用通用优雅的方案来解决少有的情况是不合适的。 2. 即然楼主可以在生产环境复现,那么将服务部署到一台生产环境的机器,让它不对接上流的流量,然后楼主不是能复现么,直接在这台机器上复现,debug 即可。 3. 当然,在生产环境 debug 时,要留意这个过程中产生的数据,是不是进入了生产环境。避免数据污染。 4. 最后说一句,以上仅仅是下下策,只有在其它环境实在搞不定的情况下,才使用,使用的时候要万分小心,考虑周到(主要是数据污染问题)!!! | 
|  |      10opengps      2020-06-22 16:39:38 +08:00 业务规模小的时候都是生产直接调试,我就不像那些大公司的大佬们那样打击楼主了    我从零到一,从一到百万负载,确实是意识到了这个过程的重要性,小公司刚起步就那么规范的话,估计活不过几年,所以在线 debug 几乎属于必然,但是我建议楼主千万注意备份,我也经历过数据库误操作丢失一个备注列的情况,以至于客服部门不敢再使用我提供的备注列寸信息了 | 
|  |      11guanhui07      2020-06-22 16:54:17 +08:00 测试环境 复现是最好,生产环境日志 | 
|  |      12luxinfl      2020-06-22 17:29:32 +08:00 改生产环境代码 debug ?想都不敢想 | 
|      13useben      2020-06-22 18:14:04 +08:00 elk 日志系统+p 指标监控系统... | 
|  |      14smallpython      2020-06-22 18:23:51 +08:00 gdb 是不是可以调试 php | 
|  |      15kop1989      2020-06-22 18:25:48 +08:00 如果是一个未知原因的小概率出现的问题,也就是加日志了,然后通过日志去揣测问题本质,然后再在测试环境尝试复现。 | 
|      16hankai17      2020-06-22 19:21:28 +08:00 gdb -p 加一堆断点 | 
|  |      17JuSH      2020-06-22 19:24:52 +08:00 我们公司产品测试环节等同于无,客户遇到问题后,研发直接远程到客户服务器替换组件上生成日志分析原因。后面嫌临时替换文件太麻烦,直接做成产品功能。 | 
|  |      18zhuzhibin      2020-06-22 19:53:47 +08:00 via iPhone Yii debug | 
|      19ben1024      2020-06-22 19:54:15 +08:00 | 
|      20darknoll      2020-06-22 20:07:41 +08:00 via Android 生产环境 de 啥 bug | 
|  |      21fhsan      2020-06-22 20:17:46 +08:00 elk 吧,别搞了 | 
|      22oneoy      2020-06-22 22:30:10 +08:00 via Android idea 支持的  谷歌下就可以  我目前在用 | 
|  |      23sadfQED2      2020-06-23 09:18:20 +08:00 via Android 哈哈哈,我也经常在生产环境 debug 啊,在我个人博客项目里面 | 
|  |      24ifconfig      2020-06-23 09:21:50 +08:00 1 、该问题只在生产环境中出现,若要复现只能在线上做调试: 你说的应该就是 Sentry,可以在 Sentry 配置各种环境, 报错会提示相关环境、第几行代码 2 、在线上修改代码就不止修改一份代码了 这些不是都可以通过 Git 分支加 webhook 解决么 | 
|  |      25avenger      2020-06-23 10:11:03 +08:00 多打日志吧,再加一个预发布 staging 环境,日志记录推荐一下 papertrailapp 带尾巴链接 URL: https://papertrailapp.com/?thank=48e610 | 
|  |      26dandankele OP @Vegetable 好吧,就是觉得一些地方做日志,平时基本没啥问题,但日志大量被产生,收集的贼多,感觉像是在浪费磁盘。。 | 
|  |      27dandankele OP @useben 这些都有,但日志没做满,一些问题出现在没做日志的地方,但不出问题的话感觉这些日志太占空间了。。 | 
|  |      28dandankele OP @ben1024 看起来不错,回头我研究一下 | 
|  |      29weixiangzhe      2020-06-23 17:59:14 +08:00 本地开个 http 代理,whistle 挺好用的,代理到本地也可以 |