书籍作者:彭冬 | ISBN:9787121346637 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:8737 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《智能运维:从0搭建大规模分布式AIOps系统》结合大企业的智能运维实践,全面完整地介绍智能运维的技术体系,让读者更加了解运维技术的现状和发展。同时,帮助运维工程师在一定程度上了解机器学习的常见算法模型,以及如何将它们应用到运维工作中。
《智能运维:从0搭建大规模分布式AIOps系统》共分4篇。第1篇运维发展史,重点阐述当前运维的发展现状及面临的技术挑战;第2篇智能运维基础设施,重点讲述大数据场景下的数据存储、大数据处理和分析的方法与经验,以及海量数据多维度多指标的处理分析技术;第3篇智能运维技术详解,重点关注在新时期大数据时代下智能化的运维技术,包括数据聚合与关联、数据异常点检测、故障诊断和分析、趋势预测算法;第4篇技术案例详解,为大家梳理了通过开源框架ELK快速构建智能监控系统的整体方案,还将分享微博平台和微博广告两个不同业务场景下智能监控系统的技术实践。
《智能运维:从0搭建大规模分布式AIOps系统》适合运维、开发、架构、DevOps工程师及广大互联网技术爱好者研读和借鉴。
彭冬:微博广告基础架构团队负责人、技术专家,商业大数据平台及智能监控平台发起人,目前负责广告核心引擎基础架构、Hubble智能监控系统、商业基础数据平台(D+)等基础设施建设。关注计算广告、大数据、人工智能、高可用系统架构设计、区块链等方向。在加入微博之前,曾就职于百度负责大数据平台建设,曾担任趣点科技联合创始人兼CTO等职位。毕业于西北工业大学,曾在国内外知名期刊发表多篇学术论文,拥有9项发明专利。
朱伟@kimi:微博广告SRE团队技术负责人,高级运维工程师,2016年4月加入微博,目前主要负责微博广告智能监控报警平台和服务治理等项目的建设与研究。
刘俊:微博平台部监控技术负责人,负责微博平台、PC微博大规模监控系统的建设,主要关注实时大数据、运维自动化、智能化方向。2014年加入微博,之前曾在新浪、搜狐等公司从事运维监控方面的工作。
王莉:University of Georgia硕士研究生,主要研究用机器学习方法,识别植物被水淹没的季节性规律,研究成果已发表在SCI高影响因子期刊。2017年加入微博广告团队,致力于用数据分析和机器学习模型,优化广告业务策略,洞悉商业价值。
陆松林:微博广告数据仓库负责人,高级研发工程师,先后就职于搜狐、爱奇艺,主要研究数据仓库、数据治理相关技术。
车亚强:微博广告大数据开发工程师,曾在百度外卖负责实时流、微服务相关研发工作,目前主要研究方向为实时流、微服务架构设计。
√ 直接来自新浪微博智能运维团队多年前瞻探索与生产实践,技术思路可落地,解决方案有说服力。
√ 面向运维热点方向,详细分析底层原理,全面梳理技术体系,完整呈现从方法创新到工具化实践。
√ 以微博监控为例,从运维平台大数据处理到架构设计原理,从运维工程师到自动化智能监控专家。
√ 有 AIOps 模型|算法,有异常检测|根因分析|时序预测等运维实践,完美结合工程架构与算法实践。
为什么要写这本书
中国互联网发展非常迅速,一方面得益于互联网基础设施的不断完善;另一方面得益于中国巨大的用户人群和消费市场。网络从PC到移动互联网时代过渡非常快,2017年微博用户中移动端占比已经达到92%,移动互联网的兴起带来了前所未有的新格局,围绕手机移动端的应用生态逐渐形成,大量PC时代的公司已经将产品的主战场转移到移动端。
据中国互联网络信息中心(CNNIC)发布的第41次《中国互联网络发展状况统计报告》,截至2017年12月,中国网民规模达到7.72亿,手机网民占比97.5%,手机支付用户规模增长迅速,达到5.27亿,网络直播用户规模达到4.22亿,中国拥有人工智能企业592家,占全球总数的23.3%。
互联网尤其是移动互联网的发展,也给企业带来了极大的技术挑战,如何保障线上产品各个服务和系统的稳定性、如何快速高效地诊断问题和定位问题等成为企业所面临的核心问题,而这些问题通过传统的运维方式已经无法有效得到解决。尤其是在大数据复杂场景下,对运维有了新的期待,也对运维有了更高的要求。
首先,系统产生的数据在很大程度上反映了系统状态和产品逻辑,监控系统需要具备快速搜集和处理数据的能力,能经过复杂的数据清洗并从大规模数据中抽取监控需要的指标,尤其是能对时序数据进行ETL及存储分析,将异构数据转化成监控系统能够理解的结构化数据。在这个阶段,如何保证数据的一致性和准确性、如何降低时延提高数据吞吐、如何降低监控系统对业务资源的影响等,都是在大数据环境下要解决的问题。
其次,监控系统要与报警系统融合,报警系统承载的是系统风险提示,对准确率要求很高,然而在现实环境下,大部分报警系统都存在报警项繁多、报警次数频繁、报警不准确等问题。
再次,智能化故障诊断、异常点检测、根因分析等是智能运维要解决的核心问题,然而智XII 智能运维:从 0 搭建大规模分布式 AIOps 系统
能化系统要建立在高效的平台化基础上,目前极大一部分公司还没有真正进入平台化阶段,这就为智能运维带来了极大的阻力。
最后,智能运维需要运维工程师具备一定的人工智能、机器学习及深度学习等算法和建模能力,然而就目前来讲,运维工程师在这方面的技能是比较欠缺的。
国内在智能运维技术上,百度、阿里巴巴、腾讯和微博都有相当程度的经验积累,也得益于这些企业的运维平台化的体系逐渐成熟,在跟这些团队交流的时候,大家都有一个共识,就是希望能将智能运维技术应用到运维的各个维度,也相信智能运维将彻底改变运维的现有体系,并将极大丰富和完善传统运维,提高运维效率。
目前市面上与运维相关的书籍更多的是介绍某个单一技术的运维方法,少有对智能运维进行全面介绍的书籍,因此,我们觉得非常有必要梳理编写一本大数据场景下的智能运维技术的书籍,全面完整地为读者介绍智能运维的技术体系,以及在大企业的运维实践经验,让读者更加了解运维的技术方向,在实践中能够有所借鉴。同时,也能帮助运维工程师在一定程度上了解机器学习的常见算法模型,以及如何将它们应用到运维工作中。
读者对象
本书面向的读者主要包括:
√ 运维工程师
√ 运维开发工程师
√ 运维架构师
√ 大数据工程师
√ 对运维和大数据,以及AIOps感兴趣的工程师
如何阅读这本书
本书主要分4篇:第1篇运维发展史,重点阐述当前运维的发展现状及面临的技术挑战。第2篇智能运维基础设施,重点讲述大数据场景下的数据存储、大数据处理和分析的方法与经验,以及海量数据多维度多指标的处理分析技术。第3篇智能运维技术详解,重点关注在新时前言 XIII
期大数据时代下智能化的运维技术,包括数据聚合与关联、数据异常点检测、故障诊断和分析、趋势预测算法;第4篇技术案例详解,为大家梳理了通过开源框架ELK快速构建智能监控系统的整体方案,还将分享微博平台和微博广告两个不同业务场景下智能监控系统的技术实践。
具体而言,每篇和章节的主要内容如下:
第1篇 开门见山:运维发展史
√ 第1章运维现状,主要介绍运维职责、传统运维、运维分类等,我们将从运维发展的四个阶段:人工、工具和自动化、平台化、智能化来介绍运维的发展现状。
√ 第2章智能运维,主要介绍运维面临的挑战,传统运维在海量数据存储、分析、处理,多维度多指标及复杂业务等方面都有一定的局限性,随着运维新时代的到来,智能运维(AIOps)将为运维带来新的机会。
第2篇 站在巨人肩上:智能运维基础设施
√ 第3章开源数据采集技术,重点介绍Filebeat、Logstash等开源数据采集工具。
√ 第4章分布式消息队列,重点介绍以Kafka为代表的分布式消息队列及相关技术。
√ 第5章大数据存储技术,重点介绍大数据的存储相关技术,这也是大数据场景下的智能运维基础。
√ 第6章大规模数据离线计算分析,通过大数据ETL技术、Hadoop技术生态讨论在大数据场景下如何进行离线计算和分析。
√ 第7章实时计算框架,重点介绍在实时流计算方面的相关技术和框架,将探讨如何在监控系统中选择和使用实时计算框架。
√ 第8章时序数据分析框架,实时监控系统处理的是时序数据,本章介绍常见的时序数据分析框架及使用方法。
√ 第9章机器学习框架,智能化是运维、大数据和AI的结合,本章简单介绍机器学习框架,并以TensorFlow为例介绍如何进行模型训练和实践。
第3篇 运维新时代:智能运维技术详解
√ 第10章数据聚合与关联技术,在数据聚合方面讨论聚合方法、多维度数据聚合技巧,以及如何降低维度;在数据关联方面介绍如何在实时流场景下进行时序数据的关联。
√ 第11章数据异常点检测技术,本章结合运维面临的如异常点检测、动态阈值等常见问题,共同讨论解决这些问题的一些相关模型和算法。
√ 第12章故障诊断和分析策略,故障诊断是智能运维的一个很重要的研究方向,本章讨论智能运维在故障诊断、决策树模型、关联分析等方面的策略和模型。
√ 第13章趋势预测算法,主要介绍走势/趋势预测方面的常见模型和方法,包括ARIMA及基于机器学习的LSTM预测技术。
第4篇 智能运维架构实践:技术案例详解
√ 第14章快速构建日志监控系统,以ELK为例介绍如何使用开源框架快速搭建日志监控系统。
√ 第15章微博广告智能监控系统,全面介绍微博广告智能监控系统架构和设计原理。
√ 第16章微博平台通用监控系统,以微博平台监控系统为例,全面介绍通用监控系统的设计思路和具体架构。
需要注意的是,本文提到的智能运维即指AIOps,后续篇章将不再进行说明和区分。
勘误和支持
由于笔者的水平有限,编写时间仓促,同时本书在创作过程中参考了大量的国内外技术,并结合实践经验进行了系统性总结。由于技术的发展非常迅速,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。
智能运维技术在发生着翻天覆地的变化,我们希望更多的人能参与到这个过程中,共同推动智能运维技术的普及,欢迎通过微信或者邮件与我们进行讨论。你可以通过微信justAStriver、微博@AndrewPD或者电子邮件[email protected]联系到我们,期待能够得到你们的真挚反馈,在技术之路上互勉共进。
特别致谢
我们花费了大量的时间总结智能运维方面的技术并整理成书,在此非常感谢微博广告基础架构团队的各位同事,尤其感谢车亚强、刘俊、陆松林、王莉、朱伟(按姓氏拼音排序)等人前言 XV
的辛勤付出,他们在工作之余,挤出宝贵的时间为本书贡献了知识,共同完成了本书部分章节的内容梳理。感谢车亚强在实时流计算的基本概念和关键技术方面,尤其是对分布式消息队列和Spark相关技术贡献的内容;感谢刘俊对智能运维的全面介绍,以及在故障诊断技术方面的贡献,同时结合微博平台的应用场景整理了通用监控系统的设计方案;感谢陆松林在分布式存储和离线计算方面提供的案例;感谢王莉在预估模型及异常点检测模型方面的研究;感谢朱伟在运维及智能运维相关技术上的研究和内容贡献。
感谢李东升的大力支持和鼓励,感谢微博广告团队的各位同事、朋友的支持和帮助。
感谢张志强和TimYang两位老大抽出宝贵时间为本书写序,感谢裴丹博士、王鹏云、梁定安、饶琛琳、钟华、陈晓峰、陆沛等业界朋友,感谢大家一起推动智能运维行业的普及和发展。
感谢电子工业出版社的编辑张春雨,他的敬业精神令我由衷敬佩,他的反馈、建议、鼓励和帮助引导我们克服诸多困难完成全部书稿。
在此特别感谢我的父母对我的培养,感谢我的太太Kathy长期以来对我的默默支持,感谢我刚满1岁的女儿小洋葱,因为工作和写作牺牲了很多陪伴她的时间。
第1篇 开门见山:运维发展史
第1章 运维现状 2
1.1 运维工程 2
1.1.1 认识运维 2
1.1.2 主要职责 4
1.1.3 运维技术 5
1.2 运维发展历程 6
1.2.1 人工阶段 6
1.2.2 工具和自动化阶段 7
1.2.3 平台化阶段 7
1.2.4 智能运维阶段 8
1.3 运维现状 9
1.3.1 故障频发 9
1.3.2 系统复杂性 10
1.3.3 大数据环境 12
1.4 本章小结 14
1.5 参考文献 14
第2章 智能运维 15
2.1 海量数据的存储、分析和处理 16
2.2 多维度、多数据源 18
2.3 信息过载 19
2.4 复杂业务模型下的故障定位 21
2.5 本章小结 22
2.6 参考文献 22
第2篇 站在巨人肩上:智能运维基础设施
第3章 开源数据采集技术 25
3.1 数据采集工具对比 25
3.2 轻量级采集工具Filebeat 26
3.2.1 Filebeat工作原理 26
3.2.2 Filebeat的安装与配置 28
3.2.3 启动和运行Filebeat 38
3.3 日志采集解析工具 38
3.3.1 Logstash工作原理 39
3.3.2 安装Logstash 40
3.3.3 配置Logstash 41
3.3.4 启动Logstash 49
3.4 本章小结 49
3.5 参考文献 50
第4章 分布式消息队列 51
4.1 开源消息队列对比与分析 51
4.1.1 概述 51
4.1.2 ZeroMQ 51
4.1.3 ActiveMQ 52
4.1.4 RocketMQ 52
4.1.5 Kafka 53
4.2 Kafka的安装与使用 53
4.2.1 组件概念 53
4.2.2 基本特性 53
4.2.3 安装与使用 54
4.2.4 Java API的使用 55
4.3 案例分析 57
4.3.1 日志采集 58
4.3.2 实时结算 58
4.3.3 实时计算 58
4.4 本章小结 58
4.5 参考文献 59
第5章 大数据存储技术 60
5.1 传统数据存储 60
5.1.1 传统应用的架构 60
5.1.2 传统存储的运行机制 61
5.1.3 传统存储带来的问题 62
5.2 基于HDFS的分布式存储 63
5.2.1 分布式存储的定义 63
5.2.2 HDFS的基本原理 64
5.2.3 HDFS架构解析 65
5.2.4 HDFS的优势 66
5.2.5 HDFS不适合的场景 67
5.3 分层存储 68
5.3.1 数据仓库 68
5.3.2 数据仓库分层架构 70
5.3.3 分层存储的好处 73
5.4 案例分析 73
5.4.1 数据存储架构 73
5.4.2 数据仓库建模 74
5.4.3 常见的存储问题及解决方案 80
5.5 本章小结 80
5.6 参考文献 80
第6章 大规模数据离线计算分析 82
6.1 经典的离线计算 82
6.1.1 Linux神级工具sed和awk 82
6.1.2 Python数据处理Pandas基础 84
6.1.3 Python的优势和不足 88
6.2 分布式离线计算 89
6.2.1 MapReduce离线计算 89
6.2.2 离线计算的数据倾斜问题 97
6.2.3 分布式离线计算的技术栈 100
6.3 案例分析 101
6.3.1 离线计算管理 102
6.3.2 离线计算原子控制 103
6.3.3 离线计算的数据质量 103
6.4 本章小结 104
6.5 参考文献 105
第7章 实时计算框架 106
7.1 关于实时流计算 106
7.1.1 如何提高实时流计算的实时性 106
7.1.2 如何提高实时流计算结果的准确性 107
7.1.3 如何提高实时流计算结果的响应速度 107
7.2 Spark Streaming计算框架介绍 107
7.2.1 概述 107
7.2.2 基本概念 108
7.2.3 运行原理 108
7.2.4 编程模型 109
7.2.5 Spark Streaming的使用 110
7.2.6 优化运行时间 114
7.3 Flink计算框架 115
7.3.1 基本概念 116
7.3.2 Flink特点 116
7.3.3 运行原理 118
7.3.4 Java API的使用 121
7.4 案例分析 124
7.4.1 背景介绍 125
7.4.2 架构设计 126
7.4.3 效果分析 126
7.5 本章小结 126
7.6 参考文献 126
第8章 时序数据分析框架 127
8.1 时序数据库简介 127
8.1.1 什么是时序数据库 127
8.1.2 时序数据库的特点 128
8.1.3 时序数据库的对比 130
8.2 时序数据库Graphite 131
8.2.1 Graphite简介 131
8.2.2 Graphite在微博广告监控系统中的应用 137
8.3 多维分析利器Druid 139
8.3.1 什么是Druid 139
8.3.2 Druid架构 140
8.3.3 Druid在微博广告监控平台中的应用 144
8.4 性能神器ClickHouse 147
8.4.1 什么是ClickHouse 147
8.4.2 ClickHouse的特性 148
8.4.3 ClickHouse的不足 149
8.4.4 安装配置ClickHouse 149
8.4.5 表引擎 153
8.4.6 函数支持 157
8.5 本章小结 160
8.6 参考文献 160
第9章 机器学习框架 161
9.1 简介 161
9.2 TensorFlow介绍 162
9.2.1 什么是TensorFlow 162
9.2.2 下载安装 162
9.2.3 “Hello TensorFlow”示例 166
9.3 TensorFlow进阶 166
9.3.1 基础理论 167
9.3.2 模型准备 169
9.3.3 训练数据 169
9.3.4 模型训练 171
9.3.5 生成seq2seq句子 174
9.3.6 运行演示 175
9.4 本章小结 178
9.5 参考文献 179
第3篇 运维新时代:智能运维技术详解
第10章 数据聚合与关联技术 182
10.1 数据聚合 182
10.1.1 聚合运算 183
10.1.2 多维度聚合 186
10.2 降低维度 188
10.2.1 将告警聚合成关联“事件” 189
10.2.2 减少误报:告警分类 190
10.3 数据关联 192
10.4 实时数据关联案例 193
10.4.1 设计方案 193
10.4.2 效果 195
10.5 本章小结 195
10.6 参考文献 195
第11章 数据异常点检测技术 196
11.1 概述 196
11.2 异常检测方法 198
11.2.1 基于统计模型的异常点检测 199
11.2.2 基于邻近度的异常点检测 202
11.2.3 基于密度的异常点检测 203
11.3 独立森林 204
11.4 本章小结 207
11.5 参考文献 207
第12章 故障诊断和分析策略 208
12.1 日志标准化 209
12.2 全链路追踪 210
12.3 SLA的统一 210
12.4 传统的故障定位方法 211
12.4.1 监控告警型 211
12.4.2 日志分析型 212
12.5 人工智能在故障定位领域的应用 213
12.5.1 基于关联规则的相关性分析 213
12.5.2 基于决策树的故障诊断 217
12.6 本章小结 222
12.7 参考文献 222
第13章 趋势预测算法 223
13.1 移动平均法 223
13.2 指数平滑法 224
13.3 ARIMA模型 226
13.3.1 简介 226
13.3.2 重要概念 226
13.3.3 参数解释 228
13.3.4 建模步骤 230
13.3.5 ARIMA模型案例 232
13.4 神经网络模型 236
13.4.1 卷积神经网络 236
13.4.2 循环神经网络 238
13.4.3 长短期记忆网络 239
13.4.4 应用说明 241
13.5 本章小结 241
13.6 参考文献 242
第4篇 智能运维架构实践:技术案例详解
第14章 快速构建日志监控系统 244
14.1 Elasticsearch分布式搜索引擎 244
14.1.1 基本概念 244
14.1.2 分布式文档存储与读取 248
14.1.3 分布式文档检索 250
14.1.4 分片管理 252
14.1.5 路由策略 254
14.1.6 映射 255
14.2 可视化工具Kibana 258
14.2.1 Management 260
14.2.2 Discover 260
14.2.3 Visualize 262
14.2.4 Dashboard 263
14.2.5 Timelion 263
14.2.6 Dev Tools 264
14.3 ELK搭建实践 265
14.3.1 Logstash安装配置 265
14.3.2 Elasticsearch集群安装配置 266
14.3.3 Kibana安装配置 273
14.4 本章小结 274
14.5 参考文献 274
第15章 微博广告智能监控系统 275
15.1 背景介绍 275
15.1.1 监控指标体系 275
15.1.2 功能设计原则 276
15.2 整体架构 277
15.3 核心功能分析 278
15.3.1 全景监控 278
15.3.2 趋势预测 281
15.3.3 动态阈值 285
15.3.4 服务治理 285
15.4 本章小结 287
第16章 微博平台通用监控系统 288
16.1 背景 289
16.2 整体架构 290
16.3 核心模块 291
16.3.1 数据采集(Logtailer) 291
16.3.2 数据路由(Statsd-proxy) 293
16.3.3 聚合运算(Statsd) 294
16.3.4 数据分发(C-Relay)和数据存储 294
16.3.5 告警模块 295
16.3.6 API设计 299
16.3.7 数据可视化 300
16.4 第三方应用 301
16.4.1 决策支持系统 301
16.4.2 运维自动化 302
16.4.3 成本分析和容量日报 302
16.4.4 机器学习 302
16.5 本章小节 302
附录A 中国大数据技术大会2017(BDTC 2017)CSDN专访实录 303