人工智能时代前沿技术社区

首页 > 人工智能 > 热点

算法驱动下的运维实践

随着AI的不断发展,各行各业都在逐渐的智能化,运维领域也不例外。尽管智能运维这个概念已经不算是新概念了,但是在算法驱动下的运维实践究竟是怎样的呢?

作者: | 2018-01-17 10:13:32 | 来源:

随着AI的不断发展,各行各业都在逐渐的智能化,运维领域也不例外。尽管智能运维这个概念已经不算是新概念了,但是在算法驱动下的运维实践究竟是怎样的呢?来自日志易的产品总监饶琛琳为我们做了解答。

饶琛琳,日志易产品总监,前微博SRE系统架构师,前人人网技术专家。《网站运维技术与实践》作者,《ELK Stack权威指南》(第一版、第二版)作者,《Puppet 3 Cookbook》译者,《Learning Puppet 4》译者。

1516155288701848.png 

饶琛琳

Gartner研究报告显示, 2019年,全球有25%的企业将搭建好自己的AIOps平台,而这个数字目前是不到5%。

基于算法的运维平台的作用

一、更灵活、更易用的访问和分析数据;

二、能分析过去散落在各组件中未利用上的业务数据和上下文;

三、快速的探索和实验平台,提供独特的洞擦力

从『系统组成』看AIOps架构,其中包括:

1、数据湖、

2、自动化系统、

3、记录系统、

4、交互系统

5、监控生态圈

监控系统: 硬件和虚拟平台的检测,管理服务质量;(StatsD, CollectD)

记录系统: 问题记录和知识库积累,并与CMDB关联;(Jira, GitLab)

自动化系统: 自动执行固化事件的解决脚本;(Puppet, Saltstack, Ansible)

交互系统: 降噪和实时分发信息到真正负责的人,以及一些早期检测和修复;(Nagios, Zabbix, Zenoss)

数据湖: 诊断、即时图表和仪表盘。保存你所有可能会用到的日志,用于深度分析。

我们不需要一个机器学习平台,我们需要机器学习的运用!

AppDynamics的2016年度总结中显示,目前各 APM 厂商在人工智能领域还处于尝试和探索阶段。主要利用人工智能和机器学习解决的用例包括以下方向:

商业智能(Business Intelligence)

异常检测(Anomaly Detection)

归因分析(Correlation & Root Cause Analysis)

智能警报(Intelligent Alerting)

未来预测(Forecasting & Prediction)

能力分配(Capacity Planning)

数据概要(Data Summarization)

自动化(Automation)

主动监控(Proactive Monitoring)

 图片2.png 

图片3.png

不同算法的预测表现示例

一、指数平滑

二、多层感知

三、线性回归

图片4.png 

IT环境下的时序预测

一、一个稳定的IT环境中,时序数据通常具有趋势性,甚至季节性。

二、人工分析选择模型,调节α,β,γ三个参数,工作量太大。

三、采用统计分析算法自动化调参过程:

1、扩展迪基-福勒检验(Augmented Dickey-Fuller test)检测时序的平稳性;

2、自相关函数(Autocorrelation Function)检测时序与自身滞后版本的相关性,由此得到周期数值;

3、赤池信息量准则(Akaike information criterion)确定最佳模型阶次;

4、下山单纯形法(Nelder-Mead simplex)获得最小的MSE,确定最佳参数。

图片5.png 

时序预测的开源选择

1Facebook在今年2月刚开源的Prophet库。(R/Python)

2RedHat2015年开源的hawkular项目。(Java)

3Elasticsearch在去年的pipeline aggregation(Java,基于holt-winters)

4RRDtool1997年实现的HWPREDICT(C,基于holt-winters)

异常检测----什么是异常?

一、偏离

二、数据分布变化

三、鲁棒性

datadog的异常检测

datadog提供4种异常检测方法可以选择:

1Basic: 对没有周期性、季节性的数据,直接采用四分位的方法计算置信区间。

2Agile: 针对季节性的数据,采用SARIMA算法,并着重强调近期数据对预测的影响。

3Robust: 针对季节性数据,采用趋势分解算法,更强调长期数据对预测的影响。对频繁发布的业务不合适。

4Adaptive: 针对季节性数据,但是对细节变动不敏感。容易漏异常。

异常检测的开源选择

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

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

3Netflix2015年开源的Surus库。(Pig,基于PCA)

4Etsy2013年开源的skyline库。(python)

5Numenta2013年开源的NuPIC库。(python,基于HTM)

6、德国海森堡大学在2005年开源的ELKI库。(Java,基于KNNKMean)

中大型企业中,通常都有几十个系统,上百个模块,几千个不同的日志文件。要运维人员了解全部日志的格式,配置解析规则,定义告警条件,是不可能完成的任务!——但是只采集不处理的日志≈不采集。

故障日志并非每天产生,尤其严重的故障日志,历史的关键字日志告警往往难以覆盖所有未知异常。我们需要用机器来解决这个复杂度问题。

日志文本 vs 自然语言文本

1、相比自然语言,日志格式的种类,其实是有限且固定的:如图,哪怕1kw日志,其实也就是4种;如果再模糊一点,就是2种。

图片6.png 

2、相比自然语言,日志格式中停用词的位置是固定且敏感的:punct是一种特别的日志格式分类方式。把文本聚类,降级成为punct聚合。

图片7.png 

聚类流程 

 图片8.png

图片9.png

使用DBScan算法进行日志聚类,有几个难题需要考虑:

1、运算时间较长,偏离线运行;

2、占用内存较多,大规模数据耗费较大;

3、聚类效果是否合适没有简易的判断方式。

图片10.png

图片11.png

图片12.png

图片13.png