专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
51好读  ›  专栏  ›  运维帮

AIOps 平台的误解,挑战及建议

运维帮  · 公众号  · 运维  · 2019-01-02 16:49

正文

请到「今天看啥」查看全文


Gartner 这里提及到了四种数据,Log Data, Wire Data, Metirc data,Document text。 这样的分类,我是个人持有保留意见,感觉很奇怪,特别是 Document text 的那块,需要用到NLP,主要是用于打通ITSM 产品,分析ITSM 工单。我对这个场景存在必要性,以及实现的ROI 表示怀疑。具体原因我可能稍后会写一篇文章,进行更详细的解释。

我认为,如果从宏观的类型来划分,应该这样划分 (下含部分我司产品介绍)

机器数据(Machine Data) 是IT系统自己产生的数据,包括客户端、服务器、网络设备、安全设备、应用程序、传感器产生的日志,及 SNMP、WMI,监控脚本等时间序列事件数据(含CPU 内存变化的程度),这些数据都带有时间戳。这里要强调, Machine Data 不等于Log Data ,因为指标数据包含。在通常的业界实践中,这些数据通常通过运行在主机上的一个Agent程序,如LogStash, File beat,Zabbix agent 等获得,如果我们的LogInsight,Server Insight 产品,就是面向此类型数据。

网络数据(Wire Data): 系统之间2~7层网络通信协议的数据,可通过网络端口镜像流量,进行深度包检测 DPI(Deep Packet Inspection)、包头取样 Netflow 等技术分析。一个10Gbps端口一天产生的数据可达100TB,包含的信息非常多,但一些性能、安全、业务分析的数据未必通过网络传输,一些事件的发生也未被触发网络通信,从而无法获得。我司的Network Insight 主要面向的是这些数据,提供关键应用的 7 x 24 小时全方位视图。

代理数据(Agent Data): 是在 .NET、PHP、Java 字节码里插入代理程序,从字节码里统计函数调用、堆栈使用等信息,从而进行代码级别的监控。我司的Application Insight主要是解决这个问题而诞生,能获得真正用户体验数据以及应用性能指标。

探针数据(Probe Data) 也就是所谓的拨测,是模拟用户请求,对系统进行检测获得的数据,如 ICMP ping、HTTP GET等,能够从不同地点模拟客户端发起,进行包括网络和服务器的端到端全路径检测,及时发现问题。 我司的Cloud Test,Cloud Performance Test 主要是产出这些数据的,CT的产品能从遍布全球的拨测点,对网站的可用性进行全天候的分布式监控。其中我们的CPT 给你带来从数百到数百万完全弹性的压力测试能力,获得应用在高压力的情况下的性能表现情况。

因为IT 监控技术发展实在是太庞杂,以上的划分不一定对,但是应该没有显著的遗漏。

但如果从微观技术的角度来看,不考虑数据的来源,只考虑数据本身的属性特点,我们可以这样划分:

指标数据( Metrics Data )

描述具体某个对象某个时间点这个就不用多说了, CPU 百分比等等,指标数据等等

日志数据 ( Logging Data )

描述某个对象的是离散的事情,例如有个应用出错,抛出了NullPointerExcepction,个人认为Logging Data 大约等同于 Event Data,所以告警信息在我认为,也是一种Logging Data。

调用链数据( Tracing Data ):

Tracing Data这词貌似现在还没有一个权威的翻译范式,有人翻译成跟踪数据,有人翻译成调用数据,我尽量用Tracing 这个词。 Tracing的特点就是,它在单次请求的范围内,处理信息。 任何的数据、元数据信息都被绑定到系统中的单个事务上。 例如:一次调用远程服务的RPC执行过程;一次实际的SQL查询语句;一次HTTP请求的业务性ID。 通过对Tracing 信息进行还原,我们可以得到调用链 Call Chain 调用链,或者是 Call Tree 调用数。

官方OpenTracing 中的Call Tree例子。

在实践的过程中,很多的日志,都会有流水号,Trace ID, span ID, ChildOf, FollowsFrom 等相关的信息,如果通过技术手段,将其串联在一起,也可以将这些日志视为Tracing 。

Tracing信息越来越被重视,因为在一个分布式环境中,进行故障定位,Tracing Data 是必不可少的。

由于Tracing 相对于Logging 以及 Metircs 相对比较复杂一点,想深入了解的话,可以参考 :

《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》 bigbully.github.io/Dapp /

Opentracing 的技术规范文档 github.com/opentracing/ 如果我们将以上数据类型做成一个矩阵看看,我们可以得到这样一个表格,比较好的说清楚了相关关系。

举例就是,我们的Server Insight 基础监控产品,能采集及处理指标数据,及日志,但是基础监控产品,不会处理Tracing Data,而我们的Application Insight 产品能从JVM 虚拟机中,通过插码,获得应用的响应时间(Metris),Java异常( Logging ),应用间的调用拓扑关系,以及调用的响应时间(Tracing)。








请到「今天看啥」查看全文