IT运维平台算法背后的两大“神助攻”

IT运维平台算法背后的两大“神助攻”,第1张

初中物理公式一览表

物 理 量 主 要 公 式 主要单位

长度(L) (1) 用刻度尺测(2)路程 (3) 力的方向上通过的距离:s= (4) 力臂 = (5)液体深度

(6)物体厚度h= a= Km 、m、dm、cm 、mm等

1km=1000m

1m=100cm

面积(S) (1) 面积公式 S=ab S=a2 S=πR2 = πD2

(2) 体积公式 (3) 压强公式  1m2=102dm2

1dm2=102cm2

1cm2=102mm2

体积(V) (1) 数学公式V正=a3 V长=Sh=abh V柱=Sh V球= πR3 (2) 密度公式(3)用量筒或量杯V=V2-V1 (4) 阿基米德原理 浸没时V=V排=F浮/ρ液g部分露出时V排=V物-V露 1m3=103dm3

1dm3=103cm3

1cm3=103mm3

时间(t) (1)速度定义 (2)功率(3)用钟表测量 1h=60min

1min=60s

速度( ) (1) (2)则 1m/s=36km/h

质量(m) (1)重力公式(2)功的公式 

(3)密度公式(4)用天平测量 1t=1000kg

1kg=1000g

1g=1000mg

密度(ρ) (1) 有 (2)压强公式 (3)阿基米德原理F浮=ρ液gV排 则ρ液= 1g/cm3=1000

kg/m3

合力(F) (1)同方向F=F1+F2 (2)反方向F= F1-F2(F1>F2) N

压强(p) (1) (适用于一切固体和液体)(2) 适用于一切液体和侧面与底面垂直的固体(长方体、正方体、圆柱体) 1Pa=1N/m2

浮力(F浮) (1) 称重法 F浮=G-F示 (2) 压力差法F浮=F向上-F向下 

(3) 阿基米德原理法F浮=ρ液gV排 (4) 漂浮或悬浮法F浮=G

动力、阻力  则  与 单位相同即可

功(W) (1)定义W=Fs 重力做功W=Gh=mgh 摩擦力做功W=fs

(2)总功W总=F动s  W总=W有+W额

有用功=Gh W有=W总-W额

(3)η= W有=ηW总W总= (4) W=Pt 1J=1Nm

=1ws

机械效率(η) (1)η= =

(2) η= =

(3) 对于滑轮组 η= (n为在动滑轮上的绳子股数)

(4) η= = 由于有用功总小于总功,所以η总小于1

拉力(F) (1)不计动滑轮和绳重及摩擦时,F= (2)不计绳重及摩擦时 (3)一般用 (n为在动滑轮上的绳子股数)(4)物体匀速运动,一般F=f (f 一般为摩擦力)

功率(P) (1)P= (2) P= = (3)从机器的铭牌上读出 1w=1J/s

=1Nm/s

比热(c) (1) Q吸=cm(t-t0) Q放=cm(t0-t) 可统一为Q=cm△t

(2) Q放=qm(q为J/kg m用kg)

(3) Q放=qV (q为J/ m3  V用m3)

(4) 不计热量的损失时 Q吸=Q放(热平衡方程)

C的单位为

J/(Kg℃),水的比热为42×103J/(Kg ℃)物理意义为1kg水温度升高1℃吸收的热量为42×103J

电荷量(Q) (1)定义则Q=It (2) W=UIt=UQ 则Q= (Q为电荷量) Q的单位为C

电流(I) (1) 定义  (Q为电荷量)(2)

(3)W=UIt 则

(4)P=UI 则 (P为电功率)

(5) 焦耳定律Q=I2Rt 则

(6) 纯电阻电路W=UIt=I2Rt 则

(7)P=UI=I2R 则

(8)串联:I=I1=I2 并联:I=I1+I2 (9)从电流表上读出 1A=1000mA

