监控宝 way to explore https:https://cdn.v2ex.com/navatar/92fb/0c6d/851_normal.png?m=1481004064 https:https://cdn.v2ex.com/navatar/92fb/0c6d/851_large.png?m=1481004064 2023-07-17T19:20:15Z Copyright © 2010-2018, V2EX 100-300 元之间有哪些户外监控推荐? tag:www.v2ex.com,2023-07-17:/t/957434 2023-07-17T07:49:20Z 2023-07-17T19:20:15Z ximenchuixue1 member/ximenchuixue1
之前用的乐橙( IMOU ) TS2F-4M 400 万,现在 200 多,也凑合用,在想有没有更高清一点的呢,夜间,白天,录像。

感谢各位热心网友的
回复。 ]]>
算命的应该已经开始使用人脸识别了吧。 tag:www.v2ex.com,2021-05-16:/t/777320 2021-05-16T23:52:14Z 2021-05-17T02:32:24Z walkbox member/walkbox K8s 监控是真的难做呀,感觉没有啥头绪 tag:www.v2ex.com,2019-01-03:/t/523601 2019-01-03T11:54:01Z 2019-01-03T18:24:42Z a663 member/a663 单纯的做节点和 pod 的基础监控没啥问题 可以到中间件,每一个应用服务就开始头大了 然后后面我还想做业务监控,报警等等 以及日志埋点做业务统计这些 真是整个人头都大了

]]>
求问国内第三方监控平台有哪些? tag:www.v2ex.com,2018-03-15:/t/438336 2018-03-15T06:54:28Z 2018-03-15T08:52:19Z acerest member/acerest 国外的很多,已经看了很多家了。 但是国内的,除了监控宝还有那些平台提供监控服务呢?效果如何? 麻烦知道的大神指个道儿。

]]>
想给家里整套监控 tag:www.v2ex.com,2018-01-22:/t/424943 2018-01-22T07:41:16Z 2018-01-22T09:23:35Z snoopy4444cn member/snoopy4444cn 不太懂,请推荐个技术比较前沿和高端的学习地方

]]>
有奖体验 赢畅销书|体验透视宝业务监控 一眼定位业务故障 tag:www.v2ex.com,2016-12-16:/t/328032 2016-12-16T03:13:15Z 2016-12-16T03:10:15Z cloudwise member/cloudwise 埋头苦找。。。



福利来啦~
透视宝业务监控,一眼定位业务故障。现在申请,还能得畅享书(限 12 本)。



活动时间: 2016 年 12 月 16 日- 2016 年 12 月 23 日
申请地址: http://cloudwise.mikecrm.com/M9FuX9




基于全局业务拓扑的问题发现
自动发现业务系统的全局应用拓扑,快速定位影响业务运行的应用性能问题和具有潜在风险的技术栈,支持钻取。



分布式业务系统的单次交易跟踪
追踪每笔交易的完整 IT 链路,根据调用时间序列采集全部交易环节的服务性能数据,实现按服务深入追踪交易性能问题



业务性能的主动感知与秒级告警
针对关键交易的性能指标,设定告警阈值,主动发现性能问题并进行告警消息的即时推送与协同事件处理



业务质量评估及业务 SLA 保障
以量化手段对服务质量进行评估,建立 SKPI 评价体系确保业务 SLA 高可用



立即体验,赢畅销书籍: http://cloudwise.mikecrm.com/M9FuX9 ]]> [重磅新品]自动发现业务拓扑,精准定位根源问题 tag:www.v2ex.com,2016-12-13:/t/327231 2016-12-13T02:01:56Z 2016-12-13T01:58:56Z cloudwise member/cloudwise 你永远无法从杂乱无章的关系中,快速找到解决问题的关键环节。一张清晰、准确的业务拓扑图是 IT 工作的开端,试想一下这样的情景: 企业上新系统,跨应用系统之间的数据如何准确追踪? 人工画图永远无法快速、准确的获取 IT 系统拓扑结构,如何快速的了解其 IT 架构? 随着微服务架构的流行,基于业务领域的 IT 部署需求明显,传统企业架构如何转型?

透视宝业务拓扑分析

以业务系统的构建和问题分析为导向,能自动将原有离散的应用、前端、后台任务、数据库及基础设施,整合呈现为符合业务逻辑、清晰严谨的业务系统架构。通过业务系统拓扑图的性能分析,帮助您分析系统各个组件的性能问题。

申请体验地址: http://cloudwise.mikecrm.com/M9FuX9

全局掌控业务运行状态

透视宝业务拓扑分析,帮助您从整个业务流程的角度,来考虑系统架构、资源维护、性能监控与优化等。从全局掌握企业中所有业务的运行状态、业务间的调用关系及资源调用情况等。

自动发现业务逻辑

透视宝业务拓扑分析创造性的实现业务逻辑关系的自动发现。既能智能的发现业务与业务、业务与资源依赖、业务与组件调用的关系,以及各业务互调的性能问题。为业务建立全过程快照,可详细查看各组件的当前性能状态,快速发现影响性能的业务和最慢的组件,挖掘性能消耗的热点。

故障快速定位

通过查看所有业务和资源的全局拓扑结构,快速定位运行过慢和出错的应用,并通过资源调用了解资源使用情况。

业务状态层层深入分析

点击业务可以查看当前时间段内的详细情况,包括:概览、应用、事务( TOP10 )、数据库、调用者和主机等情况。并且在每一栏信息展示中,都可以点击进入相应的性能情况的详情页面,便捷的对业务状态进行深度分析。 点击拓扑中的数据库或者第三方 API ,可以查看在该业务系统中数据库的性能情况和第三方 API 被调用的情况。

想快速看清你的业务? 快来体验吧: http://cloudwise.mikecrm.com/M9FuX9

]]>
邀请体验|从业务拓扑图开始 搞定业务运维 tag:www.v2ex.com,2016-12-12:/t/327058 2016-12-12T07:02:21Z 2016-12-12T06:59:21Z cloudwise member/cloudwise
企业上新系统,跨应用系统之间的数据如何准确追踪?
人工画图永远无法快速、准确的获取 IT 系统拓扑结构,如何快速的了解其 IT 架构?
随着微服务架构的流行,基于业务领域的 IT 部署需求明显,传统企业架构如何转型?

透视宝业务拓扑分析
以业务系统的构建和问题分析为导向,能自动将原有离散的应用、前端、后台任务、数据库及基础设施,整合呈现为符合业务逻辑、清晰严谨的业务系统架构。通过业务系统拓扑图的性能分析,帮助您分析系统各个组件的性能问题。



申请体验地址: http://cloudwise.mikecrm.com/M9FuX9


全局掌控业务运行状态
透视宝业务拓扑分析,帮助您从整个业务流程的角度,来考虑系统架构、资源维护、性能监控与优化等。从全局掌握企业中所有业务的运行状态、业务间的调用关系及资源调用情况等。




自动发现业务逻辑
透视宝业务拓扑分析创造性的实现业务逻辑关系的自动发现。既能智能的发现业务与业务、业务与资源依赖、业务与组件调用的关系,以及各业务互调的性能问题。为业务建立全过程快照,可详细查看各组件的当前性能状态,快速发现影响性能的业务和最慢的组件,挖掘性能消耗的热点。



故障快速定位
通过查看所有业务和资源的全局拓扑结构,快速定位运行过慢和出错的应用,并通过资源调用了解资源使用情况。


业务状态层层深入分析
点击业务可以查看当前时间段内的详细情况,包括:概览、应用、事务( TOP10 )、数据库、调用者和主机等情况。并且在每一栏信息展示中,都可以点击进入相应的性能情况的详情页面,便捷的对业务状态进行深度分析。
点击拓扑中的数据库或者第三方 API ,可以查看在该业务系统中数据库的性能情况和第三方 API 被调用的情况。





想快速看清你的业务?快来体验吧: http://cloudwise.mikecrm.com/M9FuX9 ]]>
游戏平台运维自动化扩展之故障自愈 tag:www.v2ex.com,2016-11-22:/t/322314 2016-11-22T03:45:18Z 2016-11-22T03:42:18Z cloudwise member/cloudwise 马辰龙,负责某大型网页游戏平台的运维开发,专注于运维自动化、监控系统故障自愈研究,擅长 Perl 开发、正则表达式、日志精确匹配。

网络游戏是对用户体验要求最严苛的 IT 行业之一,任何 IT 问题造成的业务不稳定,都可能导致玩家的流失,进而影响游戏商的营收。因此,自动化运维对于游戏平台的重要不言而喻,各种 DevOps 产品和自动化运维技术方案不断涌现,包含发布变更、容量伸缩、故障自愈等多种场景的游戏运维技术日趋成熟,这些改变都让运维工作流程越来越简化。

然而流程的简化并不意味着运维变得容易,恰恰相反随着云计算、移动互联网的广泛应用,游戏业务对运维的要求水涨船高!相比起对 IT 基础设施运维操作的需求,业务侧更需要运维提供高质量的业务保障服务,包括对业务架构及部署的持续优化,精细化的游戏健康度管理,以及快速的故障处理服务等。

以下就是由马辰龙先生为我们分享他在日常工作中总结的《游戏平台运维自动化扩展之故障自愈》:

大家好,我们用一个例子作为今天分享的开始,越来越复杂的网络问题常常会造成各种误报,导致各种误报信息的轰炸,出现报警我们一般先看报警内容,这种情况大家都遇到过吧?久而久之就造成了对告警信息的麻木。比如凌晨 2 点某机房切割网络抖动,一下过来几百条告警短信,相信大家不可能一条条的看。

首先我们要解决的是误报的问题。现在的监控软件无非就是 Zabbix 、 Nagios 或者 SmokePing 这类,还会有一些单点监控软件。如果想消除误报只有多 IDC 去部署监控服务器,搭建多节点去监控网络问题,但这就需要使用大量的服务器资源,有没有什么好的解决方案呢?而且即使我们搭建了大量的监控服务器,又怎么去集中处理告警消息呢? 经过对市面上流行的监控类产品进行广泛调研,发现云智慧的监控宝可以通过分布式监测节点,多区域同时监控服务器、网站的健康状况,同时还提供一些国外节点(我们的业务涉及海外)监测海外用户的业务访问体验,而且阈值和监控方式也可以根据业务的实际需求去自定义。

当然作为一个崇尚运维自动化的运维人员,我看中的不仅是这些,更重要的是能够 callback 告警消息。如果是因为服务器网络或者其他原因导致宕机,在收到告警消息之后,让后端系统能够根据消息去自动处理是不是会更好呢。给大家看一副图来理解下:

根据回调信息,事先将其定义成一些规则,当我们匹配到了告警信息中的特定信息可以自主切换。 监控宝的 URL 回调可以在这里设置:

运维监控的发展:

过去: Nagios 、 Cacti 、 Zabbix 监控单一,对告警后知后觉;

现在: API 监控数据聚合、告警信息收敛,自动化感知;

未来:挖掘故障信息,制定故障自愈规则,提前感知。

运维的建设有四个阶段,简称为四化建设:第一个阶段就是标准化。标准化的意思是把主机名、内网以及配置文件统一起来,如果不统一,后面的东西就无法继续。没有一个标准化的环境,脚本是无法写下去的。第二个阶段是自动化。中小型企业阶段都是自动化到平台化的过渡,平台化就是把自动化的东西分装,把功能整合,把数据做聚合,然后放在平台上来可视化。第三个阶段是平台化。以后的趋势是脚本和功能必须是外部化的,这样新来的一个人才能接手。不用在服务器上跑脚本,还要同下个人交代在哪儿装。最后一个阶段就是服务化。服务化是指现在云平台所承载的东西。举个例子,搭一个 redis 集群,用户不需要知道服务器有多少个,因为所提供的 NOSQL 服务打开后,用户就可以直接使用了。

所以我们未来要做的就是收集告警信息进行自动化处理,而不是通知运维上线处理。我们要脱离那种每天等着告警信息去处理故障,要主动出击,不要等到故障了再去处理,而且即使事后处理好了,那么时间成本也是很高的。 再举个栗子,一个网站在全国各地会解析为多个 IP ,而且还会有备用 IP 用来切换(被 DDOS 的时候, IP 被封,我们需要切换)。我们会有一个脚本去检测这些 IP 的状态,当这些 IP 正常的时候才会切换到这些 IP 上,如果 Ping 不通或者有其他故障就不会去切换,否则去切换一个故障 IP 不是没有用吗?

我们在做监控的时候需要考虑很多不可控的因素,因此在写代码的时候要首先考虑异常状态,否则会造成二次故障,这是我们不愿意看到的。当故障 IP 2 小时内不丢包,我们就把他去掉,下次切换的时候就可以用到,反之亦然。这里提示下,对于这种时间周期可以使用 redis , expire 指定 ttl 。 给大家一张图来理解下告警信息的分类:

我们要做到能自动化的尽量自动化,不能自动化的我们要让它半自动,人工介入处理是最后的方案,因为是人就会犯错,尤其在业务出现异常,操作都是不可控的。 说这么多 ,核心就是需要建立自己的消息处理中心来分析问题,充分利用告警信息,大概的模型可以是这样:

最后,故障自愈能够给我们带来什么:

1 、非工作时间运维人员处理故障以及响应时间;

2 、减少直接的线上操作、避免出现人为原因的二次故障;

3 、提高运维人员对故障原因的分析、以及工作积极性;

4 、提升运维的自身价值。

Q&A

问:如何做告警收敛?

答:比如我们以一台服务器为单位,每分钟的告警信息分为系统和网络告警,统一处理。(当然也能以收件人,业务关联为单位。)

问:对于传染型的故障,不知道有没有什么好的方案呢,就是反复访问一个问题导致骨牌性的反应。

答:比如网站报了 500 错误,那么我们发现 500 错误的时候,在告警的时候可以让它去错误日志里收集关于相同 IP 的 error ,一起发送。

问:怎么自动化的?

答:减少我们去服务器查日志的时间,频繁的 grep xxx 。

问:百度爬虫并发大没抗住,怎么自动化处理?

答:首先你是想让它爬还是不爬,不爬就匹配 useragent 。

问:你们故障自愈是哪些情况?是通过日志?还是 api url 监控?通过特定故障返回特定值??因为 java 的日志各种情况都有。

答:面对 DDOS 流量型攻击,通过分析 url 使用防火墙封禁,首先是日志。

问: DDOS 怎么分析 url ??有什么特征吗??

答: DDOS 是没有日志的,可以通过网络告警去触发, CC 攻击分析你的 URL ,规则可以自己去定义,有些注入、刷 API 等通过正则去匹配。运维人员要利用好日志,所有的问题都是从日志中分析行为发现的。

问:我们上了 ELK , Java 除了假死自动重启,好像没什么自愈的。

答: ELK 可以使用 API 拉日志,去分析业务的运行状态, ELK 的面太大,这里细节就不多说了。

]]>
不容错过 | 一大波新功能来袭 tag:www.v2ex.com,2016-11-22:/t/322286 2016-11-22T02:25:55Z 2016-11-22T02:22:55Z cloudwise member/cloudwise Word 天! Wuli 产品经理们又在搞事情了~在提升产品质量,完善用户体验的路上不断狂奔着~赶紧来看看这些你不容错过的新功能汇总吧,新鲜出炉~

监控宝

1 、企业版“报表中心”新增“数据报表”模块

数据报表可进行不同监测点的多个指标数据对比,支持折线图、柱状图、折柱混搭视图切换,数据报表可导出。目前支持 Ping 监控监测点和省份运营商两个维度的报表。

另外,企业用户的只读账户,也可设置并接收到语音告警了。网页性能管理支持国际化「繁体中文、英文」。 有海外的业务的小伙伴们不要错过哦。

透视宝

1 、新增业务系统拓扑展现

面向业务系统的构建和问题分析,能够定义面向业务系统的架构图,整合原有离散的应用、前端、后台任务、数据库及基础设施,给用户呈现业务系统的体系架构;基于业务系统拓扑图的性能分析帮助用户通过拓扑图分析系统各个组件的性能问题。

2 、应用栏目新增对比分析

应用栏目中新增对比分析:可以按应用和该应用下的事务进行不同时间维度的对比分析。统计指标为:每分钟请求数,平均响应时间,每分钟错误数,错误包含错误和异常。

另外,透视宝 javacode 请求堆栈中添加 mongodb 的数据库信息。移动应用分析新增对 wkwebview 的性能监控,可监控 WKWebview 的时间响应分解、耗时、白屏、 ajax 请求数据、 JS 错误数据等。

压测宝

集成代码追踪,支持全平台全语言的后端追踪

压测任务数据分析中能够深度集成透视宝代码追踪,支持全平台、全语言的后端代码追踪,针对压测中的性能问题进行深度分析。例如对 [失败、缓慢] 的请求做深度分析,可详细查看该请求的堆栈耗时、 SQL 执行耗时、请求参数等。

]]>
坑爹双十一零点秒杀背后的 API 性能问题初探 tag:www.v2ex.com,2016-11-22:/t/322279 2016-11-22T02:14:34Z 2016-11-22T02:11:34Z cloudwise member/cloudwise 我很喜欢吃苹果,尤其是新疆阿克苏的冰糖心,这不,快到双十一了,有个店家的优惠力度很很大: 1 份 5 斤才 79 元,第 2 份 1 元,折合 8 块钱 1 斤。所以我早早的就把苹果放进了购物车里,想着香甜的大苹果,定了闹钟,就等着凌晨支付了,。

盼望着盼望着,终于可以支付了,我愉快地拿起手机打开应用支付订单,等支付确认之后,我才发现,貌似店家没有给我优惠哦!怎么两份苹果要了 79*2=158 元呢?真郁闷,这不简直是赤果果的消费欺诈不成?所以我选择退款!必须退!结果更让人崩溃,点击退款之后系统的提示是这样的!

不得不佩服这个店家的服务,一会短信就过来了,店家抱歉说是因为系统因为访问量太大出现了故障,所以可以支付完成之后找店家补差价。哦,原来是这样!本来还以为是店家欺诈呢。

郁闷地打开朋友圈,想发发牢骚,结果看见朋友圈里中招的小伙伴相当多呢。

看了这些顿时精神一震,好歹我也是个高级运维工程师呀,还懂代码开发,就是传说中的 DevOps ,爬起来我开始分析:一般这种商品两件优惠大致有几种策略(可能还有,我买的比较少,没有看到): 1 )第 2 份 0 元,就是所谓的五折嘛! 2 )第 2 份 1 元,比五折那么一点点; 3 )第 2 份每斤 1 元; 那么在加入购物车选择结账的时候,系统发生了什么?我猜想是这样的:

