2014 Hpocon 黄慧攀 upyun - 平台架构的服务监控
-
Upload
michael-zhang -
Category
Internet
-
view
261 -
download
10
description
Transcript of 2014 Hpocon 黄慧攀 upyun - 平台架构的服务监控
一般情况做什么监控?
硬件监控
• 网络带宽
• 磁盘状态
• 内存状态
• 系统负载
• …
软件性能监控
• Nginx 连接数、吞吐量
• MySQL 连接数、吞吐量
• …
不足之处
• 仅提供数值输出,被动依赖监控服务来获取数据
• 监控埋点成本高
• 实时性差
• 无法反馈应用服务的状态信息
ActionMoni 狗眼
UPYUN 的服务监控系统
特性
• 支持TCP/UDP/HTTP/WebSocket接口
• 支持counter和average操作
• 支持历史数据持久化存储
• 每秒可提供超10万个操作
• 实时查询接口
• 提供多个语言的Client(TCP/UDP)
怎么做服务监控?
一个上传图片并缩小存储的服务
• 客户端发起 PUT 请求
1. API 服务接受请求,并获取文件内容
2. API 连接 MySQL,审核是否合法请求,和对应的账号
3. 根据请求的具体要求,连接做图服务集群,进行图片缩小操作
4. 连接存储集群,存入缩小后的图片
5. 给客户端返回结果
• 1~5 是整个文件上传业务的总耗时
• 2、3、4 分别是MySQL、做图服务和存储服务的耗时
• 1~5 的耗时 = 2+3+4
监控哪些东西?
1. 某个服务、子服务的 qps 并发数的高低直接影响服务稳定性。假设做图服务集群的处理能力是 1000/qps ,那如果当前监测到的值大于800/qps 就要考虑扩容
2. 某个服务的平均处理耗时 平均处理耗时可以直接反馈出该服务是否正常,和处理性能如何。假设我们的MySQL查询服务正常情况应该在50ms以内,那如果当前监测到的值大于100ms,就得检查MySQL服务出什么问题了
main{ t = time(); job start; st1 = time(); subjob start; … subjob end; actionmoni.set(SUB_KEY1, time() - st1); st2 = time(); subjob start; … subjob end; actionmoni.set(SUB_KEY2, time() - st2); job end; actionmoni.set(KEY, time() - t); }
埋点粒度尽量细致
才能更清晰的反馈出整个平台的问题
UPYUN 的服务监控
CDN 性能监控
API 性能监控
_CDN_DQ DNS解析耗时(ms) _API_U 上传耗时(ms) _CDN_D 下载耗时(ms) -QN 竞争对手
Q & A @oneoo
UPYUN 联盟 https://www.upyun.com/union.html