电压(U) (1) (Q为电荷量)(2)U=IR (3)(4)

(5)焦耳定律 (Q为产生的热量) 则 (6 )串联:U=U1+U2 并联:U=U1=U2

(7)从电压表上读出 1KV=1000V,

1V=1000mV。家庭电路为220V,对人体的安全电压不超过36V

电阻(R) (1) (伏安法测电阻的原理)(2)W=UIt=I2Rt=

(3)

(4)焦耳定律Q=I2Rt 则 (Q为产生的热量)

(5)串联:R=R1+R2 则R1=R-R2  R2=R-R1

(6)并联:(7)从欧姆表上读出或从铭牌上读出如滑动变阻器上的“10Ω 1A”等字样。 1Ω=1V/A

1MΩ=106Ω

1KΩ=103Ω

电功(W) (1) W=UIt=UQ(Q为电荷量)(2)W=Q=

(3)P= 则W=(4)当无热量损失时W=Q=

(5)从电能表上读出(其单位为KWh) 国际单位为J,电能表上常用单位为KWh

1KWh=36×106J

电功率(P) (1) (2) P= (3)从用电器上读出 1Kw=1000w

1马力=735w

电热(Q) (1) 当不计热量损失时,Q=W=

(2)热平衡方程Q吸=Q放 其单位为J

通电时间(t) (1) (Q为电荷量) (2)W=UIt 则

(3) P= 则(4)Q=则

祝同学们在中考中取得优异的成绩!

Q=It,其中Q是流过截面的电量,I是电路中的电流强度,t是流过这些电量Q所用的时间。

I在数值上等于单位时间内流过某截面的电量。

W=UIt,其中W是指电流所做的功,简称电功,U是该电路两端的电压,I、t的含义与上面一样。

库仑它是为纪念法国物理学家库仑而命名的。若导线中载有1安培的稳恒电流,则在1秒内通过导线横截面积的电量为1库仑。

库仑不是国际标准单位,而是国际标准导出单位。一个电子所带负电荷量库仑(元电荷),也就是说1库仑相当于624146×1018个电子所带的电荷总量。最小电荷叫元电荷。

智能运维(AIops)是目前 IT 运维领域最火热的词汇,全称是 Algorithmic IT operations platforms,正规翻译是『基于算法的 IT 运维平台』,直观可见算法是智能运维的核心要素之一。

本文主要谈算法对运维的作用,涉及异常检测和归因分析两方面,围绕运维系统Kale 中 skyline、Oculus 模块、Opprentice 系统、Granger causality(格兰杰因果关系)、FastDTW 算法等细节展开。

一、异常检测

异常检测,是运维工程师们最先可能接触的地方了。毕竟监控告警是所有运维工作的基础。设定告警阈值是一项耗时耗力的工作,需要运维人员在充分了解业务的前提下才能进行,还得考虑业务是不是平稳发展状态,否则一两周改动一次,运维工程师绝对是要发疯的。

如果能将这部分工作交给算法来解决,无疑是推翻一座大山。这件事情,机器学习当然可以做到。但是不用机器学习,基于数学统计的算法,同样可以,而且效果也不差。

异常检测之Skyline异常检测模块

2013年,Etsy 开源了一个内部的运维系统,叫 Kale。其中的 skyline 部分,就是做异常检测的模块, 它提供了 9 种异常检测算法 :

first_hour_average、

simple_stddev_from_moving_average、

stddev_from_moving_average、

mean_subtraction_cumulation、

least_squares

histogram_bins、

grubbs、

median_absolute_deviation、

Kolmogorov-Smirnov_test

简要的概括来说,这9种算法分为两类:

从正态分布入手:假设数据服从高斯分布,可以通过标准差来确定绝大多数数据点的区间;或者根据分布的直方图,落在过少直方里的数据就是异常;或者根据箱体图分析来避免造成长尾影响。