按照这个流程来讲的话,就是万恶的“减免计算接口”出现了问题!估计是对应的后端服务宕机了,或者我所在的北京地区的网络出现了问题,导致在调用这个接口的时候出现了异常,不过真心佩服电商平台技术,做了很多的异常判断,明显是当“减免计算接口”出现异常的时候,系统能够继续正常执行,当然此时就第 2 份就不会优惠了。 接口很重要!接口很重要!接口很重要! 所以在系统上线前有必要对接口进行大规模并发下的压力测试,首先要保障提供接口服务的程序不掉链子,能够抗住那么多流量,其实这样还不够,因为仅仅关注后端是不够的,现在的应用架构太复杂了,网络、 CDN 等都是影响接口正常质量的很重要的因素,所以必须能够在全链路的真实环境下对系统进行压测,这样就能判断哪些地区,哪些运营商可能导致的用户不爽。 正在这时,上海同学告诉我他在凌晨正常下单支付了!好吧,这说明上海并没有受到类似不良接口的影响。 仅仅是全链路压测够不够呢?其实还不够,因为在真实环境下,各种状况层出不穷,瞬息万变,测试做的再好也只能尽可能真实的模拟未来发生的情况,但是实际上还是会有不可预想的事情发生,所以我们还需要监控!比如我就用监控宝的 API 监控把公司应用里的那么多关键接口进行了 7X24 小时的实时监控,能够通过云智慧的全球监测点对接口调用的可用性、正确性和响应时间进行实时监测,当有问题的时候第一时间获得短信或者电话语音的告警通知,经过分析快照快速定位和解决问题——这一切只要在老板知道以前处理掉,今年的优秀员工就是我啦。 最后问一句,谁认识负责“减免计算接口”服务的运维同学?我想和他聊聊去。

]]>
不容错过 | 一大波新功能来袭 tag:www.v2ex.com,2016-11-21:/t/322083 2016-11-21T06:41:08Z 2016-11-21T06:38:08Z cloudwise member/cloudwise
**监控宝**

1 、企业版“报表中心”新增“数据报表”模块

数据报表可进行不同监测点的多个指标数据对比,支持折线图、柱状图、折柱混搭视图切换,数据报表可导出。目前支持 Ping 监控监测点和省份运营商两个维度的报表。






另外,企业用户的只读账户,也可设置并接收到语音告警了。网页性能管理支持国际化「繁体中文、英文」。 有海外的业务的小伙伴们不要错过哦。




**透视宝**
1 、新增业务系统拓扑展现
面向业务系统的构建和问题分析,能够定义面向业务系统的架构图,整合原有离散的应用、前端、后台任务、数据库及基础设施,给用户呈现业务系统的体系架构;基于业务系统拓扑图的性能分析帮助用户通过拓扑图分析系统各个组件的性能问题。



2 、应用栏目新增对比分析
应用栏目中新增对比分析:可以按应用和该应用下的事务进行不同时间维度的对比分析。统计指标为:每分钟请求数,平均响应时间,每分钟错误数,错误包含错误和异常。



另外,透视宝 javacode 请求堆栈中添加 mongodb 的数据库信息。移动应用分析新增对 wkwebview 的性能监控,可监控 WKWebview 的时间响应分解、耗时、白屏、 ajax 请求数据、 JS 错误数据等。







**压测宝**
集成代码追踪,支持全平台全语言的后端追踪
压测任务数据分析中能够深度集成透视宝代码追踪,支持全平台、全语言的后端代码追踪,针对压测中的性能问题进行深度分析。例如对 [失败、缓慢] 的请求做深度分析,可详细查看该请求的堆栈耗时、 SQL 执行耗时、请求参数等。

]]>
大促之前 必先压测--压测宝助您决战双 11 tag:www.v2ex.com,2016-10-20:/t/314149 2016-10-20T07:10:59Z 2016-10-20T09:58:43Z cloudwise member/cloudwise 熬了多少个日夜的活动统终于快上线了,不知道上线后系统负载能力怎样?
亚马逊 1 秒钟的访问延迟,将带来每年 16 亿美元的巨额损失;
沃尔玛、百思买等在黑色星期五当天,曾因流量暴增 7 倍不得不关闭网站服务。

大促之前 必先压测
云智慧压测宝助您决战双 11 ,立即进行压力测试,获取专属于你的压测报告
http://yacebao.com/landingPage0815.shtml?utm_source=v2ex.shuangshiyihuodong


云智慧压测宝,性能压力测试的必备工具,基于真实业务场景与用户行为的云端压力测试。可快速发起百万并发访问,实现对全链路和全业务的压力测试。保障企业在双 11 大促之前,及时验证系统稳定性并发现问题。


全球范围快速发起百万并发:

全球多达 200+城市持续并发
任意位置浏览器创建并控制测试
洞察生产环境高并发下的性能表现




压测监控大屏 掌控全局状况:

自定义数据分析面板
全自动关联分析多项指标
实时数据分析,发现性能瓶颈



深度集成 APM 工具 实时分析应用性能:

深入分析后端应用整体性能
实时定位代码级性能瓶颈
分析硬件资源利用率指标



独特的企业私有加密压测方案:

可为高安全策略的电商网站定制压测方案,灵活配置的响应机制,可根据电商 内部的加密方式,快速为其搭建出一套符合要求的压测环境,超越传统压测方式。



快速获得压测报告:

准备测试脚本,确认压测目标
设置测试时间、并发量等任务
得到测试结果,实时查看数据




决战双 11 ,立即生成专属于你的压测报告吧~
http://yacebao.com/landingPage0815.shtml?utm_source=v2ex.shuangshiyihuodong ]]>
监控宝的销售来一发,我们谈谈企业版的 Api 功能 tag:www.v2ex.com,2016-09-10:/t/305308 2016-09-10T09:11:54Z 2016-09-10T09:08:54Z vus520 member/vus520 q13775q

]]>
B 站运维团队成长的血泪史 tag:www.v2ex.com,2016-09-05:/t/304087 2016-09-05T09:15:19Z 2016-10-23T18:00:50Z cloudwise member/cloudwise
95 后二次元新人类的追捧,让以视频弹幕、 UP 主闻名于世的 bilibili (以下简称 B 站)愈发火爆,无数年轻人通过电脑、手机、电视等终端设备在 B 站上追番、看弹幕,特别是新番上线时的访问压力是非常大的,这就给 B 站的 IT 运维团队带来了巨大压力。胡凯在去年加入 B 站刚刚成立的运维部,人少事多,遇到了很多坑。
本文根据作者在“监控与性能分享群”中的分享内容整理。

B 站运维痛点主要有 3 个:人手不足、故障多、运维系统跟不上,针对这三个痛点, B 站采用了三种方式进行破冰。



1 、解放劳动力

目前 B 站的 CDN 主要是自建的, TB 级带宽,视频存储也已达到 N 个 PB ,运维压力非常大。招人确实可以解决问题,但在上海这座魔都招聘合适的运维人员非一朝一夕能够完成的,人手不足怎么办?那就想办法把劳动力从繁杂的日常运维工作中释放出来。

由于之前没有专门的运维部门, IT 系统的权限都在开发手上,出问题了以后运维总得跟在开发后面查原因,效率低不说,沟通往往容易出现问题。
所以我们第 1 步做的就是:用 Ansible + Jenkins 搞定自动发布。 Ansible 是相对简单的批量管理工具,支持模板管理等高级功能。搞定了自动发布,开发的服务器需求已经明显下降,只要把代码提交到 Git 主干,就会自动触发发布。



Git 使用的是 GitLab ,同时为了安全我们做了一层 LDAP 代理,效果相当于“将军令”,操作机、 Git 和 Jenkins 用 OpenLDAP 做统一认证,后续用到的 Redmine 、 Grafana 、 Zabbix 等都接入了 OpenLDAP 认证,每个人都有个动态口令,每次验证都需要用到。
2 、一棒子监控告警系统
由于原始的监控不满足快速增长的业务,我们部署了开源监控系统 Zabbix ,虽然运维同事能够很好的使用 Zabbix ,但其他部门同事总觉得易用性不高、而且很多定制化监控实现起来很麻烦。



然后,我们开始折腾监控系统——“一棒子监控”,为什么这么说呢,因为要把监控细化,不是一两天的事情。而 B 站的几乎所有请求都要经过 CDN ,入口在手上,出问题想知道还难吗?于是,我们在入口处做了监控,所有 5xx 的错误都打到 ELK ,那么无论是什么业务出问题了都会及时告警,让相关人员来处理,后续再细化。
另外,要把精力投入到最重要的事情上。我们可以花很长的时间去搞好 Zabbix 、 Open-Falcon ,但结果可能是 从 80 分 到 90 分这种并不显著的效果,而很多监控并不是 Zabbix 、 Open-Falcon 擅长的,不如打个差异战。
上图中有个 StatsD 推荐给大家, StatsD 可以非常灵活的嵌入到代码里进行监控( Shell 都可以),因为使用 UDP 协议,所以服务端性能和故障不会影响到调用的程序,可以实现业务级的 QPS 、响应时间等统计类监控。
其中一个报警最终的效果如下:





B 站是自建 CDN 的,在国内有覆盖全国的好几百个 CDN 节点, CDN 的监控一直是个难点,当某 1 个链路出现问题,用传统的 Zabbix 、 Open-Falcon 监控很难发现问题。虽然我们自研了 Http-monitor 监控,可用于网站的可用性监控告警,但考虑到独立资源和数据可靠性,还有用户端网络质量的检测,还是同时使用了第三方监控宝的服务。监控宝使用简单,功能实用,监控点多,分布式监控可以及时发现网络上出现的问题,提供的快照功能可以快速定位问题和查看详细信息。而且监控宝属于第三方独立的,还能出具网站的 SLA 证书,作为 B 站内部工作考核的依据。





3 、开源系统的爱与恨



B 站技术氛围浓厚,爱开源、爱新技术,所以使用了大量的开源组件,包括 SheepDog (丢过数据)和 GlusterFS (卡成翔),其中最大的坑是 SD 卡 + Ceph 存储。 Ceph 本身的设计非常好,但是姿势不对也会死很惨。比如 B 站的某套服务器集群用 SD 卡来跑系统,结果 SD 卡跪了导致系统也跪了,所有虚拟机的磁盘 io 都卡顿甚至死机,经过不断调优终于还是稳定了。 Ceph 给我最大的安慰是:它没有丢数据,没有丢!
此外, Redis3.0 、 Codis 、 Twemproxy 等开源系统都在 B 站得到了使用,最后我们自研了 BiliTW (已开源),主要原因是 Codis 现在没更新了, Twemproxy 的性能比较差,特别是后端 Redis 多的情况下(而且它和 Redis 一样、只吃单核)。 BiliTW 最大的改进是支持多核,增加了一些易于运维的功能。
最后总结一下 B 站运维团队的成长过程:
由于人手不足,所以事情得挑着做;由于故障多,得先抓入口、抓大的;由于运维系统跟不上,得先拿开源的顶着;由于用了大量开源系统,所以踩了很多坑。



问:请问动态口令是怎么做的,自己开发还是开源 auth ?
答:用的是谷歌动态口令,开源的 Google 身份验证器。
问: Ceph 部署到线上需要什么特别的处理吗?都遇到什么问题了?
答: Ceph 要注意版本,一定要用稳定版,要用大厂用过的版本。另外 Ceph 非常耗资源, B 站全部用的 SSD , Ceph 的内部交换是独立的万兆网络。 Ceph 遇到最大的问题就是感觉 Ceph 成了分布式单点存储,都是几个节点、几个副本,大的 kvm 块存储集群有 64 节点的集群,数据 3 副本,解决起来很复杂,需要有爱研究,能看懂代码的人。
问: B 站运维团队多少人?
答:去年是从 0 开始,目前 20 多人,包含应用、研发、安全、信息等。
问: GlusterFS 这个存储用起来卡吗?
答: GlusterFS 我认为只适合做大文件的冷存储。
问:为什么不用 Docker 而用 kvm
答:我们也用 Docker , Docker 一直有关注,但实际用的人不多,能用起来的都是投了很多资源进去的大公司。在 Docker 1.9.0 开始,我们把核心 SLB 跑在 Docker 上了,用 Host 方式。今年下半年,我们的一个大目标就是 Docker 接入其它线上业务。目前使用的 Mesos Macvlan 方式已经在踩水过程中。
问: Hadoop 相关的运维需要做吗
答:大数据也做,暂无专职人员。技术研究这块由于缺少专人,我都是给每个应用运维分任务。大数据就分给了一个应用运维在搞,和开发一起学习。
问:你们服务器网卡做绑定了吗?
答:我们全部做了双网卡的绑定,万兆 bond0 。
问:故障多,这种麻烦如何快速解决?
答:这个很难,一方面需要了解业务,二方面需要有数据和手段。刚开始我们查问题非常慢,后来逐步改进,比如完善监控,加故障锚点,故障总结。最近在做 Drapper 链接追踪,好多公司也都有做,实际上就是在请求的链接各个环节加标记,然后选择性做实时分析。 Drapper 最终实现的效果就像浏览器的审查元素一样,哪里慢一下就看到了。
问: mode0 模式的话总带宽还是一个网卡的吧?我在测试 mode=4 ,结合交换机的动态聚合,遇到的问题是服务器相互传输的话,带宽是一个网卡的速度。
答: Mode 0 最好在交换机上做下配置,带宽是跑 2 张网卡的,既能冗余,也能上量。我们自建 CDN 带宽很高,单台机器带宽就按 20G 准备。在猎豹用的是 Mode4 ,也挺好的, Mode6 不需要特殊配置,但有一个方向不均衡。之前测试 Mode4 效果最好,但公司最后用了 Mode6 ,因为易维护。
关于带宽的问题,必须 2 个客户端向一个服务端同时传输才能达到双网卡带宽,以前测试 mode0 的时候遇到过跑不满的现象,后来就用了 mode6 。不过是好多年前的事情了,当时应该是 CentOS5 或 6 ,现在 B 站用的是 Debian 8 , Mode 0 并没有发现问题。
问:你们的 Redis 集群 3.0 稳定吗?
答: Redis 3.0 挺稳定的,它的 Java 客户端会好些,其它语言可能得自己开发。这边语言很多,有些业务还是用 Proxy 的方式在跑。我们正在开发一个 Cache 管理系统,最终会兼容各种方式,未来会开源。
问: BiliTW 是 https://github.com/anewhuahua/bilitw 吗?
答:不是,这个是前同事做的,是基于 Twemproxy 改的多进程版本。未来会重构一个新的,放在 https://github.com/bilibili 下面。
问: B 站的云用的多吗?
答:内部相当于是私有云了,游戏业务用公有云多些。

欢迎大家投搞: lily.qi@cloudwise.com ]]>
感受真实性能压测的“洪荒之力” 压测宝有奖体验中 tag:www.v2ex.com,2016-08-16:/t/299654 2016-08-16T07:18:09Z 2016-08-20T23:18:48Z cloudwise member/cloudwise 1 、熬了多少个日夜的系统终于快上线了,不知道上线后系统负载能力怎样?
2 、促销季到了,应用性能如何?到底能不能支持 500w 并发用户?
3 、怎么做压测才能更接近线上真实环境?

系统负载有多强,压测一下就知道。云智慧压测宝 3 步 6 分钟 开启真实用户的性能压测

8 月 16 至 9 月 2 日申请试用压测宝,感受真实压测的洪荒之力,还有机会获得优酷视频会员卡,速速来领~





参与活动赢优酷会员卡

1 、从这里申请试用压测宝: http://yacebao.com/landingPage0815.shtml?utm_source=v2ex&utm_medium=huodong&utm_campaign=v2ex.huodong.ycbshiyong


(请一定要在这个页面的表单中申请哦~)

2 、小编将在 8 月 16 日至 9 月 2 日,从申请试用压测宝的成员里随机抽取 50 名用户,赠送优酷视频 1 个月 vip 会员卡

3 、 9 月 3 日将获奖名单公布于本帖。



压测宝可以做什么

压测宝基于真实业务场景与用户行为,通过全球分布式网络发起真实压力,全面了解业务负载能力,让压测变得简单



压测宝全链路压测原理图



1 、 3 步 6 分钟,快速实现压力测试





2 、基于云的弹性伸缩架构,通过全球分布式压测点发起真实压力测试。零硬件 ,零部署,低成本。



3 、基于压测,实时分析应用性能,定位性能瓶颈



4 、大屏展示实时数据,掌握全局状况,全面了解系统能力




申请压力测试:

http://yacebao.com/landingPage0815.shtml?utm_source=v2ex&utm_medium=huodong&utm_campaign=v2ex.huodong.ycbshiyong ]]>
重磅 | 打造云端压力测试产品,准确感知性能瓶颈 tag:www.v2ex.com,2016-08-09:/t/298055 2016-08-09T03:07:18Z 2016-08-09T03:04:18Z cloudwise member/cloudwise
应用压力测试面临巨大挑战

在互联网+时代,云计算、移动互联网、物联网的蓬勃发展让虚拟化、分布式计算&存储、 SDN 、 API 等技术得到广泛普及,应用模式变得透明和庞大,部署在不同环境、调用大量第三方服务的应用性能难以通过传统压力测试工具准确测量。同时企业高速增长的互联网业务要求产品开发、迭代和交付周期越来越短,作为后端支撑的压力测试方法和工具越来越难以满足应用功能可用和容量规划预估的需求:

• 风险缺乏有效的评估手段,不确定并发负载的极限;

• 信息系统复杂度上升,性能测试成本与实施代价高;

• 业务测试环境和实际用户网络环境差距大,性能问题定位困难;

• 容量规划缺少依据,只能依赖测试者的个人经验。

云智慧压测宝准确感知性能瓶颈

压测宝是云智慧基于真实业务场景与用户行为推出的云端压力测试产品,颠覆传统压测理念和流程,遵循新一代应用性能测试领域的云压测标准体系,专为云端互联网企业的开发测试节奏与复杂度而生,只需三个步骤即可发起高达亿级 PV 的用户访问量,实现对全链路性能测试和真实业务场景压力测试。


端到端全链路压测

• 真实业务场景压力测试是以真实的用户行为、时间和规模进行建模,精准测试生产环境在压力下的性能表现,详悉各地域或链路之间性能差异,支持高达亿级 PV 用户的访问量;

• 全链路性能测试可根据业务链路的实际环节,通过网络浏览器在任意位置创建并控制测试,从世界各地的一个或多个云环境生成负载,经由标准协议指向应用程序,全球实时发起压力。

压测宝通过云端服务器产生真实分布式用户访问压力,模拟来自各地域用户接入后台所带来的真实流量,从而跳出了“温室环境”的理想状态,达到无限接近生产环境所面临的各种复杂因素,准确测试真实用户体验。



压测宝综合报表

由于采用基于 SaaS 模式的分布式部署方式,用户无需任何的硬件及带宽等资源的投入,从而大大缩短测试周期及降低测试成本。压测宝的操作流程非常简单,只需要“准备测试脚本”、“定义测试任务”、“实时分析数据”这三个步骤,即可实现传统测试方法长达 6 周的测试过程,周期缩短到 6 个小时甚至 6 分钟。


可视化压测大屏

压测过程中,压测宝提供多维度数据指标,能够自由灵活地进行多指标关联分析,而与云智慧应用性能管理产品透视宝的深度集成,帮助用户通过压测深入分析全链路性能状况,快速进行后端问题快照及代码详情跟踪,定位代码级性能瓶颈,同时通过可视化数据大屏实时展示和分析性能数据,实现现场纠错。

