监控与故障管理(1)
一般有追求的软件公司在业务范围、或团队规模扩大后都会引入所谓的监控系统,用于监控已有系统的运行状态,以支撑各种问题的预测与定位。在web服务领域中,APM(应用性能分析)的使用或者DevOps方式运作已经相当普遍了,例如阿里有鹰眼系统用于支撑其支付淘宝业务,腾讯有bugly支撑微信及各种手游。 谷歌总结其DevOps的实践经验整理成SRE运维解密(2012)。同年,gartner将APM作为一个技术热点详细分析了其商业模型。如今(201
一般有追求的软件公司在业务范围、或团队规模扩大后都会引入所谓的监控系统,用于监控已有系统的运行状态,以支撑各种问题的预测与定位。在web服务领域中,APM(应用性能分析)的使用或者DevOps方式运作已经相当普遍了,例如阿里有鹰眼系统用于支撑其支付淘宝业务,腾讯有bugly支撑微信及各种手游。 谷歌总结其DevOps的实践经验整理成SRE运维解密(2012)。同年,gartner将APM作为一个技术热点详细分析了其商业模型。如今(201
APM: 国内:阿里:https://help.aliyun.com/document_detail/87906.html?spm=a2c4g.11186623.6.545.154a7d17zjSNFA腾讯:https://bugly.qq.com/v2/report百度:https://cloud.baidu.com/product/apm.html网易:http://apm.netease.com/携程:https://zhuanl
libbacktrace初始提交-https://android-review.googlesource.com/c/platform/system/core/+/66528debuggerd替换libbacktrace-https://android-review.googlesource.com/c/platform/system/core/+/66946rewrite libbacktrace in cpphttps://andr
AndroidAndroid 基于linux内核,使用 signal机制监听异常发生。值得一提的是,android 在自定义的libc库中(bionic)的linker初始化中会将debuggerd handler注册为默认的signal handler Kernel (linux)在cpu运行时发生错误,linux为这类错误注册了默认的异常处理程序,异常处理程序将执行:1.保存大部分寄存器的内容2.使用高级的C函数处理异常(向异常调用
通用这里所描述的都指的是用户态的crash,kernel的crash的处理方式略有区别。本文只是简述crash信息保存的流程。 在linux系统上,应用异常是通过信号从内核通知上来的,在用户态注册的信号处理函数能够保存一些信息,在信号处理函数运行完成之后,kernel可能会进行一些core dump,这取决于配置。 当用户态crash时,信号传递给预先注册的signal handler,这时crash尚处于active状态,signal
前面已经介绍了statsd的接口以及调用流程,本篇介绍接口自动生成的代码。 ###StatsLogInternalframework/base/core仓中的StatsLogInternal.java会被编译到framework.jar中,因而会在编译该jar包前生成。查看framework/base/Android.bp 1234567891011121314java_library { name: "fra
前面一部分已经介绍了statsd上报使用的两个接口Java侧使用StatsLogNative侧使用android::util::stats_write最终都通过sock写入statsd中,下面将先介绍statsd的daemon部分的结构,随后介绍事件的管理。 statsd位于frameworks/base/cmds/statsd路径下其目录结构:123456789101112131415161718statsd----benchmark
android系统中有很多不同功能的日志,如dumpsys dumpstate。anr以及crash时候也有单点的日志。然而,一些系统的问题,如性能功耗以及稳定性问题是由于不明确的单点的缺陷或者故障扩散导致的。仅靠最后问题发生时的日志有时难以定位问题,还有一些问题,例如黑屏,原因有很多种,所以能否将可能相关的事件汇聚到一处,做数据分析也会方便一些。大概基于这种目的,android p版本中新增一种日志上报方式,接口位于:1android
稳定 顾名思义 指的是系统以及应用正常工作的状态,但由于各种原因系统或者应用工作在不正常的状态,例如应用卡顿,闪退,系统卡死黑屏乃至重启。关于稳定性工作,一般也就分成两个方面 1.定位增强–如何能够尽快正向解决问题 2.容错恢复设计–在问题发生时如何能尽量减少异常的时间这两个方面在原生系统(谷歌aosp)中已经有着不少体现。并且这两个方面应该说是相辅相成的。如在应用anr时会有anr日志,同时提示用户等待或者停止应用,再如w
Problems to be solved Who maintains the ledger of transactions? Who has authority over which transactions are valid? Who creates new bitcoins? General Distributed consensusThere are n nodes that each have an input value