从样本校验入手:采用 Kolmogorov-Smirnov、Shapiro-Wilk、Lilliefor 等非参数校验方法。

这些都是统计学上的算法,而不是机器学习的事情。当然,Etsy 这个 Skyline 项目并不是异常检测的全部。

首先,这里只考虑了一个指标自己的状态,从纵向的时序角度做异常检测。而没有考虑业务的复杂性导致的横向异常。其次,提供了这么多种算法,到底一个指标在哪种算法下判断的更准?这又是一个很难判断的事情。

问题一: 实现上的抉择。同样的样本校验算法,可以用来对比一个指标的当前和历史情况,也可以用来对比多个指标里哪个跟别的指标不一样。

问题二: Skyline 其实自己采用了一种特别朴实和简单的办法来做补充——9 个算法每人一票,投票达到阈值就算数。至于这个阈值,一般算 6 或者 7 这样,即占到大多数即可。

异常检测之Opprentice系统

作为对比,面对相同的问题,百度 SRE 的智能运维是怎么处理的。在去年的 APMcon 上,百度工程师描述 Opprentice 系统的主要思想时,用了这么一张图:

Opprentice 系统的主体流程为:

KPI 数据经过各式 detector 计算得到每个点的诸多 feature;

通过专门的交互工具,由运维人员标记 KPI 数据的异常时间段;

采用随机森林算法做异常分类。

其中 detector 有14种异常检测算法,如下图:

我们可以看到其中很多算法在 Etsy 的 Skyline 里同样存在。不过,为避免给这么多算法调配参数,直接采用的办法是:每个参数的取值范围均等分一下——反正随机森林不要求什么特征工程。如,用 holt-winters 做为一类 detector。holt-winters 有α,β,γ 三个参数,取值范围都是 [0, 1]。那么它就采样为 (02, 04, 06, 08),也就是 4 3 = 64 个可能。那么每个点就此得到  64  个特征值。

异常检测之

Opprentice 系统与 Skyline 很相似

Opprentice 系统整个流程跟 skyline 的思想相似之处在于先通过不同的统计学上的算法来尝试发现异常,然后通过一个多数同意的方式/算法来确定最终的判定结果。

只不过这里百度采用了一个随机森林的算法,来更靠谱一点的投票。而 Etsy 呢?在 skyline 开源几个月后,他们内部又实现了新版本,叫 Thyme。利用了小波分解、傅里叶变换、Mann-whitney 检测等等技术。

另外,社区在 Skyline 上同样做了后续更新,Earthgecko 利用 Tsfresh 模块来提取时序数据的特征值,以此做多时序之间的异常检测。我们可以看到,后续发展的两种 Skyline,依然都没有使用机器学习,而是进一步深度挖掘和调整时序相关的统计学算法。

开源社区除了 Etsy,还有诸多巨头也开源过各式其他的时序异常检测算法库,大多是在 2015 年开始的。列举如下:

Yahoo! 在去年开源的 egads 库。(Java)

Twitter 在去年开源的 anomalydetection 库。(R)

Netflix 在 2015 年开源的 Surus 库。(Pig,基于PCA)

其中 Twitter 这个库还被 port 到 Python 社区,有兴趣的读者也可以试试。

二、归因分析

归因分析是运维工作的下一大块内容,就是收到报警以后的排障。对于简单故障,应对方案一般也很简单,采用 service restart engineering~ 但是在大规模 IT 环境下,通常一个故障会触发或导致大面积的告警发生。如果能从大面积的告警中,找到最紧迫最要紧的那个,肯定能大大的缩短故障恢复时间(MTTR)。

这个故障定位的需求,通常被归类为根因分析(RCA,Root Cause Analysis)。当然,RCA 可不止故障定位一个用途,性能优化的过程通常也是 RCA 的一种。

归因分析之 Oculus 模块