压测宝提供丰富的扩展接口,能够与企业现有测试工具 Jenkins 等紧密集成,将压测任务以服务的方式进行驱动执行,实现面向产品全生命周期的持续交付和持续集成。此外,云智慧组建的性能测试领域专家团队,依托压测与性能管理平台为用户提供专业的咨询服务,并出具公立的第三方压测报告,确保应用的上线质量。

]]>
互联网金融网站性能排行榜 tag:www.v2ex.com,2016-08-05:/t/297309 2016-08-05T03:11:25Z 2016-08-05T03:08:25Z cloudwise member/cloudwise
而与此同时,互联网金融市场和用户规模在稳步增长, CNNIC 发布第 38 次《中国互联网络发展状况统计报告》数据显示,截至 2016 年 6 月,我国购买互联网理财产品的网民规模达到 1.01 亿,较 2015 年底增加用户 1113 万人,网民使用率为 14.3%,较 2015 年底增加 1.3 个百分点。互联网理财市场历经几年的快速发展,理财产品日益增多,用户体验持续提升,网民在线上理财的习惯初步养成,搜易贷等多家平台成交量突破百亿元,大平台的厮杀拉开帷幕,布局消费金融或转型为金融科技公司的消息不绝于耳。

对于广大投资者来说,网贷风控管理与资金存管等政策的出台和落地虽然为资金安全提供了有效保障,但毕竟是普通人很难清晰了解的。所以作为互金平台入口的网站和移动 APP 的稳定性和高可用,成为互联网金融机构服务可靠性的重要考量标准。试想一下,当投资者访问互金平台网站时,出现长达数十分钟甚至数小时无法打开、无法登录或数据报错等故障,会给公司业务和品牌造成多大的负面影响。尤其很多互金平台的投资者之间都是互相熟识的,而互联网的口碑传播速度和影响力远超过去,一次小小的疏漏很可能给互联网金融企业带来非常严重的损失。



数据来源:网贷之家 [详见: http://www.wdzj.com/pingji.html ]

云智慧作为业内最专业的业务性能监控、管理和测试服务提供商,根据网贷之家研究院发布的 2016 年 6 月网贷平台发展指数评级,遴选了 30 余家排名靠前的网贷平台,利用遍布全国的分布式监测网络,对各平台网站的网站可用率和平均响应时间等指标进行了为期一周的 7x24 连续监控,得到如下数据。




从数据中我们可以看出,差不多 90%的网贷平台的网站可用率都达到了 100%,首页的各地平均打开时间在 1000ms 以内,也就是说各地投资者在任何时间访问这些网贷平台都能顺利而快速的打开网站页面。网贷平台排名三甲的陆金所、宜人贷、点融网的网站可用率均为 100%,同时响应时间在 500ms 以内,用户体验的优秀程度与其行业排名相匹配。排名第四的人人贷网站的平均响应时间超过 1000ms ,主要是陕西地区监测点的访问速度在超过 2000ms ,对整体数据表现造成影响,该地访问速度在今天已经得到优化。













本次监控期间数据表现不佳的惠人贷,其网站可用率仅为 94.15%,首页平均打开时间为 1316.85 ms ,通过查看详细监控数据发现,在 7 月 28 日凌晨 3 点~9 点和上午 10 点~下午 1 点期间共 9 个小时,惠人贷的网站无法访问,可能是系统升级等原因造成的,这时候只要提前做好客户告知和安抚工作,就不会对业务有太大影响,而网站访问慢主要是辽宁、上海、湖北、陕西等地的响应时间过长造成的,建议惠人贷对上述地区进行 CDN 优化。当然,有些网贷机构如果是为特定地区投资者服务的,那么只要做好目标地区的网站优化工作即可。

云智慧作为国内领先的业务运维服务提供商,为互联网金融企业提供基于用户行为的端到端全栈性能问题定位、基于全球分布式网络的用户体验主动感知、基于云端压力测试平台的业务容量规划,能够帮助企业建立以用户体验为核心,以业务价值为导向的业务运维大数据分析平台。通过对企业业务系统、支撑系统和管理系统的业务流程的梳理,把业务数据和反映前端用户体验的 IT 性能数据利用大数据技术进行采集、整理和关联分析,实时映射到全局业务拓扑图上,借助数据可视化工具呈现出来,从而帮助管理者在纷繁复杂的业务数据和 IT 性能数据中找到业务规划和企业发展的方向,实现应用性能的持续提升和业务的高速增长。

]]>
来一场说聊就聊的压测分享 tag:www.v2ex.com,2016-08-02:/t/296533 2016-08-02T04:07:01Z 2016-08-02T04:04:01Z cloudwise member/cloudwise 性能测试中如何设计真实的负载呢?
移动应用压力测试如何模拟那么大的并发量?
如果您有以上疑问,
那就来一场说聊就聊的压测分享吧~

云智慧压测宝诚邀您参与线上交流“实战解析|如何发起真实用户行为的压力测试 ”。
基于真实业务场景与用户行为,通过全球分布式网络发起真实压力,全面了解业务负载能力,让压测变得简单~


时间
8 月 16 日、 17 日 晚 8:00

讲师一:
陆兴海( Yak )
西北工业大学信息化技术专业硕士。多年软件产品开发、设计经验,致力于面向大数据的 IT 系统监控软件以及应用性能管理( APM )平台的设计与开发。关注互联网、云计算、大数据,并专注于产品设计。




讲师二:
刘建坡( Jeff )
吉林大学计算机科学与技术专业,多年软件设计,开发,实施经验。一直基于 java 架构和开发,目前致力于云压测,大数据产品的架构和开发。

讨论话题

1.真实用户的压测实践
2.如何基于压测做应用性能分析
3.基于真实用户的压测是如何实现的
4.压测宝基础架构分享

*主持人说,现场还有小礼品哦!

报名地址: http://www.yacebao.com/landingPage.shtml?utm_source=v2ex&utm_medium=huodong&utm_campaign=v2ex.ycb.huodong ]]>
选择合适的监控指标 确保跨境电商网站业务稳步增长 tag:www.v2ex.com,2016-08-01:/t/296365 2016-08-01T07:25:37Z 2016-08-01T07:22:37Z cloudwise member/cloudwise Crazysales 是一家典型的跨境电商企业, 不仅是 eBay 等大型电商平台上的大卖家,同时拥有多个自营电商平台,在中国也有多个品牌在运营,为广大用户提供完整的网购服务。

欢迎大家投稿: lily.qi@cloudwise.com
联系 QQ : 614117760

跨境电商经历 2014~2015 年的爆发式增长已经进入成熟发展阶段,据统计, 2015 年年底我国海淘市场规模达到 2400 亿元,同比增长 60%,海淘人数达到 2400 万人,预计在 2018 年,市场规模将达万亿级别。早期政策和人口红利带来的诸多利好因素逐渐成为过去,随着各大综合型电商纷纷布局海淘市场,以及大量个性化、差异化海淘网站的上线,如今的跨境电商已经成为竞争激烈的红海市场,电商企业要在激烈的竞争中确保业务稳定增长,必须对作为业务支撑的网站和 APP 性能进行准确的监控,选择合适的关键业务监控指标尤为重要。

跨境电商企业从资本积累到高速发展,再到业务扩张,网站(系统)对于 IT 技术架构的要求会根据业务变化不停地变化。在整个过程中,监控的内容和指标类型是基本不变的,变的只是数字。众所周知,对外网站的访问量是衡量网站的重要指标之一,它在系统后面的反映就是压力,是处理各个级别访问量的能力。一般细分出来有: 1. 磁盘 I/O ; 2. 内存使用量; 3. 内外网络的带宽; 4. CPU 使用率; 5. 数据库的 Select QPS 等。

根据我们的经验,当系统架构由三台或以上的独立服务器协助完成的时候,需要在内部对每台服务器以上几个指标进行监控,这样才能让我们及时发现瓶颈,优化性能时才会更有重点和高效。如何使用这些监控指标呢?

结合我们跨境电商企业的网站特点,网站一开始对数据库的依赖大的特征做一个简单分析:数据库(MySQL) 在从一个库到多个库的发展过程中,时常会变成整个系统最大的瓶颈,每当网站访问量提高 10%, MySQL 的 CPU 使用波动和输出网络带宽就会出现很大的增长,如果后台系统同时对数据库进行读写操作时,更容易导致前台网页出现 500 错误。在架构壮大之前,导致的原因往往是 MySQL 出现大量(查询时间长)的 Select 操作后,引起数据库进行表级别的 Lock(MyISAM 引擎的特征)所导致的。

这又引出一个疑问了,在这么多的系统和代码中,怎么样发现这类问题,并进行优化呢?通过对监控数据长时间的观察, CPU 的波动一般都是正常的,它成为瓶颈的机率很少,除非程序出现死循环。现代的磁盘性能已经很高了, I/O 性能在使用 HA 架构后,会根据 I/O 指标来决定增加磁盘(无缝完成),所以 I/O 也不会是瓶颈。如果项目管理到位,内存使用是严格控制的,需要大量内存消耗的功能,必须要向架构师申请,不允许私自写大数据到内存。最后,内外网络的带宽的变化是最大的,最容易反应各个系统运行情况的一个指标,当有一定历史监控数据之后,更容易发现整个系统架构的性能瓶颈。

例如某次,通过云智慧监控宝发现网页的响应时间比平常多出 5 倍,工程师迅速对数据库和各个独立系统的监控数据进行分析,发现如下情况:



图一



图二
经过两张图的对比,发现一台服务器的进来的网络流量(图一, Incoming network traffic)变化正是另外一台服务器出去的网络流量(图二, Outgoing network traffic)变化一致,范围缩小,我们的内部监控是针对每个功能节点的,而刚好这个 Outgoing network traffic 正是数据库出去的流量,可以肯定另外一台服务器(图一)提取了不应该的数据了(在访问量不变的情况下,对比了历史监控数据,没有发现以前有这么多数据流动)。范围进一步缩小,很快定位问题在这个功能点,接下来就是针对性地进行程序或系统的优化了。这是监控宝通过监控响应时间的变化,从而发现问题的实例。

监控宝对跨境电商还有另外一个重要作用,就是准确感知海外服务器的网络状况,通过监控宝部署在不同国家的监控点对网站运行状态进行观察,很容易区分是外部网络故障还是内部系统故障。



图三
如上图,我们的网站服务器是星状部署模型, 有一个中心数据(系统)源,而监控宝在各国国家都有落地的监控点,所以我们利用这个特性,在监控宝创建了一个直接指向我们中央服务器的监控项目,让它收集从不同的地方的到我们中央服务器的监控数据,汇总到如下图:



图四
这里每一条线代表中央服务器对不同国家的响应时间,蓝色箭头这里(5 月 15 日),加拿大响应时间超过 2000ms ,而其它国家回来的数据是正常(1000ms 左右)。这说明加拿大到我们的中央服务器链路有问题。红色箭头( 7 月 3 日) 情况看到是所有国家的响应时间都很高(接近 3000ms ),说明我们的数据源服务器内部出现问题了,我们的工程师翻查内部系统日志,也印证了这一个结论。

以上是根据我们的架构特性积累的经验,并不一定适合每家跨境电商,正如本文开头提到的,每家公司的发展阶段不同,可投入的 IT 资源不同,遇到的问题和解决方案当然也有差异。这就要求 IT 部门熟悉掌握技术架构的同时,对企业的具体业务模式有深入的了解,通过细致的数据观察和分析,才能找到业务增长的主要监控指标和辅助指标,让网站技术和公司业务一起稳步增长。

]]>
Hadoop 大数据生态系统及常用组件简介 tag:www.v2ex.com,2016-07-28:/t/295547 2016-07-28T08:15:53Z 2016-07-28T10:12:53Z cloudwise member/cloudwise
什么是大数据

什么是大数据,多大算大, 100G 算大么?如果是用来存储 1080P 的高清电影,也就是几部影片的容量。但是如果 100G 都是文本数据,比如云智慧透视宝后端 kafka 里的数据,抽取一条 mobileTopic 的数据如下: [ 107 , 5505323054626937 ,局域网,局域网, unknown , 0 , 0 , 09f26f4fd5c9d757b9a3095607f8e1a27fe421c9 , 1468900733003 ] ,这种数据 100G 能有多少条,我们可想而知。



数据之所以为大,不但是因为数据量的巨大,同时各种渠道产生的数据既有 IT 系统生成的标准数据,还有大量多媒体类的非标准数据,数据类型多种多样,而且大量无用数据充斥其间,给数据的真实性带来很大影响,此外很多数据必须实时处理才最有价值。

一般数据量大(多)或者业务复杂的时候,常规技术无法及时、高效处理如此大量的数据,这时候可以使用 Hadoop ,它是由 Apache 基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,编写和运行分布式应用充分利用集群处理大规模数据。 Hadoop 可以构建在廉价的机器上,比如我们淘汰的 PC Server 或者租用的云主机都可以拿来用。

今天,云智慧的李林同学就为大家介绍一下 Hadoop 生态圈一些常用的组件。
Gartner 的一项研究表明, 2015 年, 65%的分析应用程序和先进分析工具都将基于 Hadoop 平台,作为主流大数据处理技术, Hadoop 具有以下特性:

方便: Hadoop 运行在由一般商用机器构成的大型集群上,或者云计算服务上

健壮: Hadoop 致力于在一般商用硬件上运行,其架构假设硬件会频繁失效, Hadoop 可以从容地处理大多数此类故障。

可扩展: Hadoop 通过增加集群节点,可以线性地扩展以处理更大的数据集。

目前应用 Hadoop 最多的领域有:

1) 搜索引擎, Doug Cutting 设计 Hadoop 的初衷,就是为了针对大规模的网页快速建立索引。
2) 大数据存储,利用 Hadoop 的分布式存储能力,例如数据备份、数据仓库等。
3) 大数据处理,利用 Hadoop 的分布式处理能力,例如数据挖掘、数据分析等。

Hadoop 生态系统与基础组件

Hadoop2.0 的时候引入了 HA(高可用)与 YARN(资源调度),这是与 1.0 的最大差别。 Hadoop 主要由 3 部分组成: Mapreduce 编程模型, HDFS 分布式文件存储,与 YARN 。



上图是 Hadoop 的生态系统,最下面一层是作为数据存储的 HDFS ,其他组件都是在 HDFS 的基础上组合或者使用的。 HDFS 具有高容错性、适合批处理、适合大数据处理、可构建在廉价机器上等优点,缺点是低延迟数据访问、小文件存取、并发写入、文件随机修改。

Hadoop MapReduce 是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上 TB 级别的海量数据集。这个定义里面有几个关键词:软件框架、并行处理、可靠且容错、大规模集群、海量数据集就是 MapReduce 的特色。



MapReduce 经典代码(wordCount)

上面这段代码就是接收一堆文本数据,统计这些文本数据中每个单词出现的次数。 MapReduce 也是一个计算模型,当数据量很大时,比如 10 个 G ,它可以把这 10G 的数据分成 10 块,分发到 10 个节点去执行,然后再汇总,这就是并行计算,计算速度比你一台机器计算要快的多。

HBase

Hadoop 的主要组件介绍完毕,现在看下 HBase ,它是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用 Hbase 技术可在廉价 PC Server 上搭建大规模结构化存储集群。 HBase 是 Google Bigtable 的开源实现,与 Google Bigtable 利用 GFS 作为其文件存储系统类似, HBase 利用 Hadoop HDFS 作为其文件存储系统; Google 运行 MapReduce 来处理 Bigtable 中的海量数据, HBase 同样利用 Hadoop MapReduce 来处理 HBase 中的海量数据; Google Bigtable 利用 Chubby 作为协同服务, HBase 利用 Zookeeper 作为对应。

有人问 HBase 和 HDFS 是啥关系, HBase 是利用 HDFS 的存储的,就像 MySQL 和磁盘, MySQL 是应用,磁盘是具体存储介质。 HDFS 因为自身的特性,不适合随机查找,对更新操作不太友好,比如百度网盘就是拿 HDFS 构建的,它支持上传和删除,但不会让用户直接在网盘上修改某个文件的内容。

HBase 的表有以下特点:

1 ) 大:一个表可以有上亿行,上百万列。
2 ) 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
3 ) 稀疏:对于为空( NULL )的列,并不占用存储空间,因此,表可以设计的非常稀疏。
HBase 提供的访问方式有命令行 shell 方式, java API(最高效和常用的), Thrift Gateway 支持 C++, PHP , Python 等多种语言。

HBase 的使用场景:

需对数据进行随机读操作或者随机写操作;
大数据上高并发操作,比如每秒对 PB 级数据进行上千次操作;
读写访问均是非常简单的操作,比如历史记录,历史订单查询,三大运营商的流量通话清单的查询。



HBase 在淘宝的应用场景

Hive

之前我们说了 MapReduce 计算模型,但是只有懂 Java 的才能撸代码干这个事,不懂 Java 的想用 Hadoop 的计算模型是不是就没法搞了呢?比如 HDFS 里的海量数据,数据分析师想弄点数据出来,咋办?所以就要用到 Hive ,它提供了 SQL 式的访问方式供人使用。

Hive 是由 Facebook 开源, 最初用于解决海量结构化的日志数据统计问题的 ETL(Extraction-Transformation-Loading) 工具, Hive 是构建在 Hadoop 上的数据仓库平台,设计目标是可以用传统 SQL 操作 Hadoop 上的数据,让熟悉 SQL 编程的人员也能拥抱 Hadoop (注意。是数据仓库。不是数据库啊。)

使用 HQL 作为查询接口
使用 HDFS 作为底层存储
使用 MapReduce 作为执行层
所以说 Hive 就是基于 Hadoop 的一个数据仓库工具,是为简化 MapReduce 编程而生的,非常适合数据仓库的统计分析,通过解析 SQL 转化成 MapReduce ,组成一个 DAG(有向无环图)来执行。

Flume

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、 聚合和传输的系统, Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时, Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

当前 Flume 有两个版本 Flume 0.9X 版本的统称 Flume-og , Flume1.X 版本的统称 Flume-ng ,由于 Flume-ng 经过重大重构,与 Flume-og 有很大不同,使用时请注意区分。



Flume 就是一个数据管道,支持很多源(source), sink(目标),和透视宝的 suro 很像,比如拉取 nginx 日志可以拿这个工具简单一配就可用。当然每台 nginx 服务器上都要配置并启动一个 flume.
下面给大家看看配置文件(把 kafka 的数据写入 hdfs 的配置),配置很简单.完全免去了自己写一个 kafka 的 consumer 再调用 hdfs 的 API 写数据的工作量.



YARN

YARN 是 Hadoop 2.0 中的资源管理系统,它的基本设计思想是将 MRv1 中的 JobTracker 拆分成了两个独立的服务:一个全局的资源调度器 ResourceManager 和每个应用程序特有的应用程序管理器 ApplicationMaster ,该调度器是一个 "纯调度器",不再参与任何与具体应用程序逻辑相关的工作,而仅根据各个应用程序的资源需求进行分配,资源分配的单位用一个资源抽象概念 "Container" 来表示, Container 封装了内存和 CPU 。此外,调度器是一个可插拔的组件,用户可根据自己的需求设计新的调度器, YARN 自身提供了 Fair Scheduler 和 Capacity Scheduler 。
应用程序管理器负责管理整个系统中所有应用程序,包括应用程序的提交、与调度器协商资源以启动 ApplicationMaster 、监控 ApplicationMaster 运行状态并在失败时重新启动等。

Ambari

Ambari 是一个集群的安装和管理工具,云智慧之前用的是 Apache 的 Hadoop ,运维同学用源码包安装,一个个配置文件去改,再分发到各个节点,中间哪一步搞错了,整个集群就启动不起来。所以有几个厂商提供 Hadoop 的这种安装和管理平台,主要是 CDH 和 HDP ,国内的很多人都用 CDH 的,它是 Cloudera 公司的,如果用它的管理界面安装,集群节点超过一定数量就要收费了。

Ambari 是 Apache 的顶级开源项目,可以免费使用,现在用的人也很多。 Ambari 使用 Ganglia 收集度量指标,用 Nagios 支持系统报警,当需要引起管理员的关注时(比如,节点停机或磁盘剩余空间不足等问题),系统将向其发送邮件。

ZooKeeper

随着计算节点的增多,集群成员需要彼此同步并了解去哪里访问服务和如何配置, ZooKeeper 正是为此而生的。 ZooKeeper 顾名思义就是动物园管理员,它是用来管大象(Hadoop) 、蜜蜂(Hive) 和 小猪(Pig) 的管理员, Apache Hbase 和 Apache Solr 以及 LinkedIn sensei 等项目中都采用到了 Zookeeper 。 ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,以 Fast Paxos 算法为基础实现同步服务,配置维护和命名服务等分布式应用。

其他组件

以上介绍的都是 Hadoop 用来计算和查询的比较常用和主流的组件,上面那副生态图中的其他几个组件简单了解一下就好:

Pig 是一种编程语言,它简化了 Hadoop 常见的工作任务, Pig 为大型数据集处理提供了更高层次的抽象,与 MapReduce 相比, Pig 提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。
Mahout 是 Hadoop 提供做机器学习用的,支持的算法也比较少,但是一些常用的 k-means 聚类、分类还是有的,他是用 MapReduce 做的,但是 MapReduce 不太擅长这个东西,所以 Mahout 的作者也转投 spark ML 阵营了。
Sqoop 是数据库 ETL 工具,用于将关系型数据库的数据导入到 Hadoop 及其相关的系统中,如 Hive 和 HBase 。 Sqoop 的核心设计思想是利用 MapReduce 加快数据传输速度,也就是说 Sqoop 的导入和导出功能是通过 MapReduce 作业实现的,所以它是一种批处理方式进行数据传输,难以实现实时数据的导入和导出。比如云智慧监控宝以前的业务数据都存在 MySQL ,随着数据量越来越大,要把数据导到 Hbase ,就可以拿 Sqoop 直接操作。
本文所介绍的东西都是用于离线计算的,而之前发布的《面临大数据挑战 透视宝如何使用 Druid 实现数据聚合》则是关于实时计算的框架 Druid 的。大数据常用的流计算框架主要有 Storm , Spark Streaming , Flink , Flink 虽然是 2014 年加入 Hadoop 的,但至今在生产环境上用的人还不多,似乎大家都持观望态度。
说一下流计算(Druid , Spark Streaming)和批处理(MapReduce , Hive)有啥区别,比如电商网站的个性化广告投放,当我们访问了亚马逊搜索笔记本电脑之后,他就会给你推荐很多笔记本电脑链接,你的请求和兴趣爱好被亚马逊服务器实时接收,流计算分析之后当时就会推荐给你可能会购买的东西。如果这个东西拿批处理去做,服务端收集完了,过半个小时才算出你可能要买电脑,这时候再给你推荐电脑明显就不合适了,因为这时候你可能在搜索电炒锅……


最后再说一下大数据的工作流,比如有两个 MapReduce 的任务是有依赖的,必须第一个完成了才能执行第二个,这就需要一个调度工具来调度。 MapReduce 也提供调度的 API ,但是代码要写很多,上面的代码截图只是一部分,这个依赖我写了大概 150 行。所以这时候出现了工作流,用工作流来管理我们的各个 job ,我目前知道的有 oozie 和 azkaban , oozie 的配置比较灵活,推荐大家使用。

]]>
Google 对象描述语言 Jsonnet 应用经验谈 tag:www.v2ex.com,2016-07-25:/t/294793 2016-07-25T08:20:59Z 2016-07-25T08:17:59Z cloudwise member/cloudwise
JSON 的应用场景和缺陷
为什么要用 Jsonnet 取代 JSON 呢,就要从 JSON 的功能说起了。 JSON (Javascript Object Notation)是一种轻量级的数据交换格式,是基于 ECMAScript 的一个子集,采用完全独立于语言的文本格式,同时也使用了类似于 C 语言家族的习惯(包括 C 、 C++、 C#、 Java 、 Javascript 、 Perl 、 Python 等),由于 JSON 在各语言间支持友好、可读性强、数据性能上相比 xml 有很大优势,所以使 JSON 成为理想的数据交换语言。
JSON 的使用场景主要有三类:
Web 工程师最为熟悉的服务端和 Javascript 的数据交换,常见 ajax ;
各语言之间的数据交换,通常以 Webservice 的形式出现,常见的范式如 jsonrpc, 和 restful ;
应用的配置文件,很多应用采用 json 作为配置文件,比如前端 bower.-> bower.json. node.js 的包管理器 package.json , PHP 的包管理器 composer.json 。
但是在用 JSON 做数据交换和配置文件时, 也会遇到很多问题:
不能加注释;
对象或数组最后一项后面不能有逗号;
不支持变量、函数;
不能用算术和逻辑运算;
不能划分,不能复用,各个 json 文件之间彼此孤立;
语法有些时候不太友好;
key 必须要加双引号;
value 是字符串时,不能用单引号。
JSONNET 的优势和应用
JSONNET 的一些特性间接弥补了 JSON 的先天不足:
key 的双引号不是必须的;
对象和数组最后一个属性后面可以有逗号;
支持单行或多行注释;

引用
self: 当前对象
$:根对象

操作数据,支持常用的算术与逻辑运算符
+: 数组(拼接)、字符串(连结)、对象(溶化)

数组和对象深入

模块化
项目配置文件过大或数据文件过大,需要拆分,通过 import 引入

函数与变量

面向对象--继承
{supper2} + {supper1} + {self}

通过上面特性,我们可以发现 JSONNET 使 JSON 拥有了语言的特性:
优点
有注释,和后端开发协商接口很方便,模拟数据的文件可以直接作为接口文档
制造模拟数据更加高效自然
数据文件的可以切分和复用
缺点
Web 场景下不能作为直接的数据交换格式
学术型代码, 比较小众
使用场景不多
标准库不够完善,存留的 issue 较多
比如排序问题
不支持 IO 操作,不具备替代脚本语言的可能性
使 JSON 变得更为复杂
JSONNET 提供内置的标准库(官网地址: http://jsonnet.org/docs/stdlib.html ),包括了一系列对象,字符串, BASE64 的标准库,大家有兴趣可以自行下载。
目前 JSONNET 的主要应用场景还是用来组织和生成 JSON 数据:
有生成大批量 JSON 文件的需求
作为 JSON 的模板引擎
接口测试中模拟数据接口,通过 JSONNET 文件生成动态的 JSON 数据
JSONNET 在透视宝的应用场景
最后介绍一下 JSONNET 在透视宝中的应用场景,透视宝在做数据呈现时主要依赖于后端的 ElasticSearch 构建的检索服务, ElasticSearch 对外提供一组 Webservice 作为数据 API 接口,数据交换格式是 JSON 。
ElasticSearch 官方的 QUERY DSL 代码,相比透视宝实际需求的查询语法并不复杂,但是我们前端在构建这个请求时却不太方便,往往要通过拼接数组的方式将 JSON 序列化来构建这个 QUERY 。针对这种情况可以将语法抽象,用 oo 去构建这样的语法,借助 elastica ( elastic search 的一个客户端)实现。但是在代码调试中发现,为了构建一个 json 的查询,我们的程序员在这上面浪费了大量时间,因为要进行大量的语法对照翻译,既不直观,也影响效率。最后我们借助 JSONNET 生成 JSON 文件,将每个查询制作为模板固化下来,复用性大大增加,这种方法在实际工作中效率很高,更加直观:
JSON 模板引擎
透视宝前端 es query 查询
模拟数据接口,通过 JSONET 动态生成 JSON 数据
大数据场景
数据自行解释
数据压缩
注: PHP 的 JSONNET 实现是由云智慧的 Neeke 完成: http://pecl.php.net/package/jsonnet
大家可以参考源码学习一下。

]]>
十大性能监控技巧 全面提升你的应用体验 tag:www.v2ex.com,2016-07-20:/t/293693 2016-07-20T06:18:42Z 2016-07-20T06:15:42Z cloudwise member/cloudwise
因此,应用开发者和企业的 IT 运维部门不应该仅仅关注服务器、存储、网络的 IT 基础设施的运行状况,而应该花更多时间去了解终端用户的应用使用体验,并让相关业务部门及时获得相应信息,建立正确的工作流程,从而保证应用服务的高可用。下面给出 10 个应用性能监控小技巧,教你如何提升你的应用体验。



技巧 1: 确定哪些应用需要优先监控


云计算和移动办公在提升企业效率的同时,也导致企业无法对员工设备进行有效监管,应用出现无序状态。再加上各种历史遗留应用、虚拟机应用、客户关系管理系统( CRM )、人力资源系统( EHR )、定制的应用、会计软件、开发票软件、人力资源软件、邮件和协同工具等等,你的员工、合作伙伴和客户所依赖的(而且你支持的)应用越来越多。

应用就像业务的引擎,要一直保持良好、顺畅运行,那么第一步就先找出那些对业务和用户至关重要应用(例如迁移到云端的 CRM 、 ERP 、 HER 等),并进行全方位监控。



技巧 2: 确定哪些重要事务需要监控


从用户需求出发,找出重度用户(例如使用软件最频繁的人、产生最多收入的人、高层管理人员等等)的常用功能。或者从商业伙伴、管理人员和股东的角度,来确定哪些应用功能比较重要。

如果是刚刚启用的一个应用,应该有现成工作流程图,为用户记录重要的事务路径和工作流程,然后不断优化流程,将常用功能的操作步骤减到最少,这是我们第二项监控的目的。



技巧 3: 主动从终端用户的视角去监控应用


移动互联网越普及,终端用户就越没有耐心,所以我们要从用户的视角出发,连续监控每一个重要事务(或工作流程),测量每个步骤的响应时间,保证达到用户服务水平协议( SLA )的要求。

据 Forrester Research 统计, 35%的用户投诉都是因为应用缓慢,我们要改变这一现状,就必须先于用户感知应用体验,利用主动监控及时发现问题,找出解决性能瓶颈、错误的方法。



技巧 4: 谨慎对待监控频率和告警策略


理论上说,重要事务的监控频率越高(例如,商品价格的展示比销售渠道的显示更重要;在线支付环节比产品评论加载更重要),越能够及早察觉性能下降的趋势,然而频繁的告警很可能就像“狼来了”的故事里那样,反而导致真有问题发生时却被忽视。

因此,对于重要事务的监控频率和告警阈值设置必须更加慎重,最好能根据场景和人员级别进行分级告警,常规的访问缓慢用邮件通知普通运维,内存、磁盘空间不足的信息要及时告知 IT 主管,而在促销活动中发生性能急剧下降的情况,不但 IT 部门要第一时间获得告警,还要及时通知业务运营部门,以提前准备应对措施。

此外,监控不是一成不变的,在系统维护期间或者某个运维人员休假期间,一定记得修改告警策略,这样才能随时掌握监控状态。



技巧 5: 针对不同区域的响应时间差异制订告警策略


随着企业规模越来越大,分支机构也会越来越多,尤其是海外办事处的建立已经成为中国企业全球化发展的必然。然而比起总部和国内的员工,那些在海外办事处工作的员工在操作应用的时候,必然会发现应用响应缓慢慢,甚至由于网络问题无法连接应用。

所以 IT 部门要针对这些分支机构进行有效的应用监控(例如在波士顿、纽约、巴黎、孟买等地设置监控点),根据地区差异制订不同于国内的响应时间告警策略,在影响员工正常工作之前发现问题,并解决问题。



技巧 6: 定制化分析报告


不同部门和工作职责对 IT 业务系统状态的报告需求不同,所以需要花时间根据不同角色定制差异化报告是非常值得的,为每个用户群组(例如每个应用、每个事务处理、每个功能等)提供含有定制信息的分析报告,并定期(例如每天、每周或每月)发送报告,保证每个人(特别是老板)都能准确了解相关信息。



技巧 7: 集中式告警平台和工作流程


从传统应用到服务端应用、 Web 应用、自定义的本地应用,再到越来越多的云端应用,很多大企业都有一个超级复杂的应用集(包含 250-500 个应用)需要维护,如果每个应用都购买、配置和维护几套监控产品,不但成本高,而且工作量也太大了。

另外,如果监控告警平台集成程度不高,导致信息孤岛的出现,造成错误报警,阻碍故障排除,就会增加系统的平均修复时间( MTTR )。所以你需要找到一个能够监控所有应用的方法,这样才能快速找到问题的根源,而云智慧监控宝能够能够通过 API 对接各种 IT 系统平台,就是一个不错的集中告警选择。



技巧 8 :让每个人都能及时了解系统状况


在这个用户满意度至上的时代,你需要不断证明、展示自己的服务质量( SLA ),所以要主动定期向用户报告 IT 系统的 SLA 。你可以提供一个只展示重点信息的概要报告,这样他们无需花大量时间去研究冗长繁杂的报告。另外,因为用户满意度是衡量 IT 成功(也是你的成功)与否的标准,所以它也可以用来衡量 IT 为公司带来了多少价值。



技巧 9 :定期进行系统状态的对比


我们总希望 IT 系统的性能越来越好,那么在不断的系统调优过程中,不但要进行调优前后的性能对比,还要和一段时间内的整体业务状况进行对比,只有这样才能准确判断系统对业务的影响,为下一步行动提供指导。例如,快速确定是否需要将重点放在性能优化上,是否需要更改云服务供应商等等。



技巧 10: 保证质量


要尽早树立注重应用产品质量的理念,虽然现在的产品迭代速度越来越快,但在所有的程序研发 /程序执行过程测试是不容忽视的(包括功能测试、回归测试、性能测试、压力测试等),这样才能保证程序质量,如果能够将测试脚本复用到产品上线之后的监控过程,并把线上数据反馈给开发和测试,不但有助于简化运维的工作流程,同时能提升开发和测试的效率和数据准确性。

总之,终端用户体验决定了对应用速度、可用性和性能状况满意是否,所以需要从用户的视角去执行、测试和监控你的应用。同时更不要忘记移动用户,智能手机不仅逐步取代电脑在我们生活和工作中的地位,而且它们完全改变了应用的体验。事实上,用户在移动设备上所花的时间已经大大超过了电脑,同时移动用户对性能和用户体验的期望也更加苛刻。因此,你需要寻找同时适合移动用户和电脑用户的监控解决方案,云智慧监控宝、透视宝和压测宝三款产品可以满足用户对移动端、 Web 端、网络、服务端全部技术栈从测试到线上产品性能监控告警和深层性能瓶颈分析发现的全部需求,而且三者在从底层架构和数据流上是完全打通的,确保应用性能监控的及时性和准确性。



编译:云智慧

作者: Jay Labadini

原文链接: http://www.apmdigest.com/10-application-monitoring-tips




]]>
监控宝新增国内 7 地监控节点,看看有没有覆盖你们的业务地区~ tag:www.v2ex.com,2016-06-23:/t/287741 2016-06-23T03:20:59Z 2016-06-23T13:12:10Z cloudwise member/cloudwise 监控宝新增:广东广州联通、四川成都联通、浙江嘉兴联通、江苏南京联通、海南海口移动、江苏苏州电信、黑龙江哈尔滨电信、吉林长春电信、河南郑州电信、福建福州联通、湖北武汉联通、浙江杭州联通等监控点。

这些地区有业务的小伙伴不要错过哦,可以用监控宝实时关注这些地区用户访问公司业务的性能情况。

监控宝监测网络遍布全球,监测频率高达1分钟,覆盖全国所有省份和运营商,实现高效能网站持续监测,帮助您了解世界各地真实用户访问网站的情况。

了解更多全球分布式监控节点,从这里进: http://www.jiankongbao.com/monitor

您还需要哪些地区的监控节点,也可以留言给我们哦~

]]>
无压测 不狂欢 压测宝助您决战 618 tag:www.v2ex.com,2016-05-30:/t/282241 2016-05-30T07:32:06Z 2016-06-03T23:39:46Z cloudwise member/cloudwise 18 狂欢节,面对霸气登场的流量,你的服务器扛得住吗? 亚马逊 1 秒钟的访问延迟,将带来每年 16 亿美元的巨额损失; 沃尔玛、百思买等在黑色星期五当天,曾因流量暴增 7 倍不得不关闭网站服务。

无压测,不狂欢。 云智慧压测宝助您决战 618 ,立即进行压力测试 http://yacebao.com/

云智慧压测宝,性能压力测试的必备工具,基于真实业务场景与用户行为的云端压力测试。只需 3 步 6 分钟,即可发起百万并发访问,实现对全链路和全业务的压力测试。

6 分钟 即可发起百万并发

 全球多达 200+城市持续并发 任意位置浏览器创建并控制测试 洞察生产环境高并发下的性能表现 

只需三步 从准备到获得数据

 准备测试脚本,确认压测目标 设置测试时间、并发量等任务 得到测试结果,实时查看数据 

压测监控大屏掌控全局状况

 自定义数据分析面板 全自动关联分析多项指标 实时数据分析,发现性能瓶颈 

颠覆传统压测理念

决战 618 立即进行压力测试 http://yacebao.com/

]]>
监控宝经常轰炸我邮箱啊。。 tag:www.v2ex.com,2016-05-30:/t/282201 2016-05-30T04:38:43Z 2016-06-18T11:40:54Z lslqtz member/lslqtz (部分地区会被改到纠错页。。)

http://233.dog/f_83289794.png

http://233.dog/f_82133483.png ]]>
透视宝 H5 性能管理新鲜出炉 免费体验 tag:www.v2ex.com,2016-04-26:/t/274526 2016-04-26T07:26:34Z 2016-04-26T10:08:56Z cloudwise member/cloudwise H5 页面形式丰富,传播范围广速度快,成为大家都喜爱的传播形式。而用户对 H5 页面的性能要求也更高。本 H5 的渲染性能就不及 native 的 app ,如果不把性能优化做起来,将极大地影响用户使用产品的积极性。

透视宝 Webview 性能分析是对 H5 页面性能的分析,包括页面加载性能分析和 Ajax 性能分析。新鲜出炉,免费体验中。 前往免费体验: www.toushibao.com

图 1:透视宝 webview 的慢页面加载列表

图 2 : H5 页面响应时间分解图

图 3:透视宝 webview 页面加载资源时序图

前往免费体验: www.toushibao.com

]]>
支付宝付款的时候, 手机闪关灯依旧会亮一下 tag:www.v2ex.com,2016-04-15:/t/271288 2016-04-15T04:45:11Z 2016-04-15T06:29:19Z xlrtx member/xlrtx 晚上打车回来走到楼道里手机闪光灯亮了一下, 一看原来是支付宝在提醒打车的扣费.

感觉现在的支付宝就像方校长, 被迫做数据的收集, 以后街上监视器一拍就知道户口, 或者听个留言就知道户口, 交际关系网络轻松获取, api 都做好了, 想想好可怕.

我是从澳大利亚区 AppStore 下的支付宝