和异常检测一样,做 RCA 同样是可以统计学和机器学习方法并行的~我们还是从统计学的角度开始。依然是 Etsy 的 kale 系统,其中除了做异常检测的 skyline 以外,还有另外一部分,叫 Oculus。而且在 Etsy 重构 kale 20 的时候,Oculus 被认为是10 最成功的部分,完整保留下来了。

Oculus 的思路,用一句话描述,就是:如果一个监控指标的时间趋势图走势,跟另一个监控指标的趋势图长得比较像,那它们很可能是被同一个根因影响的。那么,如果整体 IT 环境内的时间同步是可靠的,且监控指标的颗粒度比较细的情况下,我们就可能近似的推断:跟一个告警比较像的最早的那个监控指标,应该就是需要重点关注的根因了。

Oculus 截图如下:

这部分使用的 计算方式有两种:

欧式距离,就是不同时序数据,在相同时刻做对比。假如0分0秒,a和b相差1000,0分5秒,也相差1000,依次类推。

FastDTW,则加了一层偏移量,0分0秒的a和0分5秒的b相差1000,0分5秒的a和0分10秒的b也相差1000,依次类推。当然,算法在这个简单假设背后,是有很多降低计算复杂度的具体实现的,这里就不谈了。

唯一可惜的是 Etsy 当初实现 Oculus 是基于 ES 的 020 版本,后来该版本一直没有更新。现在停留在这么老版本的 ES 用户应该很少了。除了 Oculus,还有很多其他产品,采用不同的统计学原理,达到类似的效果。

归因分析之 Granger causality

Granger causality(格兰杰因果关系)是一种算法,简单来说它通过比较“已知上一时刻所有信息,这一时刻 X 的概率分布情况”和“已知上一时刻除 Y 以外的所有信息,这一时刻 X 的概率分布情况”,来判断 Y 对 X 是否存在因果关系。

可能有了解过一点机器学习信息的读者会很诧异了:不是说机器只能反应相关性,不能反应因果性的么?需要说明一下,这里的因果,是统计学意义上的因果,不是我们通常哲学意义上的因果。

统计学上的因果定义是:『在宇宙中所有其他事件的发生情况固定不变的条件下,如果一个事件 A 的发生与不发生对于另一个事件 B 的发生的概率有影响,并且这两个事件在时间上有先后顺序(A 前 B 后),那么我们便可以说 A 是 B 的原因。』

归因分析之皮尔逊系数

另一个常用的算法是皮尔逊系数。下图是某 ITOM 软件的实现:

我们可以看到,其主要元素和采用 FastDTW 算法的 Oculus 类似:correlation 表示相关性的评分、lead/lag 表示不同时序数据在时间轴上的偏移量。

皮尔逊系数在 R 语言里可以特别简单的做到。比如我们拿到同时间段的访问量和服务器 CPU 使用率:

然后运行如下命令:

acc_count<-scale(acc$acc_count,center=T,scale=T)

cpu<-scale(acc$cpuload5,center=T,scale=T)

cortest(acc_count,cpu)

可以看到如下结果输出:

对应的可视化图形如下:

这就说明网站数据访问量和 CPU 存在弱相关,同时从散点图上看两者为非线性关系。因此访问量上升不一定会真正影响 CPU 消耗。

其实 R 语言不太适合嵌入到现有的运维系统中。那这时候使用 Elasticsearch 的工程师就有福了。ES 在大家常用的 metric aggregation、bucket aggregation、pipeline aggregation 之外,还提供了一种 matrix aggregation,目前唯一支持的 matrix_stats 就是采用了皮尔逊系数的计算,接口文档见:

>

以上就是关于初中物理所有计算公式(文字+符号)还有各个量的单位,全部的内容,包括:初中物理所有计算公式(文字+符号)还有各个量的单位,、it图中的Q如何计算、IT运维平台算法背后的两大“神助攻”等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8778760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-21
下一篇 2023-04-21

发表评论

登录后才能评论

评论列表(0条)

保存