IPA https://mega.nz/#!OoljEQhJ!i-46F7gcw9G2Crxvv2XuQV8z0v_Q_tPWlUAU4Rnfpok screen shot

]]>
服务器宕机后自动重启的简化方法 tag:www.v2ex.com,2016-03-16:/t/263837 2016-03-16T02:01:50Z 2016-03-17T20:42:59Z cloudwise member/cloudwise 博主老左经常被人问到“服务器需要定时执行某个任务怎么办?”“服务器可能出现问题时,需要自动重启怎么做?”类似这样的问题。
所以,他亲自用监控宝的 URL 回调功能实现了服务器宕机后的自动重启。
有时候一个不起眼的小功能,也会有意想不到的作用。希望他的分享,对大家有启发。
文章链接:
https://mp.weixin.qq.com/s?__biz=MzAwNzA0NTMzMQ==&mid=404303662&idx=1&sn=a1d16fa9f48f8b5d64f4ad3964c5a089&scene=1&srcid=0316ellwtnotC7rnhRo0gfsV&pass_ticket=VkDDLoW8wviL7ic2r8MlHpxONJvbDrtROwxUZ%2FrcnPVx2SfttebqRagY%2FMYE7bs6#rd

]]>
监控宝新增马来西亚等 7 个监控点 tag:www.v2ex.com,2016-03-15:/t/263642 2016-03-15T06:47:28Z 2016-03-15T06:48:32Z cloudwise member/cloudwise 监控宝新增:南宁移动、拉萨移动、宁夏移动、太原移动、西宁移动、马来西亚、捷克等 7 个监控点。这些地区有业务的小伙伴不要错过哦,可以用监控宝实时关注这些地区用户访问公司业务的性能情况。

了解更多全球分布式监控节点,从这里进: http://www.jiankongbao.com/monitor

您还需要哪些地区的监控节点,也可以留言给我们哦~

]]>
文轩在线:如何让 IT 部门成为企业的价值中心 tag:www.v2ex.com,2016-03-10:/t/262428 2016-03-10T03:16:07Z 2016-03-10T03:13:07Z cloudwise member/cloudwise 文轩在线从 2013 年开始使用监控宝,并将监控宝的自定义监控运用到对业务数据的监控,从而有效的保障业务数据的增长。
文轩在线的 IT 经理于湖,近期分享了他的业务运维心得,让 IT 部门成为企业的价值中心,希望对各位监控宝用户有所启发。

原文链接:
https://mp.weixin.qq.com/s?__biz=MzAwNzA0NTMzMQ==&mid=404113078&idx=1&sn=123c93fcf0cd391ca8a7b510ef611dc0&scene=1&srcid=0309gs7zzbeD4ZHD9E8H2zvK&pass_ticket=636%2BBNKUPh2c4Agjx7rkB7SNUxcsDNqRv6ERfn4MmbDICXeqvgoniRaCwKCiUnV5#rd

]]>
监控宝妙招:批量修改告警通知联系人 tag:www.v2ex.com,2016-02-22:/t/258257 2016-02-22T08:18:07Z 2016-02-22T08:15:07Z cloudwise member/cloudwise


2 、进入告警通知设置,选择你需要设置告警方式和联系人,点击应用设置。



3 、点击“批量应用到其他站点”,可将设置的告警方式应用到其他的监控项目。
]]>
监控宝的日报、周报的取消在哪里?(一图胜千言) tag:www.v2ex.com,2016-02-19:/t/257637 2016-02-19T07:05:52Z 2016-02-19T07:02:52Z cloudwise member/cloudwise

日报、周报是监控宝为方便用户产看每日、每周的监控详情,定期向用户发送的报表。
如果需要取消,在“报表中心”的 SLA 报告中,选择邮件列表,你会看到日报周报月报的状态,最后面有操作,点击删除按钮即可,系统就会暂停向你发送报表。 ]]>
| 监控宝产品满意度调查 |即可得 20 元话费。 tag:www.v2ex.com,2016-01-25:/t/253204 2016-01-25T06:23:50Z 2016-01-25T06:20:50Z cloudwise member/cloudwise 凡认真填写问卷的朋友,我们将送上 20 元话费。另外,我们将抽取部分幸运用户,赠送一份精美礼品。


问卷填写网址: http://cloudwise.mikecrm.com/f.php?t=4tV4q6 ]]>
监控宝新增国内及海外监测点--请戳这里~~ tag:www.v2ex.com,2016-01-12:/t/250075 2016-01-12T02:38:47Z 2016-01-12T22:18:42Z cloudwise member/cloudwise 241 东莞联通 全部可用 649,100
242 合肥联通 全部可用 687,100
243 许昌电信 全部可用 646,100
244 济南电信 全部可用 644,100
245 辽阳电信 全部可用 642,100
246 云南联通 全部可用 641,100
247 宁夏电信 全部可用 764,100
248 西宁电信 全部可用 765,100
249 拉萨联通 全部可用 715,100
250 乌鲁木齐联通 全部可用 664,100
251 贵州联通 全部可用 729,100
252 南宁联通 全部可用 660,100
253 海口联通 全部可用 716,100
254 兰州联通 全部可用 743,100
255 绍兴联通 全部可用 657,100
256 西安移动 全部可用 666,100
257 延吉电信 全部可用 667,100
258 卢森堡 全部可用 680,100
259 立陶宛 全部可用 690,100
260 罗马尼亚 全部可用 670,100
261 美国芝加哥 全部可用 699,100
262 美国亚特兰大 全部可用 701,100
263 美国菲尼克斯 全部可用 673,100
264 美国盐湖城 全部可用 736,100
265 美国新泽西 全部可用 787,100
266 英国曼彻斯特 全部可用 784,100
267 美国奥兰多 全部可用 677,100
269 土耳其 全部可用 711,100
270 巴拿马 全部可用 782,100
271 西班牙马德里 全部可用 584,100
272 菲律宾马尼拉 全部可用 779,100
273 德国杜塞尔多夫 全部可用 776,100
274 南非茨瓦内 全部可用 707,100
275 瑞典斯德哥尔摩 全部可用 708,100
276 俄罗斯莫斯科 全部可用 778,100
277 埃及开罗 全部停用 713,100 ]]>
监控宝产品功能:一键暂停/开启群组成员短信告警 tag:www.v2ex.com,2015-12-17:/t/244121 2015-12-17T02:08:37Z 2015-12-17T02:44:03Z cloudwise member/cloudwise 操作步骤为:“用户中心”--“账户设置”--“用户管理”,点击“全选”--“一键暂停短信告警”按钮。



监控宝官网: www.jiankongbao.com ]]>
监控宝 API 监控全面升级 tag:www.v2ex.com,2015-12-14:/t/243501 2015-12-14T10:12:08Z 2015-12-14T10:09:08Z cloudwise member/cloudwise 1 、增加了实时性的 API 监控指标
正确性、可用性、正确率、可用率、错误总时长、错误总次数、故障总时长、故障总次数、平均可用率、平均争取率、故障率、响应时间、平均响应时间。
2 、完整的 API “事务”监控能力
API 事务中,若其中的 1 个 API 请求不可用,则整体业务的 API 事务变得不可用。 API 监控可以从业务视角做完整的 API 事务监控。
3 、可监控跟多请求方式
支持 Basic Auth, OAuth1.0, OAuth2, Digest 认证方式。
支持添加 HTTP 头 Header 和 Value 。
支持添加 URL 参数。
支持 JSON 、 XML 、 Text 、 Response Status 验证及脚本导入。
4 、连续告警。保障业务的可用性告警方式新增“当前可用性”和“当前正确性”
监控宝 API 官网: http://www.jiankongbao.com/new_service ]]>
监控宝国际版正式上线 tag:www.v2ex.com,2015-12-10:/t/242547 2015-12-10T06:55:18Z 2015-12-10T08:26:29Z cloudwise member/cloudwise 当然也有些注意事项需要和大家聊聊。
1 、如何进行语言切换?
——依次点击“用户中心” –“个人设置”—“偏好选项”—“语言设置”,选中语言版本。

2 、功能上存在一定差异,后续将不断完善。
自己创建的监控项目,在不同语言版本下,从列表页到详情页都会显示。

3 、英文版时区问题
国际版监控宝采用 UTC 时间。 UTC 应用于 Internet 及无线电通信中, UTC 与 GMT (格林威治标准时间)一样,都与英国伦敦的本地时相同,但 UTC 比 GMT 来得更加精准,其误差值必须保持在 0.9 秒以内。

4 、同一个监控项目切换时区,监控数据会如何显示?
数值相等,比率不等。
当同一个监控项目切换时区时,会导致“当日”的起点不同,计算基数不等,从而在同一时刻,数据值是相同的,而当日比率值不等。
比如,纽约 UTC-5 区的 2 点,响应时间为值为 68MS ,当日可用率为 40%(此时基数为 2 小时);切换为 UTC+8 区的 15 点时候,响应时间仍为 68MS ,但当其可用率为 23%(此时基数为 15 小时)。





不建议对同一个监控项目,来回变换时区去查看。

5 、日报 /周报 /月报有英文版吗?
当用户在英文版本中创建监控项目时,其收到的日报 /周报 /月报就会是英文的。
报告是以创建者的语言版本进行生成,如创建者将其他人列进报告接收人,则其他人收到的报告内容,会跟创建者的语言保持一致。


6 、繁体版 /英文版支持短信告警吗?
此次国际化版本,繁体版 /英文版告警方式支持 Email 告警和 URL 回调,暂不支持手机短信。


欢迎大家体验监控宝国际版,也欢迎大家吐槽。

监控宝官网: http://www.jiankongbao.com ]]>
龙珠直播使用透视宝性能管理服务的案例分享 tag:www.v2ex.com,2015-12-08:/t/241938 2015-12-08T03:20:43Z 2015-12-08T03:12:43Z cloudwise member/cloudwise LOL 等网游的流行和游戏竞技赛事的火爆,给各大直播平台带来了巨大的流量,同时也考验着各大平台的性能。龙珠直播作为三大游戏直播平台之一,是如何在前不久的 LOL 龙珠直播狂欢夜上,经受住同时在线人数 313 万这一性能考验的呢?

客户背景:


龙珠直播是由苏州游视网络科技有限公司打造的游戏直播平台,于 2015 年 2 月 1 日正式上线,主要为游戏玩家提供网游视频直播和音乐直播等服务。目前龙珠直播与韩国职业电子竞技协会( KeSPA )、游戏风云、 NICETV 等组织达成战略合作,拥有《英雄联盟》职业联赛( LPL )、《穿越火线》电视职业联赛( CFPL )等超过 30 余款游戏顶级赛事的直播权。
需求分析:
龙珠直播的现有业务主要依托于其网站平台和视频内容分发平台,其中网站平台承载了在线直播的各种关键业务功能,每天的用户访问量超过 1 亿次,夜晚高峰时段的直播观看人数达到数百万量级,英雄联盟、穿越火线等热门游戏直播间的日访问量超过 600 万次。而一些热门赛事直播的同时观看人数同样高达百万,在前不久的 LOL 龙珠直播狂欢夜上,龙珠直播平台同时在线人数突破 313 万。


龙珠 Web 应用系统架构图

龙珠官网的应用架构采用典型互联网应用架构,前端使用 Nginx 负载均衡,应用程序服务器为 IIS ,数据库为 MySQL ,中间加入 Redis 、 Mongo 做的缓存服务,应用支撑的平台包括 PHP 、 Java 和.Net ,每个应用平均日访问量超过 200 万次,最高的应用日访问量超过 1000 万次。
如何保证龙珠直播平台在大流量、高并发情况下持续稳定运行,确保系统不会因网络、主机、应用、数据库性能瓶颈以及代码问题,对用户体验造成影响,是龙珠的 IT 运维部门希望通过与云智慧的合作得到解决的。
解决方案:
针对龙珠平台的典型架构和业务需求,云智慧提供了以透视宝为核心的一体化端到端应用性能管理解决方案,帮助龙珠实现了线上生产环境的持续数据库优化、应用错误分析、代码问题发现、数据访问性能监控、主机监控、后端服务监控等一系列能力。


典型应用
 数据库性能优化
应用开发完成上线后,需要知道应用的数据库访问效率如何(即发现 SQL 脚本的效率问题),透视宝.Net Agent 安装后可实时抓取应用执行过的 SQL 脚本及执行时间,并分析可能产生的问题和数据库锁的情况,这些问题在测试阶段是很难完成的;
 应用错误分析
对于线上应用,代码级异常往往不可避免且较难重现,但非常重要,透视宝.Net Agent 会抓取这些运行时错误,分析错误产生的原因并可明确的告知用户的信息有:什么时间、哪个 URL 、 URL 的参数及详细的错误信息,用户可根据这些信息便可了解问题产生的真实场景和原因。
 代码问题发现
应用上线后可能会存在代码执行效率问题,这些问题如果不通过代码检查往往很被发现,透视宝.Net Agent 支持基于黑白名单配置的代码调用堆栈数据抓取,在代码栈里,可以明确的看到每个方法的执行时间、调用次数、调用了哪些资源或 API 等,并明确的标记出存在问题的代码位置,帮助用户优化代码,解决代码执行问题。
 数据访问性能监控
在龙珠的应用架构中,基于 NoSQL 的数据操作场景大量存在,例如: Redis 、 Mongo ,.Net Agent 会从代码级别统计应用对这些缓存服务的访问情况,例如:应用对 Redis 的请求量是多大、命中率是多少、 Value 的大小是多少及合理性分析等,这些数据对客户优化应用性能非常有价值;
 主机监控
监控龙珠部署在腾讯云的主机状态,实时关注各项性能指标: CPU 、内存、进程、磁盘、网卡信息及 TCP 等;
 后端服务监控
监控 MySQL 、 Nginx 、 Redis 等后端服务的运行状态,例如: MySQL 吞吐率、 Redis 命中率等;
方案价值:
随着透视宝应用性能管理解决方案在龙珠平台的全面部署,龙珠的运维团队通过透视宝能够:
 实时发现性能瓶颈,并且能够记录瓶颈产生的全部过程;
 及时发现用户的应用表现情况,记录用户应用过程中事务的现状。例如:哪些事务响应时间比较慢、响应比较慢的事务和哪些事务有关联。
 真正实现端到端一体化的监控,从客户端、浏览器、 CODE 端、数据库端、服务器端,端与端之间实现关联。
客户证言:
龙珠直播运维总监对透视宝的评价是:透视宝具备快速发现和定位问题的能力,为龙珠直播向用户提供高质量的持续服务提供了保障。

[附] 龙珠案例应用实例:
(一)、发现性能瓶颈,确保应用顺利上线;
龙珠直播内容搜索 API 应用上线后,服务器持续报警,负载较高,但开发人员一直无法定位问题,对线上产品的持续服务能力产生较大影响。
在安装透视宝后,立即发现如下几个问题:
( 1 )、慢 SQL :通过抓取到的 SQL 语句发现,应用中存在很多执行效率较差的脚本,有的脚本执行时间甚至达到 1 秒以上;
( 2 )、代码问题:通过应用代码栈发现,同一条 SQL 在一次请求里被连续调用 4 次,这种代码失误,对于高并发的应用影响较大;
( 3 )、 Redis 访问优化:通过分析请求列表及数据发现,一些本应该到 Redis 的请求直接打到了数据库上,如果访问量足够,会直接导致数据库宕掉;

(二)、监控应用访问异常,优化应用访问体验
在应用监控过程中,有的应用会存在大量的 404 错误(这些错误会被 Agent 抓取并保存),这些的应用 404 错误地址的格式表现为 http://********/undefine ,这种地址的产生的原因是: JS 在获取页面对象并进行 Ajax 请求时获取页面对象错误,从而导致地址错误,需要优化前脚本,提升用户访问体验;

(三)、数据库性能优化
透视宝提供数据库整体性能优化与分析功能,快速定位慢 SQL ,提升应用访问数据库的性能。



(四)请求性能优化
透视宝提供请求整体性能优化与分析功能,快速定位慢请求,提升应用的性能。




透视宝官网: www.toushibao.com ]]>
[云干货分享] 发布自动化技术 Release Automation 详解 tag:www.v2ex.com,2015-11-19:/t/237266 2015-11-19T04:07:03Z 2015-11-19T04:04:03Z cloudwise member/cloudwise 导语:应用功能从一段段程序代码,到生产环境中可用的服务,要经历开发、测试和部署上线等一系列过程,随着云计算和移动互联网时代的到来,敏捷开发、 DevOps 成为流行,应用开发和迭代周期越来越短,然而行百里者半九十,应用发布环节正在成为 IT 开发的瓶颈,影响着应用上线的效率。
这次分享由云智慧企业大客户资深技术顾问肖澍( Patrick )带来,肖澍多年来一直从事企业 IT 解决方案和产品售前、架构咨询与服务交付等工作, 2004 年涉足 IT 监控,中间件,数据库和行业应用软件领域,积累了丰富的行业服务经验。他在分享中将为您详解 DevOps 时代如何通过发布自动化技术 Release Automation 解决敏捷交付的发布难题,以下为分享内容:
应用功能从一段段程序代码,到生产环境中可用的服务,需要经历多个阶段:

1 ,敏捷开发,每日构建,多团队构建成果的装配集成测试;
2 ,集成测试,性能测试,验收测试,生产环节,需要供应一致的环境配置,包括 OS 、 Web Server 、中间件、数据库等;
3 ,程序验证后的部署上线。
频繁的应用发布需求对企业 IT 运维团队的手动 /脚本发布方式带来更大挑战,在不同环境中分别进行修改,并保持这些更新在生产环境中同步,需要耗费大量时间,而且每次更新都得从零开始。此外,跟踪应用变化和管理分布式数据中心中的应用差异也非常繁琐,时间成本大幅攀升。
因此企业需要一种新技术和管理手段,来解决敏捷交付的发布难题。

因为手动流程容易发生错误,而且成本高,花费时间也多。减少或消除手动、半自动化脚本,代之以所有应用系统相关方和环境中协调配合的进程,实现应用变化的标准化、优化和加速。这就催生了一种自动化发布的技术手段,这种企业级持续交付解决方案,通过对应用进行编排,在开发与生产环境中推广,用于创建、测试并自动化执行复杂应用的发布任务。
开发机构包括多样化的工作团队,分别负责代码、数据和内容,涉及整个应用开发生命周期中的所有阶段,每个团队都有自己不同的需求。通过引入自动化平台,建立端到端的操作自动化,能够有效减少人工干预环节工作量,降低人为操作失误。
1 、建立应用模型
自动化的基础,是首先建立一个应用模型。

遵从以应用为中心的理念,快速对应用系统进行拆分,将复杂的应用系统环境和发布任务切分成各种可重用的技术组件,以快速组合并管理这些组件。利用功能强大的可视化应用建模能力,运维团队可针对发布部署到故障维护和审计在内的所有应用服务任务进行自动化。支持应用服务工作流,可实现多层应用、多实例、分布式环境下的复杂应用发布自动化。
发布自动化系统使用以应用为中心的发布模型管理应用发布,应用发布模型包括涉及应用部件,应用架构,自动化过程和环境组件,并提供与自动化发布过程相关的应用架构,包括技术组件,架构,服务器类型和环境等信息。任何复杂的应用,最终都可以被拆解成不同的架构组件。
这样,就完成了发布自动化的第一步。
2 、开箱即用的动作库
第二步,发布自动化平台内置提供了大量开箱即用的动作库 (非预先创建的脚本),用于与各种不同的服务器,操作系统,应用服务器进行交互, 提供开箱即用的标准化操作。
比如,要执行 linux os 的文件复制命令,只需调用一个文件动作,这个动作自身,可以生成 linux 命令。
所有应用发布相关的部署任务都基于抽象后的基础设施工作流构建,以便独立于最后执行的目标服务器 ,并允许针对不同的服务器组执行相同的工作流程执行。在此过程中,应用发布执行的每个环境设置和管理特定的配置信息,例如从哪个版本库中检出最后构建的版本 (生产和测试可能是不同的),都以高度灵活的配置驱动方式完成。
3 、工作流可视化

通过可视化的工作流,来调度发布操作中涉及的各种动作,是自动化的核心关键。
部署工作流程和动作可以通过图形化界面进行配置,动作之间和应用各层之间的依赖关系完全以图形化拖拽方式完成。不需脚本编程就可以实现完整的部署流程逻辑:如 for, for each, if then else, while loops 等流程控制。
此外,应用发布过程支持从外部数据源(部署清单,部署配置文件)获取过程执行所需的任务实体,并提供完整的部署回退。利用应用发布过程,还可以重用部署的单个步骤,如文件处理、分发、注册表设置、 RPM 、目录操作、开通、启停服务、安装、部署等。
应用发布过程可与目标环境解耦,无需特别针对目标执行环境进行技术设计,可自动按照配置进行映射。
一套完整的发布过程制定后,可以自动适配不同的目标环境,即可支持 linux, 又能在 unix 上执行。
每一个发布过程,都可以自动确保在部署过程中各层之间的依赖关系,例如开始执行 Web 服务器上的一组动作,然后执行数据库层上的动作,之后回到 Web 服务器上执行另外一组动作。所有发布过程东都具有可视化配置和监控过程执行的能力。
发布自动化支持与多种外部系统对接,例如自动从 Jenkins 中提取构建包,与变更管理系统集成,与 Nexus 工件库或其他版本控制系统集成,也可保存与发布任务有关的实体文件,如程序包、配置文件、补丁或发布介质等。
最后,自动化发布系统,提供报告和仪表盘,为整体任务发布提供了高度可视化环境,使 IT 运维团队能更直观全面的准确掌握任务执行情况。 IT 管理人员能更直观的了解哪个用户,什么时间,在哪个环境中,做了具体什么操作。
这些功能,在敏捷开发的频繁变更时,可以极大提高部署效率。

问: DevOps 是不是更适合发布自动化?
答:持续交付,又是 DevOps 的重要实践之一, CI = 持续集成,是 DevOps 的另外一个重要实践
问:持续交付,持续集成,区别在哪里?
答: CI 在于自动化的代码构建,随时保证生成可部署的程序包; CD 在于自动化的把这些程序真正发布到生产环境中,现在有些开发人员,借助 Jenkins 、 Puppt 、 Chef 这类工具在做自动化发布。 Jenkins 里面有一些基于脚本的功能可以辅助部署。
DevOps 有个 Automation Everything 的思路,就是把所有能自动化的事情都 automate ,包括持续构建,持续验证(测试),持续集成……
问:持续交付可以帮助到运维工作吧?
答:是的,大家可以想象一下,你自己是 CIO ,管理 1000 人,分为几十、上百个开发团队,每个团队都问运维要开发,测试,验收环境。这些环境规模有大小的区别,但配置要尽量一致。
首先,供应环境的工作量就非常大;然后,每个项目假如每天都有迭代,就需要运维辅助完成上线部署操作。手工或者脚本方式,对运维人员的技术要求很高,涉及网络、 OS 、 VM 、 WEB SERVER 、 MIDDLEWARE 、 DB 一大堆环节,很容易出错。
自动化工具增加了准确性,降低了操作,配置错误导致的故障风险,还提升了效率。
问:持续集成已经包含了构建、测试和发布,为什么还要用发布自动化?
答:现在的 CI 工具确实都带了一些发布的功能,但 CI 工具的发布定位比较窄,目标环境比较单一,而且大多数是基于手工脚本,所以这里面就有商业工具的市场了。
问:我认为的 CI ,不仅仅是一些工具,更是一套研发管理的方法集。
答:当然, DevOps 、 CI 、 CD ,这些其实都不是指具体的技术和工具,首先是理念和方法,工具只是辅助的手段,是固化理念和流程落地。大家听说过 thought works 这家公司么?创始人是敏捷宣言的起草者,这家公司的主要业务就是卖面向敏捷,精艺和 DevOps 指导咨询服务的,他们在国内的业务就是从教企业怎么做敏捷开发起步的。
以上是 Patrix 对于发布自动化技术 Release Automation 分享的全部内容,更多技术干货请关注云智慧微信公众帐号。

]]>
云智慧透视宝 PHP 应用性能监控实现原理 tag:www.v2ex.com,2015-11-17:/t/236835 2015-11-17T09:16:52Z 2015-11-17T09:21:16Z cloudwise member/cloudwise 自 1994 年创建以来, PHP 早已由小家子气的” Personal Home Page Tools ”,演变为” PHP: Hypertext Preprocessor ”,同时基于强大的可扩展性与敏捷迭代特性,基本已经成为互联网科技公司的必备语言,为推动互联网发展提供着源源不断的强大动力。
同时基于 PHP 的开源软件和开发框架(优秀如 WordPress , Zend Framework , Laravel , Yaf , Hiphop 等等)也在不断地发展,使得 PHP 也被除互联网公司之外的企业所大规模使用,而进入企业级应用开发语言之列。
二。用户监控需求
我们知道, PHP 的门槛低迭代快使得很多项目,因为种种原因变得架构不清:
1. 开发者水平不足;
2. 项目是从外包团队接手;
3. 历史问题,积重难返;
4. 反正性能奇差,反正已经愈发不可控;
而要发现问题却又因为各种原因不可或很难调试,这些原因诸如:
1. 时间太久了,我也忘了怎么写的,要看代码
2. 因为数据不可造,逻辑无法到达,不能重现
3. 项目不是我所在的团队开发,架构以及代码,羞涩恶心。

图 1: PHP 应用系统的执行模型

PHP 的运行阶段可以大致分成三个阶段:
1. Parse
2. Compile
3. Execute
其中 Compile 过程将会产生 Op Code 和 Class Table , Function Table ,然后交给 Execute 最终执行。 Op Code 是中间码,被 Zend Engine 调用执行。
不难看出,其实 PHP 与 Java 类似,都是产生中间码,运行在各自的”虚机”上,可是为什么 PHP 的性能较 Java 、.NET 、 Go 而言差别这么大呢?
一句话讲,大家普遍认为的” PHP 是解释型语言”其实是不严谨的, PHP 不是不编译,而是每次执行都编译,除此之外最严重的问题即是较难实现并行运算(注意只说”较难”,使用 PHP 进行并行计算的方案不止一个)。基于 Op Code 的存在,已经诞生了大量 cache 工具扩展,可以有效提升 PHP 应用的执行性能,如 OpCache,Apc,Apcu,Xcache 等等。
对于使用 PHP 开发的网站、接口、应用系统而言,性能的瓶颈点会在什么地方呢? 做过 PHP 应用性能优化的朋友们都知道,递归、循环、资源操作、资源释放等都是常见的瓶颈点,这些经常会造成阻塞或锁。
可以得出 CPU 、内存 、各种 I/O 、各种网络带宽等的消耗是性能瓶颈点中的重中之重,我们可以简单归结为:外部服务(如第三方 API),资源读写,代码异常。
处理这些问题的通用作法是使用 Xhprof,Xdebug 或 PHP-trace 等工具来找出,并配合架构师或高级工程师经验来处理,方法包括单例、事务、按需加载、短事务、及时释放等等(对于大多数公司与开发人员来讲,碰到性能问题更多的作法是盲目的猜测与挠头).但这些方法有哪些不足呢?
一眼可知,只能在测试或生产环境,产生问题并明确之后进行处理.测试环境还好,但如果是生产环境,事后处理虽能补救,但大多数面对的都是因功能受损造成的投诉或更严重的业务损失。
能够在生产环境第一时间发现或规避可能的性能问题;准确记录已知或未知故障现场。这两点,则成为应用性能管理的迫切需求。
三。透视宝 PHP 监控实现原理


图 2 Hook 运用示意
PHP 运行支撑的 Zend Engine 早在设计过程中已经预留了丰富的 Hook ,可以有效干涉处理过程中的几个关键步骤。
云智慧透视宝 PHPAgent 的研发实现,当然不能影响应用系统原有的代码,那么最简单有效的方式必然是实现一个 PHP 扩展, PHPAgent 利用了以下几个 Hook:
1. zend_compile_file & zend_compile_string
加载分析文件或字符串,本身就会造成非常大的 IO ,如果过多地执行加载,无疑会造成内存和 CPU 的消耗.通过这两个 hook,可以取得文件名、执行行数、使用内存和 CPU 占用时间。
2. zend_execute & zend_execute_internal
通过这两个 hook 的使用,我们可以准确地分析得出一个 PHP 应用中的类调用、方法调用、方法参数、内存占用和 CPU 占用,加以分析,便可以准确得出应用系统运行过程中的方法运行栈,API 调用地址,SQL 语句,Cache Key 以及 Cache 命中等关键信息。
3. zend_throw_exception_hook
利用异常钩子,可以准确地得到应用系统运行过程中出现的异常信息,当然包括异常发生的类\方法位置,参数,异常 code 和异常 message 。
4. zend_error_cb
错误钩子则更加直接,可以准确得到系统运行过程中出现的任何一个 warning,代码错误或语法错误。


图 3 PHPAgent 注册与应用 Hook 流程

图 4 zend_execute hook 的应用示意(伪代码)
上图大致解释了我们是如何运用 zend_execute hook 进行数据采集的: 先取得方法名,同时通过规则过滤引擎,判断哪些是我们关注或不关注的(类\方法的黑白名单),然后通过 AGENT_BEGIN 宏记录方法开始时间,方法名,行数,内存起点与参数,在执行原有 zend_execute 之后,再通过 AGENT_END 宏记录结束时间,内存止点。
通过上述 Hook 的应用,已经可以得到我们所关注的指标数据: 类\方法执行顺序,执行时间,内存占用,接口\DB 等资源连接,SQL 语句和执行时间等。
经过严格的压力测试和生产环境部署实践,PHPAgent 对原有应用系统的性能影响在 5%以内.经过一些参数调配,可以将性能影响降到更低,这些参数包括:
1. 是否启动异常钩子
2. 是否启动错误钩子
3. 是否启用数据采样
4. 是否启用栈追踪
5. 是否使用黑白名单(URL\Header\Cookie\Request Params)
6. 是否启用 UDP 发送代理
7. 关注请求时间响应阈值
8. 关注方法时间响应阈值
四。透视宝 PHPAgent 监控部署流程
透视宝 PHPAgent 遵守 SmartAgent 插件规范,那么一切从 SmartAgent 的安装部署开始。
1 、登录云智慧透视宝官网: https://www.toushibao.com/ ,点击页面右上角导航的“免费试用”,正确填写免费试用的申请信息后会弹出下面的对话框,同时激活邮件会自动发送到你的邮箱中,按照流程注册帐号即可。

2 、注册成功后,登录透视宝,点击配置-应用,在配置页面中下载安装 Smart Agent 。安装成功后, Smart Agent 会根据系统配置自动获取主机信息,大致两分钟后,您就可以在“主机→服务器”模块中查看该服务器的 CPU 、内存、网卡、磁盘及进程等性能数据。

3 、如果要监控应用运行时代码、主机中服务和数据库性能数据,您需要进一步安装和配置 Smart Agent 提供的各种插件,这是因为 Smart Agent 实现了一种开放式的插件式结构,对每个运行时代码、服务和数据库的监控都是通过相应的插件来实现的。

3 。 Smart Agent 在安装完成后,加载过程中自动发现你的应用组件,如果没有自动监测到 PHP 环境,也可以手动添加 PHPAgent 。如上图所示,点击“管理”入口,进入“插件管理”,点击页面下部的“添加服务”,选择 PHPAgent 后,点击“创建”。
创建完毕后,点击“ ON ”。(该 ON 操作只是初始化用户的信息,以便以后采集到的信息能够正确的回传给该用户。)
4 。当然,如果对于已经安装完成的 PHPAgent ,也可以直接在此管理界面上方便地进行升级与降级操作。

5 。安装过程脚本默认会使用 whereisphp 寻找系统内 PHP 进行安装。
如果编译安装 PHP ,请赋脚本中 APPD_PHP_PATH 变量值到 PHP bin 目录,如: /usr/local/php-5.5.14/bin 。
执行 PHPAgent/install.sh start 安装命令。
6 。重启 Web Server
安装开启 PHP 代码监控插件后,需要您手动重启 web Server ( apache\httpd\Php-fpm 等软件)
7 。查看 PHP 应用数据
恭喜!此时配置已经完成,如果应用有正常访问进入,您就可以在“应用”模块中查看应用数据了。



五。透视宝 PHP 监控功能特点
在功能方面,透视宝无论是在 PHP ,还是其他如 Java 、.NET 等主流语言的监控上,都包括:查看执行最慢的 10 个元素,包括元素执行次数、持续时长和占用时长百分比;查看 HTTP 请求参数,包括请求的响应状态、链接页面、具体的请求参数及返回结果;查看代码执行堆栈的详细树状信息,包括每个方法的计算时间、总耗时和被调用的次数,您能直接看到特殊标识的最慢方法;查看涉及 SQL 语句的总耗时排序,包括 SQL 执行总耗时、执行次数和具体的查询语句;第三方 API 调用。

上图是 PHPAgent 发现的某应用的资源拓扑与请求响应概述。

上图以散点柱饼图描述了某段时间内一个 PHP 应用的请求响应时间分布,可以一眼看出有问题的请求是哪些。

对于某一个单次请求事务的拓扑与代码运行栈可以准确地进行分析:



下面是对一个应用中 PHPAgent 发现的一段时间内对 Mysql 资源操作的分析。








基于某一个集群的应用,透视宝可以自动进行总拓扑的识别和描绘。




当然,可以对已经识别的应用站点拓扑进行分组高亮。






应用程序一出错,你就抓狂。

PHP 作为应用最广泛的程序设计语言之一,怎可少得了一个监控。

透视宝 PHP 探针 监控全面开放试用,不用你就亏了!

免费申请入口: http://cloudwise.mikecrm.com/f.php?t=otD9zM

试用心德可发送到: lily.qi@cloudwise.com 有奖励哦~~~







应用程序一出错,你就抓狂。

PHP 作为应用最广泛的程序设计语言之一,怎可少得了一个监控。

透视宝 PHP 探针 监控全面开放试用,不用你就亏了!

免费申请入口: http://cloudwise.mikecrm.com/f.php?t=otD9zM

使用感言可发送到: lily.qi@cloudwise.com 有奖励哦~~~ ]]>
云智慧透视宝 Java 代码性能监控实现原理 tag:www.v2ex.com,2015-10-28:/t/231737 2015-10-28T07:28:21Z 2015-10-28T07:31:05Z cloudwise member/cloudwise
从 1995 年 Sun Microsystems 公司正式推出 Java ,到 2006 年时 Sun 公司将其开源,迄今为止已经有了 20 年的历史。 Java 本身已不仅仅只是一门面向对象的编程语言,而是由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的跨平台开发与部署的支持,实现“一次编写、到处运行”的目的。 Java 已经广泛的应用于嵌入式、移动终端、企业服务器、大型机等各种场合。
Sun 官方所定义的 Java 技术体系包括如下几个组成部分:
* Java 程序设计语言
* 各种硬件平台上的 Java 虚拟机
* Class 文件格式
* 来自商业机构和开源社区的第三方 Java 类库

图: Jaa 技术体系组件图
Java Virtual Machine(JVM)是 Java 体系的基础,负责解释、编译执行.class 文件形式的字节码,同时负责内存管理、热点代码检测和运行时编译优化。正是由于有了虚拟机的基础,才使 Java 实现了“一次编写、到处运行”。 Java 这 20 年的发展,其实更是虚拟机的发展过程。期间经历了 Sun 、 BEA 公司各自开发的虚拟机, 2009 年之后, ORACLE 将这两家公司收购,并将这些虚拟机取长补短、合二为一。目前还是开源的虚拟机 OpenJDK ,可供爱好者学习研究用。
JRE 部分是支持 Java 程序运行的标准环境。 JDK 是 JRE 的超集,包含 JRE 的一切,再加上工具如编译器、调试器等。

二、 Java 性能监控需求

对于一个企业的应用系统,大多数情况下,肯定是由多种编程语言开发的各种系统的集成。我们都非常关心系统的可用性、及时响应性、资源的消耗,比如 CPU 、内存、各种 I/O 、网路带宽等消耗情况。对于这些问题的性能瓶颈点,我们一般可以归纳为外部服务(如第三方 API )、资源读写、代码异常。如果在发生这些问题时,能够及时完整的抓拍记录保留下来,那么对于我们解决问题将会提供充足的证据,解决问题会变的非常容易。

对于 Java 应用系统来说, JVM 自身提供了相应的性能监控手段和工具,经常在出现问题后,比如内存泄漏或溢出时,我们会通过 jmap 命令导出堆的转储快照,利用相应的命令 jhat 或其他相应的第三方内存分析工具来分析对象的占用情况。

响应缓慢时,我们可能会用 jstat 监视命令、或 jdk 的可视化工具 jconsole 、 visualvm 来分析 JVM 的垃圾回收类型、回收频率,来推测是否是垃圾回收导致的。有可能我们还要接着分析线程转储快照,通过 jstack 取出线程的栈快照,来分析是否有真死锁、死循环导致的相应缓慢、资源负载高等情况。

当有问题出现时,许多开发人员可能都是比较盲目的用这些工具来试探性定位问题,而大多数情况下,这种试探会无功而返。因为这些分析工具主要是侧重 Java 单方面的分析,比如该系统调用第三方 API ,如果第三方 API 有问题,是无法监控到的。还有像文件、 DB 资源的访问也是是无法监控到的。

而且,只有对 Java 虚拟机机制较为熟悉的高级开发人员才能比较好的运用、理解这些工具,对于大多数普通 Java 开发人员来说,这些问题只会令他们束手无策。

像外部服务(如第三方 API )、资源读写、代码异常这些瓶颈点,需要通过代码级别的监控才能直接、快速、有效的找到症结所在。调用第三方 API 的耗时、资源访问的耗时、代码抛出的非预知异常,这些常见问题代码监控完全能够监控到,并能够实时抓拍记录,一旦有问题可以快速还原事故问题现场。通过代码级别监控发现问题后,也可以在辅助利用虚拟机内置监控工具进行进一步的定位。


三、透视宝 Java 监控实现原理



图: Java 的执行模型

在 Java 的执行体系中,由.Java 源码文件编译后的.class 字节码文件,可以理解为中间语言。



图:透视宝 Java 监控实现原理



图:透视宝 Java 监控实例运行图

1 、字节码 load 至 JVM 时发生了什么
* 回调函数注册完毕后,凡是当有任何的 class 文件即将被类加载器加载前,都
会执行回调函数 transform ,在此方法内实现的类改变操作。
* 实现的 transform 方法中,我们使用的是 ASM 字节码操作框架, ASM 从二进制
形式的类文件中读取、分析类的信息,然后修改改变类的行为。
* transform 方法的基本代码形式如下:



2 、如何实际改变类行为
* 在依赖于 ASM 基础之上,我们抽象出这样的业务模型


* 常用的拦截探针


* 常用的运行时拦截处理器

* 支持的拦截定义过滤器规则

* 该业务模型对应的行为

定义拦截描述时,指定过滤拦截哪些类、哪些方法,然后,在这些行为的点上,可以埋入探针、处理器。重写 visitCode 、 visitInsn 、 visitMaxs 分别实现方法进入、返回、异常的相关操作改写。

四、透视宝 Java 监控部署流程

1 、登录云智慧透视宝官网,点击页面右上角导航的“免费试用”,正确填写免费试用的申请信息后会弹出下面的对话框,同时激活邮件会自动发送到你的邮箱中,按照流程注册帐号即可。

2 、注册成功后,登录透视宝,点击配置-应用,在配置页面中下载安装 Smart Agent 。安装成功后, Smart Agent 会根据系统配置自动获取主机信息,大致两分钟后,您就可以在“主机→服务器”模块中查看该服务器的 CPU 、内存、网卡、磁盘及进程等性能数据。

3 、如果要监控应用运行时代码、主机中服务和数据库性能数据,您需要进一步安装和配置 Smart Agent 提供的各种插件,这是因为 Smart Agent 实现了一种开放式的插件式结构,对每个运行时代码、服务和数据库的监控都是通过相应的插件来实现的。

Smart Agent 在安装完成后,加载过程中自动发现你的应用组件,如果没有自动监测到 Java 环境,也可以手动添加 Java Agent 。如上图所示,点击“管理”入口,进入“插件管理”,点击页面下部的“添加服务”,选择 JavaAgent 后,点击“创建”。
创建完毕后,点击“ ON ”。(该 ON 操作只是初始化用户的信息,以便以后采集到的信息能够正确的回传给该用户。)

以上都操作完后,在{smartagent 的安装路径}/plugins ,就会看到如下形式的

在到{smartagent 的安装路径}/plugins/JavaAgent_1442476463X1002x0/conf 文件夹下,查看 app.conf 文件,看看该文件内的 HostKey 的值是否是如下类似的加密形式

以上情况,表明 JavaAgent 已经下载启动初始化成功。
4 、安装 JavaAgent 至各种应用服务器上,如 tomcat\jboss\weblogic 。(该操作参考官网 https://www.toushibao.com/即可)
5 、只要启动相应服务器,然后访问您的应用 url 即可,该 url 对用的代码执行情况即可呈现给您,一旦出现缓慢问题也一目了然。如下图示意

五、透视宝 Java 代码性能监控特点

在功能方面,透视宝无论是在 Java ,还是其他如.NET 、 PHP 等主流语言的监控上,都包括:查看执行最慢的 10 个元素,包括元素执行次数、持续时长和占用时长百分比;查看 HTTP 请求参数,包括请求的响应状态、链接页面、具体的请求参数及返回结果;查看代码执行堆栈的详细树状信息,包括每个方法的计算时间、总耗时和被调用的次数,您能直接看到特殊标识的最慢方法;查看涉及 SQL 语句的总耗时排序,包括 SQL 执行总耗时、执行次数和具体的查询语句;第三方 API 调用。

端到端性能监控示意图

在性能方面,云智慧透视宝的 JavaAgent 代码监控探针包,对用户的性能影响到底有多大?从安装包本身来看,它非常小,仅为 1.5M 。在不安装 Java 探针包和安装 Java 探针包,分别运行应用。经过测试对比, CPU 使用率差值、内存消耗差值、 TPS 差值均在 5%以内。
云智慧官网: www.cloudwise.com
透视宝官网: www.toushibao.com ]]>
运维生存时间呕血之作:网站运维黑锅如何甩 tag:www.v2ex.com,2015-09-23:/t/223034 2015-09-23T03:42:24Z 2015-09-23T07:10:08Z cloudwise member/cloudwise
讲几个工作中经常遇到的一些时间,或许你也遇到过,高高兴兴上班来,刚打开电脑,出现如下情况:

领导跑过来问昨天网站访问很慢,服务器又出问题了
客服跑来说福建地区 XX 市有用户说网站打开很慢,服务器又出问题了
老板说昨天他在家里打不开网站,服务器又出问题了
技术总监说昨天刚上 CDN ,你看看效果如何
销售部问能不能看看全国各地区访问咱们网站的速度如何,以及如何改进
还有更多关于网站运维的黑锅,欢迎大家列举...
为什么出了问题总认为是运维的原因?

说个题外话,在一家公司竟然遇到以前的同事,见面寒暄几句,他说了一句让我至今难忘的话:“还是你们运维轻松,每天什么是都不要干,只要盯着屏幕就好了,盯着服务器是不是有问题”。

网站访问慢的原因

1 、服务器故障
2 、程序逻辑有问题,导致响应慢
3 、网页某个元素慢,导致整个页面慢
4 、用户网络环境慢
5 、南电北网互通慢
6 、运维的烦恼

有人提议用 zabbix 试试,作为单节点的运维监控工具, zabbix 确实功能强大,但是它做不到全栈的网络性能监控,你以为 zabbix 是大神么,呵呵,过去的事情我不可能知道,某某地区的访问情况我也不会知道,我只有一台服务器。有人说用网页测试软件来试试吧,可是他只是一个普通的 get ,然并卵。

解决方法

最终这些影响网站访问的问题还是能得到良好解决的,云智慧的监控宝就是不错的选择,里面的页面性能管理和网站监控能让你甩掉不必要的黑锅。话不多说,上几个图:



监测点对比



网页性能管理

全国几十个省份,武汉电信垫底。



当前列出了所有监控点的页面打开时长数据,可以看到各地区的性能评分以及响应时间



时序图



各资源响应时间

网页慢了,有可能是网页上某个元素拖垮的,可以监控到网页上各个元素的加载情况(用过 firebug 的都知道),我们可以知道 DNS 解析时间、建立连接、发送请求、等待、接收数据所消耗的时间,和 firebug 基本一模一样。上图可以看到,各个资源的各种时间都详细的列出来,我们能很精确的分析出问题到底出在哪个网络环节。



网页性能管理 - 请求 /响应头

可以看到服务器响应头,一般 head 里面包含文件过期时间、 CACHE 命中情况等等,都是一些有助于排查问题的信息。



网站可用率

获取某一天的可用率,上图可以看到上海科教网可用率为 75%,没听过,可用率低或许是理所当然的事情。

怎么实现的

监控宝提供了网页性能管理这个功能,只需要简单的配置。登陆后台,点击“监控”-》网页性能管理-》创建监控项目。



创建监控项



检测节点

云智慧赠送给运维生存时间的帐号,一共有三十多个监控节点可供选择,企业版账号可以选择遍布全国以及海外主要城市 100 多个监控点,包含各个地区,各种网络。监控频率选择 15 分钟,频率越小数据越丰富。



告警配置

运维可根据自身业务的 SLA 定制告警触发器,比如,如果任意一个节点响应时间超过 5000ms 即发送告警,告警方式有 Email 、短信、微信和电话语音。你可以根据告警状况的严重程度选择合适的告警方式。



检测配置完成

最后

如果你正在被各种网站运维问题所困扰,试试监控宝的网页性能管理吧,不但可以满足老板、领导、同事的各种坑爹需求,还能第一时间发现服务器和网络故障,把用户投诉消灭在萌芽状态,从此不再背黑锅。



云智慧官网: www.cloudwise.com ]]>
[干货] 前方高能!如何保障 Python 应用的高性能 tag:www.v2ex.com,2015-09-21:/t/222450 2015-09-21T06:49:07Z 2015-09-21T06:46:07Z cloudwise member/cloudwise
而随着云计算时代的到来,以及基于 Python 的云架构开源项目 OpenStack 的流行,越来越多的企业开始引入云服务的概念,尝试利用云计算服务来构建新的高可用架构。而同样地,企业级应用程序的设计与开发方式也发生了转变——开发人员需要构建原生的云计算应用,以便更有效的降低运营成本并提升灵活性。利用云平台与云服务再结合 Python 来进行应用开发,就成为了一种行之有效的途径。
Python 确实是个好语言,简单易用上手快,标准库和 PyPI 第三方库有丰富而又有用的资源,可以快速的解决开发者的问题,而不用重复造轮子,这些特点使得 Python 这几年逐渐流行起来。相对而言, C 受限于较为低级的语法,开发周期长,一般用来开发性能要求高的软件。 Java 偏重于企业开发,缓慢的 JVM 启动速度导致 Java 不适合用来开发系统管理脚本。而 Python 作为一个多面手,被广泛应用于 Web 开发、科学计算、数据分析、云计算(OpenStack )、运维平台和自动化运维(SaltStack )等。
Python 的优点很多,但随着企业业务向云端和移动互联网上的迁移,真实线上环境的复杂性,巨大的流量压力,以及 IT 架构的高可用问题,都会造成 Python 应用的性能瓶颈。作为 Pythoner 的你是否常被这几个问题所困扰:
 代码执行速度真的很快吗?
 代码性能瓶颈出在哪里?
 内存消耗大不大?
 是否存在内存泄漏?
透视宝 Python 监控实现原理
在刚刚举行的 PyConChina 2015 大会上,国内领先的应用性能管理服务商云智慧 VP 刘国强 (Bruce Liu )先生,为广大 Pythoner 带来《 Python 应用性能管理》主题分享,和大家一同探讨云智慧透视宝是如何保障 Python 应用在生产环境下的高性能。

针对复杂的 IT 架构,云智慧采用 Backbone 分布式监测节点监控,实现系统统一调度监控任务,所有监控点同步执行,依赖可靠的骨干网监测点执行监控任务,技术上消除网络抖动和噪声带来的干扰,稳定可靠的数据可以用于评估 SLA 。

而部署在应用系统中的智能探针会根据应用系统的语言,自动安装对应的探针程序,并为系统绘制应用拓扑。透视宝 Python 探针 pythonAgent 会在框架的 RequestHandler 添加上下文管理器(context manager ),通过 Smartpythonagent 模块实现上下文管理协议的__enter__() 和 __exit__() 方法控制 tracer 进程的起始和结束。 Tracer 进程通过 python 的 sys.settrace ()库方法进行开启和结束代码的 trace 过程。
Output 模块会对 tracer 进程返回的代码 trace 信息进程处理生成我们想要的数据。其中的 tree 是对代码执行过程以方法名作为节点生成树状的结构,能直接通过 tree 来还原代码执行时的方法调用过程。而 Map 则记录 tree 中每个节点的执行信息,如消耗内存,执行时间等。 Output 模块处理完数据后会向 smartAgent 的 sendproxy 发送数据,最后 sendproxy 会向透视宝服务器发送数据。 pythonAgent 的 tracer 进程能跟踪到'call', 'line', 'return', 'exception', 'c_call', 'c_return', or 'c_exception'事件。

依托于各种 Web 轻量级应用框架, Python 在 Web 应用上得到最广泛支持,而透视宝的 SmartAgent 支持主流的 Django 、 Tornado 、 CherryPy 、 Flask 、 Pylons 、 Bottle 等应用框架,保证 Python 代码性能数据抓取的准确性和高效能。配合透视宝部署在服务端的其他应用服务监控,包括 Apache 、 Nginx 、 Tomcat 、 Weblogic 、 MySQL 、 Memcache 、 Redis 、 Oracle 、 MongoDB 、 PostgreSQL 等,开发和运维人员能够第一时间发现应用系统的潜在问题,准确定位应用执行缓慢的真实原因。
如何利用透视宝监控 Python 应用
用户可以访问透视宝产品网站: http://toushibao.com/ ,申请免费试用帐号,进入应用管理,下载 Smart Agent 并进行安装,安装完成访问“系统→插件管理”,找到 Smart Agent 所安装的主机,按以下说明来安装、配置及开启相关代码插件。

1 、安装 Python 应用发现插件
根据 Web 容器类型安装应用发现插件,该插件可自动发现容器内的所有应用实例并生成应用拓扑图。
 如果直接使用的 Python Server ,可以直接跳过本步骤。
 如果 Web 容器为 Apache
请安装并配置 Apache 类型的应用发现插件 ApacheApp ,配置完成后开启插件。
 如果 Web 容器是 Nginx
请首先在插件的配置界面中选择安装 Nginx 类型的应用发现插件 NginxApp 。安装完成之后您还需要配置 Nginx 插件,与 Apache 不同的是,此时您需要在主机上手工编译,请参考安装目录中“./plugins/nginx_path/README ”文档。
2 、安装并开启 Python 代码监控插件 PythonCode
选择 PythonCode 插件安装并开启, SmartAgent 将自动下载插件至安装目录的 smart_agent/plugins 下。
默认会使用系统 Python 进行安装。修改 PythonAgent.sh 中 PythonCommand 值,可安装至系统中其他 Python 环境。
3 、重启 Web Server
安装开启 Python 代码监控插件后,可能需要您手动重启 web Server ( apache\httpd\Nginx\Python Server 等软件)。
4 、查看 Python 应用数据
配置完成后,大致两分钟后您就可以在“应用”模块中查看数据。

透视宝官网: www.toushibao.com ]]>
监控宝同类产品还有哪些?或者说竞争对手有哪些相近的产品 tag:www.v2ex.com,2015-09-21:/t/222375 2015-09-21T03:08:17Z 2016-03-11T22:04:23Z Chip member/Chip 公司有套系统,考虑做性能监控和 API 监控。目前只知道监控宝有这类产品,想对比一下其他家产品,是否功能更优或者服务更好。
大家有用过其他家服务的,都来帮忙推荐一下。

]]>
[干货] 解密监控宝 Docker 监控实现原理 tag:www.v2ex.com,2015-09-17:/t/221509 2015-09-17T09:27:35Z 2015-09-17T09:24:35Z cloudwise member/cloudwise
2015 年 9 月,企业级应用性能监控和管理服务商云智慧正式上线了 Docker 监控功能,能够实时监控 Docker 容器的 CPU 、内存、网络流量及 Swap 状态,让开发者和运维人员在使用 Docker 时清晰掌握其资源消耗状况。

作为国内首家实现 Docker 监控的 SaaS 厂商,监控宝 Docker 监控的技术原理是什么?相对国外的 Docker 监控产品有何优势?以下是此次分享的实录,请听 Neeke 细说端详:
1 、 Docker 监控概况
在云时代,仍有大量物理机直接支持服务,相较于虚拟技术来讲,这种方式已经落伍很多,于是各种开源容器技术大大推进了虚拟化技术的发展。
Docker 容器相较于其他容器技术来讲,是比较新的,而且发展最为迅速。原因不用多说,背后有老大哥谷歌撑腰。国内也已经兴起了几个以 Docker 为核心技术的创业公司,比如云智慧的合作伙伴数人、 DaoCloud ,都是前景非常赞的公司。
虽然这么火热,但关于 Docker 的运维一直是个痛点。
可以说,目前全球只有两家 APM 厂商提供了基于 SaaS 的 Docker 运维监控,其一是美国 APM 厂商 New Relic ,他们在 6 月下旬正式发布了 Docker 监控;另一家,则是中国 APM 厂商云智慧 CloudWise ,在继 New Relic 之后的 9 月 7 日,发布上线了 Docker 监控。从某种意义上讲, CloudWise 填补了国内 Docker 监控的 SaaS 服务空白。
2 、 Docker 监控的工作原理
大家都知道, CloudWise 在 APM 领域率先提出了端到端的一体化监控模型,并且在此模型上,发布了技术领先、便于部署和管理的 SmartAgent 软件架构。此次 Docker 监控的实现,也是基于 SmartAgent 的架构来完成的。
SmartAgent 以部署的快捷高效和智能化见长,整个部署过程中,用户在两分钟内便可完成。部署分为两部,首先下载、解压、启动数据发送代理 SendProxy 。 SendProxy 的作用是提供一个高效的本地数据接收队列与数据发送引擎,并且可以在局域网内进行分布式部署,使得不能上网的机器监控也可正常地通过 SendProxy 高效地传输到云智慧的 SaaS 平台。其次,下载、解压、启动 DockerAgent 。
DockerAgent 使用 Python 进行开发并完成编译,目前支持 Ubuntu 和 CentOS 。 DockerAgent 遵循了 SmartAgent 的插件规范,所以,无论监控宝或透视宝用户,都可以直接使用。
DockerAgent 有三个线程,分别是: DockerProcess \ DockerConfig \ DockerPing ,以及一个对象 Task 。三个线程各司其职,同时受 Task 对象控制。 Task 中核心属性是任务惟一标识、任务状态以及任务频率。这些属性由 DockerConfig 与 ClouwWise 云平台定时同步。
当任务状态正常时, DockerProcess 线程开始采集数据,并遵守频率规范。 DockerPing 负责心跳检测,定时产生心跳数据。这些数据,都由 DockerAgent 交由 SendProxy ,并由 SendProxy 存储进入队列,并异步地推送至 CloudWise 云平台。
前面聊到 DockerAgent 插件遵守了 SmartAgent 的插件规范,所以它像其他插件一样,包含了 bin 、 conf 、 lib 、 log 等目录,并存在一个启动脚本。该脚本提供了 start 、 stop 、 status 等命令。
以上是 DockerAgent 的介绍,后续 SmartAgent 的架构与插件规范将会陆续开源发布,届时热衷开源与监控的同学,都可以直接参与进来。
3 、 DockerAgent 数据采集原理
下面我们聊一下 DockerAgent 采集数据的原理。 DockerAgent 首先会使用 docker info 命令来获取 docker 系统信息,这些信息包含了非常有用的数据,如: Containers, Images, Name, CPUs, Data Space Used, Data Space Total, Total Memory 。
这些数据看似简单基础,但却可以解脱掉 Docker 运维同学每天重复 N 次的工作。其次会使用 docker version 来检测 docker 版本,目前我们的 DockerAgent 仅支持 1.15 以上的 Docker 版本。

然后,使用 dockerps 命令来取得容器的运行信息和容器 id ,容器 name ,此时便可获知在此台机器上正在运行的 docker 容器都有哪些。
最后,依次取得这些 docker 容器的性能指标。取得性能指标的方式,有部分使用 docker 原生接口,有部分是运行云智慧自己的算法。其中包含容器与主机的系统时区 /时间;容器的 cpu 使用率(通过 cgroup/cpuacct 内该容器的 cpuacct.stat 取得);容器的 ip ;容器内运行的进程数;容器的内存指标, rss\cache\memory_limit\total_cwop 等(通过 cgroup/memory 内该容器的 memory.stat 取得);容器的网络指标(通过 ifconfig/ statistics 取得)。
DockerAgent 发布上线以后,在当天就接到了非常多热心用户的反馈。很多反馈非常好,我们也在积极地吸收和改进。为大家解决真正头疼的 Docker 运维、监控、管理问题。相信在很短的时间内,将迭代出更优秀、更稳定、更符合用户预期的 DockerAgent ,以此不仅填补国内的 Docker 监控空白,更会真正成为众多 Docker 用户、企业的伙伴,为大家解决真正头疼的 Docker 运维、监控问题。
问:咱们和 datadog 之类 docker 监控有啥区别和优势?
答: DataDog 的安装部署太过繁琐。当时尝试时用了一下午才跑出来数据。 DataDog 的图表定义比较自由,这点是比较好的;而我们的 Docker 监控最大的优势,就是零基础部署。另外, DataDog 太贵,好像一个 Agent 要接近 100 人民币吧。目前 CloudWise 的 DockerAgent 完全免费。
问:刚才说 docherconfig 是定时与云平台同步,同步的是 docker process 和 docker ping 采集到的数据吗?
答:不是同步采集到的数据,是同步配置。
问:我看讲的是通过 sendproxy 异步到云平台的啊,那么 dockerconfing 的作用是什么?
答: DockerConfig 是定时从云平台取得配置信息,采集到的数据,是由 DockerProcess 与 DockerPing 自行交由 SendProxy 。同步的数据其实就是 Task 的属性,比如任务名、任务频率、任务状态。
问:采集数据原理是先 ps 命令机器上那些 docker 容器,再去用 docker info 获得他们的指标吗?
答: dockerinfo 是返回当前机器上整体的 docker 指标,然后 ps 取得活着的 docker 容器,依次取它们各自的指标。
问:那包括了 ps 命令出的 docker 吗? ps 直接就取了吗?这么说 ps 不仅仅是获取那些活的 docker 容器,还包括他们指标?
答: ps 取不到指标,取得的是活的容器并列举;然后用其他的方法取它们的指标。容器名字也是 ps 时列举时一起取得的。
以上是 Neeke 就监控宝 Docker 监控的实现原理进行的分享,大家可以注册监控宝进行免费试用,有任何问题或需求请与我们联系。

监控宝官网: www.jiankongbao.com ]]>
干货 | Docker 文件系统的分层与隔离 tag:www.v2ex.com,2015-09-14:/t/220603 2015-09-14T07:41:04Z 2015-09-14T07:38:04Z cloudwise member/cloudwise
现在就开始今天的分享~
M 老师: docker 的很多特性都表现在它所使用的文件系统上,比如大家都知道 docker 的文件系统是分层的,所以它可以快速迭代,可以回滚。这个回滚机制跟 github 很像,每次提交的时候都会有一个 id , 回滚就是跟据这个 id 来操作的。

M 老师: docker 所支持的文件系统有以下几种: Aufs 、 devicemapper 、 btrfs 和 Vfs ,其中前三种是联合文件系统,可以支持分层, VFS 不支持。平时用的最多的是 aufs 和 devicemapper 。

M 老师:先介绍一下 Aufs , Aufs (advanced multi layered unification filesystem ), 直译过来就是高级分层联合文件系统,做为一种 Union FS ,它支持将不同的目录挂载到同一个虚拟文件系统下。

M 老师:这个怎么理解呢,通过一条命令我们来看一下:

mount -t aufs -o br=/tmp/dir1=ro:/tmp/dir2=rw none /tmp/newfs

M 老师:大家有条件的可以一起做下实验,方便理解,-o 指定 mount 传递给文件系统的参数; br 指定需要挂载的文件夹,这里包括 dir1 和 dir2 ; ro/rw 指定文件的权限只读和可读写; none 这里是挂载的设备,而没有设备用 none 表示。

M 老师:为什么要有只读和可读写两种呢,因为 docker 在启动容器的时候就会用到这两种,而上面这个例子是模拟这个 docker 文件系统模型。

问:启动 docker 的时候,对硬盘使用只读,意义在于什么?

答:这个问题很好,一个 image 可以启动多个 container ,这时候会有一个问题,如果每个 container 对大家共有的部分都有可写的权限,就会出问题。所以 docker 启动的时候会加载镜像的文件系统那层是只读的,然后每个 contianer 获取自己的可读写的层,如果 container 要修改只读层的文件,那么该文件就会从只读层提取到读写层。只读层的文件就被读写层的文件覆盖了,但只读层的那个文件依然存在 这个就实现了文件系统上的隔离。

问:就像我们写程序抵触共享的东西不变,只是利用这个共性来底层共享?

答:是的。

问:加那个 none 是干什么用的?

答: none 这里没有设备,用 none 表示,其实是没有意义的。但命令要求要有一个设备,这条命令中设备是 none

问:这个命令是在容器里执行的吗?还是在宿主机?

答:容器。

M 老师:继续咱们的分享,刚才实验的结果是什么样子呢,就是把 /tmp/dir1 和 /tmp/dir2 合并之后挂载到 /tmp/newfs ,如果这时在 /tmp/dir1 下创建一个文件 a ,/tmp/dir2 下创建一个文件 b 则 在 /tmp/newfs 会看到 a,b 这两个文件,这就是联合,并且 a 文件是只读的。

M 老师:如果有相同的文件则以先挂载的为准,后面挂载的操作会被忽略掉。大家可以想像一下,我每做一次操作都相当于去挂载一个新的目录,这样所有的操作就保存下来了。当然实际情况并不是每次操作都去挂载。当 container 发生改变的时候,并且我提交 commit 才会重新挂载一层。

问:比如 mkdir test 这也算是重新挂载了一层?

答: docker 有一个命令 docker commit ,执行这个的时候会重新挂载一层。

M 老师: 可能还会有一些不理解,下面用实际的 docker 镜像来举个例子。大家启动一个 container 之后,执行 docker save ,可以把 container 保存成镜像。

例如:

docker save

cloud_jiankongbao:01.tar

cloud_jiankongbao:01

其中 cloud_jiankongbao:01.tar 是镜像的名字,后面的 cloud_jiankongbao:01 是这个 container 的 ID ,可以看到,保存下来的是 tar 包。 不是.iso 文件^_^

M 老师:镜像解压之后是什么呢,我们来看一下:

ls .

a005304e4e74c1541988d3d1abb170e338c1d45daee7151f8e82f8460634d329

d9bde94c518a16a886514758b6b4431200145ecd58e30c5633ac3c0256544d77

f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639

fb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f

里面有四个目录,其实分别是 4 个 docker 的 ID ,每次使用 docker commit 提交对 docker 的修改之后就会产生一个新的 id ,就是通过这个 ID 实现对镜像的回滚。

M 老师:这 4 个目录之间是有关系的。这个关系可以通过 docker image --tree 来查看。

docker images --tree

└─f1b10cd84249 Virtual Size: 0 B

└─fb9cc58bde0c Virtual Size: 203.1 MB

└─a005304e4e74 Virtual Size: 203.1 MB

└─d9bde94c518a Virtual Size: 1.957 GB Tags: cloud_jiankongbao:01

M 老师:每个目录下有 json layer.tar VERSION 这三个文件,我们现在只研究他们的结构,所以只看 layer.tar 这个文件。

M 老师:我们到一个目录下把 layer.tar 解压一下

dfb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f;tar -xflayer.tar;ls

ls fb9cc58bde0c0a8fe53e6fdd23898e45041783f2d7869d939d7364f5777fde6f/

binetcjsonliblost+foundmntprocsbinsrvtmpvar

devhomelayer.tar lib64 mediaopt root selinux sys usr VERSION

问:为什么会提交四次?

答:提交 4 次是我们自己提交的.

M 老师:在使用 docker 的过程中我们需要保存自己的修改, docker commit 执行完之后就把 container 中的内容回写到镜像中了,就相当于加了一层文件系统,每次提交后就生成了一个新的镜像。 4 个 ID 是 4 次提交的镜像的 ID ,这 4 个 ID 其实相当于一个镜像的 4 个 tag 。我们再看一下 4 个镜像 ID 的系统:

f1b10cd84249 这个镜像是初始镜像,大小为 0




fb9cc58bde0c 这个镜像是在 f1b10cd84249 基础上创建新的镜像;

a005304e4e74 是以 fb9cc58bde0c 为基础创建新的镜像,是树状继承的关系;

M 老师:我们再看一下不同 ID 目录下的 bin 目录。

ls a005304e4e74c1541988d3d1abb170e338c1d45daee7151f8e82f8460634d329/bin/

gtar tar




a005304e4e74 只有两个文件, fb9cc58bde0c 包括了大部分 bin 下的文件,对应的场景是 fb9cc58bde0c ,是装好操作系统, 然后我又装了 tar 这个工具。 docker commit 提交之后,就是 a005304e4e 。

问:可以认为 fb9cc58bde0c 是一个最小化的 OS

答:可以这么理解。

M 老师:最后简单说一下 devicemapper ,回到最开始说的, docker 支持多种文件系统。 devicemapper 是利用了 Snapshot 和 Thinly-Provisioned Snapshot 两种原理,将多个快照挂在同一个卷下从而实现文件系统的分层。这里的快照技术其实就是 vm 中的快照。

M 老师:刚才说的 autofs 是将不同的目录挂到一个虚拟目录, devicemapper 就是把多个快照挂载到同一个卷下,不过使用 devicemapper 的话,一个 container 的大小最大只能是 10G ,启动 docker daemon 时用参数-s 指定:

docker -d -s devicemapper

M 老师:当容器基于镜像启动之后,每个容器都会获得自己的写读可写的文件系统层。原镜像的那部分文件系统是只读的,从而实现每个容器的在文件系统上的隔离。

问: autofs 最大一个 container 是多大?

答:没有限制,直到物理服务器没有资源,但通常不会将数据库和 LOG 保存在镜像中,所以也不会写的太大,因为 docker 本身是轻量级的。

M 老师:平时大家都在说 dokcer 是弱隔离的,因为他没有隔离的很彻底,比如内核是跟大家共用的,跟宿主机共用同一个内核。 SELinux 、 Cgroups 以及 /sys 、/proc/sys 、/dev/sd*等目录下的资源是与宿主机共用的。如果要隔离的彻底那就是 VM 了,而且如果 dockers 要想实现这些隔离就必然要牺牲一下现在轻量级的特性。

M 老师:好吧,今天的分享就到这里了,谢谢大家! ]]>
监控宝惹火 Docker 监控,开放试用中 tag:www.v2ex.com,2015-09-10:/t/219704 2015-09-10T08:25:19Z 2015-09-11T10:13:21Z cloudwise member/cloudwise 要说这两年最火爆的技术有哪些, Docker 绝对是其中之一。
有人说, Docker 缺少必要的运维监控工具,实践起来有难度。
幸福来的太快了
云智慧旗下产品监控宝又惹火了,推出重量级新功能—— Docker 监控。为您提供可靠、灵活、实时的运维监控服务。

详细的性能信息呈现
全面掌握容器从开启、暂停、重启到销毁全过程中,每项指标的详细情况。全程自动监测 Docker 指标,自动关联监控任务,自动生成数据图表。让您在使用 Docker 时清晰掌握其资源消耗状况。
存活数量、崩溃事件、 CPU 使用率、内存使用量、磁盘使用量、网络流量及 Swap 状态

部署简单
只需要将 Docker 监控采集器下载安装到主机,即可在监控任务中查看对应的 Docker 监控数据。

全渠道告警(即将上线)
自定义告警阈值, Email 、短信、微信、语音、 APP 推送等全渠道告警方式,第一时间发现业务性能问题。

2015 年 12 月 31 日之前,向所有 Docker 爱好者、技术人员免费开放。
马上试用: www.jiankongbao.com

]]>
全球顶级应用性能监控管理服务商分析 tag:www.v2ex.com,2015-09-06:/t/218509 2015-09-06T02:35:53Z 2015-09-06T02:32:53Z cloudwise member/cloudwise
]]>
云智慧首席架构师-从西直门立交桥谈 IT 架构与重构 tag:www.v2ex.com,2015-08-25:/t/215790 2015-08-25T03:21:03Z 2015-08-25T03:18:03Z cloudwise member/cloudwise 大家好,我是 Neeke ,中文名高驰涛, PHP 开发组成员,现在云智慧担任高级架构师,负责公司产品的架构与研发工作。目前云智慧旗下有两款产品,监控宝与透视宝。前者主要做骨干网监控和 IT 基础设施监控,后者主要做面向业务、端到端的一体化 APM 解决方案。
附上分享者的个人简介:高驰涛( Neeke ),云智慧高级架构师, PHP 开发组成员,同时也是 PECL/SeasLog 的作者。 8 年研发管理经验,早期从事大规模企业信息化研发架构, 09 年涉足互联网数字营销领域并深入研究架构与性能优化。 2014 年加入云智慧,致力于 APM 产品的架构与研发。崇尚敏捷,高效, GettingReal 。

今天主要跟大家分享的,是近几年来我在网站、应用、信息系统等方面,架构与重构的一些经验与心得。
架构,在普通技术人员眼里,是一个貌似很神秘的职业,感觉就像一群神秘武者,在从事着一些很神秘的工作,用一些貌似很深、很奇的东西,来让一些看似腐朽的项目或应用,产生一些微妙的变化。
而对于重构,相对于架构来说,则更加的隐忍、更加让人难以捉摸。让我们从一张图片开始。

没错,这张很美的夜景,是北京,西直门立交桥。它是我国立交桥建筑史上的一座里程碑。
但同时,它也是一朵奇葩。
大家注意看,左下角向右上角,方向是自西向东的,如果我要从左下,到右下,也就是自西向南行驶,大家觉得,应该怎么走?不卖关子,直接看答案吧。

绿色的线路是我们期望的行驶路线,而黄色线路,才是现实中的行驶路线。 也就是我们需要从西向东下桥,然后自南向北上桥,然后自东向西再下桥,然后自北向南,到达我们的方向。不是北京的司机,想从桥上下来,是很困难的。其实很多北京司机,也会在这里晕掉。但是,它却是一个非常棒的设计。
为什么这样讲?
OK ,我们来分析一下这座立交桥的用户,或受众。
很明显,对于这座桥,最容易想到的,有两个用户:行驶中的司机、指挥的交警。对于行驶中的司机来讲,这明显不是一个优秀的设计:
1 、不直接、容易晕菜;
2 、哪个弯没转对,很难再回到原来的道路;
3 、不可控制。
但对于交警(或交管部门)来讲,这明显是一个非常优秀的设计:
1 、这里不需要交警,也不需要红路灯,节省了资源;
2 、由于全是单行道,不必掉头和对流,降低了事故率。
当然,立交桥的设计者,也就是这次实例的架构者。
关于架构,这是我想分享的一个点:
优秀的架构,大多数是与业务无关的,如果从业务的角度来完成一次架构,很容易失败。
我们再来看另外一个图片:

照片上是一座危楼。(照片上的帅哥不认识..)楼与旁边的院墙,明显已经破败不堪。用很多大小粗细不一的木棍或支柱在做支撑。很多网站或应用,其实就像这座危楼,虽然已经破败不堪,但仍然有很多业务在里面持续地服务着,就像依然有很多居民会在里面居住。他们无奈、疲惫、很不开心,但有新需求产生时,仍然可能要增加更多的棍子或支柱,来支撑这座危楼。当网站或应用,已经到了让开发者、运营者、运维者,感觉无奈、疲惫时,重构的时机到来了。
架构师在对应用进行重构时,首先要考虑哪些点呢?
首先,不应该是对网站结构进行重新构建、把很多功能更优秀、更牛逼的组件加入进来吗?
我要分享的是,在进行一次重构之前,千万不要这么想。
脑子不能热,我们不是在钢铁侠,可以一手托起一座城市。
我们也不是极客,牛逼、优秀的组件,就算能掌控得了,也不能组合得好。
在重构时,着先要考虑的,是旧楼里的居民。也就是旧应用中的业务。
原因是:
1 、如果不考虑旧业务,而进行重构,跟一个新项目有什么区别呢?
2 、旧业务在不停地迭代,如果要做新的架构,什么时候可以追得上来业务?
从我成功进行重构了几个巨型应用项目的经验来看,我的做法不一定是正确的,但却是切切实实可行的:
1 、 这座危楼已经有了非常多支撑点( bug 、业务补丁、流程补丁),而让项目的迭代和维护举步维艰,那么应该先找这些支撑点进行分析,把相近的支撑点进行分组和整合
2 、将这些已经梳理好的支撑点,一组一组进行隔离(把业务解藕、把连带风险降低)
3 、把已经进行隔离好的支撑点,一个一个拿来进行深度解析(分清流程、层次、与关键点)
4 、将支持点进行规范化的重构与替换(逐个重构,最终完成基础结构的重构)
形象一点讲:
重造一座优秀的建筑,是很完美的,但会让所有人都更加疲惫;
而将一座危楼的破旧部分作为基石,把它有机制地打碎重组,最终成为新建筑最牢固的地基,一次重构才是成功的。
OK , 以上是今晚我的分享,关于架构与重构的心得,下面是交流时间,请大家提问:
互动讨论:
问:我认为架构必须考虑业务?否则很容易出现过度设计或者设计缺失
答:业务是应该要考虑的。但也不能过多了考虑,因为很可能会成为定制,而导致后期的不可扩展。
问:个人觉得架构和业务的关系很大,为什么说无关?
答:我认为的是,架构,是从业务开始,但最终决定架构的,其实是与业务无关的部分。
问:软件开发有句话很著名,就是没有银弹,考虑业务是为了弹性和扩展,并不会限制,重构的开始,可以从 82 法则开始。先找出那 20%影响 80%的地方
答:业务总是有着这样那样的条件,而这些条件,如果一旦成为架构的决定部分,则容易丢失架构原本的意图。
问:在业务与非业务之间,确实不好拿捏
答:嗯。有过这样一句话:架构靠业务,重构重功力。我非常认同后半句。
问:在架构领域里面,其实是分企业架构和技术架构的。我想你想更多的表达纯粹的技术架构。但是,其实,技术架构还是会被业务影响的,而且有时候影响很大
答:是的。我讲的是技术架构,不是业务架构。
问:可否举个印象最深的参与的客户重架构的例子,最大挑战,和如何梳理如何解决的
答:具体哪个企业就不提名了啊。 由于历史原因(人员、时间等),一个项目非常快地成功起来了,而且每年稳定盈收 3 亿元以上,但所有研发人员与运维人员早已不堪重负。代码结构混乱、耦合过重,我切实读过其中的一些结构和逻辑,一坨一坨,牵一发动全身,任何一个小的 bug ,都会搞一周才能 fix 甚至更久。项目到后来无法维护,业务更不能满足。 最后,在我的建议和带领下,研发部门组建了重构组,由两名架构师、一名安全顾问、一名数据顾问和 N 名程序员组成。首先梳理项目中的资源蓝图、结构蓝图、流程蓝图,然后选中其中一个最不起眼的流程,隔离层块与资源,然后对它进行深度的分析,找到症结点,并使用新的架构进行 SOA ,最终完成了这一个模块。然后历经数个模块的重构。整个项目脱胎换骨。
问:一个架构下 有 2 的 n 次方可以交叉选择的方案 如何多变量求解
答:在众多交叉选择的方案中,如果能选出一个离业务最相近,同时有随时可“掉头”可能性的方案,那就选择它; 如果仍然有多个方案,那么做好充分的准备,然后选最轻量的那个方案开始快速试错。
问:重构时模式用的多吗
答:嗯,模式不可或缺会使用,但目的一定要明确。资源、代码、流程,都会有很多模式可重用,这些模式的使用者和受益者,都是人,管理者、开发者、运维运营者,因此,对人友好是首要的。
问:这期间你需要了解业务,梳理业务流程吗?
答:无论架构或重构,对业务都是需要充分理解的。
问:重构分布式系统,往往牵扯太多,感觉需要及时重构
答:嗯,分布式系统是最难把控的。可以使用一些工具或服务来充分了解自己的系统。说一下,透视宝可以完成这个事情。

Neeke 分享过后,收到一片赞声,瞬间收获很多粉丝,现场气氛很是热闹。

云智慧官网: www.cloudwise.com ]]>
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86