新書推薦:
《
篡魏:司马懿和他的夺权同盟
》
售價:HK$
65.0
《
狂飙年代:18世纪俄国的新文化和旧文化(第三卷)
》
售價:HK$
177.0
《
协和专家大医说:医话肿瘤
》
售價:HK$
109.8
《
潜水指南 全彩图解第4版
》
售價:HK$
132.2
《
超大规模集成电路设计——从工具到实例
》
售價:HK$
88.5
《
村上春树·旅(一本充满村上元素的旅行指南,带你寻访电影《挪威的森林》拍摄地,全彩印刷;200余幅摄影作品)
》
售價:HK$
66.1
《
智能驾驶硬件在环仿真测试与实践
》
售價:HK$
155.7
《
都铎王朝时期英格兰海事法庭研究
》
售價:HK$
87.4
|
編輯推薦: |
《深入浅出Prometheus:原理、应用、源码与拓展详解》还未出版就受到了很多人的关注,时不时被询问出版进度,热度至此,不火怎行?
Prometheus既适用于容器监控,也适用于传统应用监控,更是从CNCF第2个毕业的开源项目;众多企业或者公司都在使用它,360围观,它都注定是个明星项目。
现在还没有一本Prometheus书问世,很多人都有很多关于Prometheus的问题想解决。
《深入浅出Prometheus:原理、应用、源码与拓展详解》囊括Prometheus的原理、传统应用监控、Kubernetes监控、源码及拓展方法,是一本努力做到全面,努力帮助读者从了解、入门到实战,再到源码及优化的很用心的书,希望大家喜欢!
欢迎加编辑威信zgx228,或提问题,或与专家实时讨论,我们会尽力给予帮助,加油!
|
內容簡介: |
Prometheus是由SoundCloud开源的监控系统,是Google BorgMon监控系统的开源版本。伴随着容器及Kubernetes技术的兴起,Prometheus越来越受到大家的关注。《深入浅出Prometheus:原理、应用、源码与拓展详解》系统讲解了Prometheus的原理、应用、源码和拓展,图文并茂、讲解全面。原理篇主要介绍了Prometheus的整体架构及与其他监控系统的对比和优势,让读者从整体上把握Prometheus的相关概念。应用篇从传统应用监控和Kubernetes监控两方面讲解Prometheus的安装、配置及优秀实践,着重介绍Redis、MySQL server等常用中间件监控,并结合Kubernetes,详细讲解如何通过Prometheus监控容器集群,还对每个操作都进行了非常详尽的记录。源码与拓展篇从整体到局部详细剖析Prometheus的源码架构,并且结合实际生产环境二次定制Prometheus的部分功能,可加深读者对Prometheus的理解,也能很好地帮助读者提升Prometheus开发技能。
《深入浅出Prometheus:原理、应用、源码与拓展详解》适合运维工程师、软件架构师、研发工程师及其他资深IT人士参考和阅读。
|
關於作者: |
陈晓宇
宜信容器云架构师,负责宜信PaaS平台的设计和推广,帮助企业从传统应用迁移至云原生应用。在云计算相关行业具有丰富的研发与架构经验,并积极参与OpenStack、Kubernetes、Harbor等社区的开源项目。
杨川胡
k8s技术圈社区维护者,全栈工程师,具备丰富的云计算、上亿活跃用户应用后端实践经验,擅长Python、Golang、Docker、Kubernetes等技术,曾在小米担任资深研发工程师。个人GitHub页面:https:github.comcnych。
陈啸陈晓宇
宜信容器云架构师,负责宜信PaaS平台的设计和推广,帮助企业从传统应用迁移至云原生应用。在云计算相关行业具有丰富的研发与架构经验,并积极参与OpenStack、Kubernetes、Harbor等社区的开源项目。
杨川胡
k8s技术圈社区维护者,全栈工程师,具备丰富的云计算、上亿活跃用户应用后端实践经验,擅长Python、Golang、Docker、Kubernetes等技术,曾在小米担任资深研发工程师。个人GitHub页面:https:github.comcnych。
陈啸
Prometheus二次开发深度使用者,专注于分布式搜索、流式计算、集群监控、大数据安全领域。现就职于深信服科技股份有限公司安全感知团队,负责数据平台基础架构研发工作。
|
目錄:
|
第1篇Prometheus原理
第1章监控2
1.1监控系统概览2
1.2基础资源监控4
1.2.1网络监控4
1.2.2存储监控6
1.2.3服务器监控7
1.3中间件监控9
1.4应用程序监控(APM)10
1.5日志监控13
1.6监控系统实现14
1.6.1总体架构14
1.6.2指标采集15
1.6.3数据处理18
1.7监控系统的发展趋势21
1.8本书主角Prometheus22
1.9其他开源监控工具26
1.9.1Zabbix26
1.9.2Nagios30
1.9.3Open-Falcon31
1.10监控系统的对比33
第2章深入Prometheus设计35
2.1指标35
2.1.1Prometheus的指标定义35
2.1.2Prometheus的指标分类36
2.1.3Prometheus数据样本40
2.2数据采集40
2.2.1服务发现42
2.2.2数据采集44
2.3数据处理45
2.3.1重新定义标签45
2.3.2标签筛选46
2.4数据存储46
2.4.1本地存储47
2.4.2远程存储50
2.5数据查询50
2.6告警52
2.7集群54
2.7.1联邦54
2.7.2Thanos55
2.8Prometheus并非监控银弹59
第3章数据存储60
3.1存储接口60
3.2本地存储62
3.2.1历史63
3.2.2核心概念63
3.2.3相关参数69
3.2.4本地存储接口70
3.3远端存储71
3.3.1总体架构71
3.3.2远端接口规范71
3.3.3相关参数74
3.4存储汇聚77
第2篇Prometheus在传统应用监控中的应用
第4章Prometheus exporter详解80
4.1服务分类80
4.2数据规范81
4.3exporter简介82
4.4基于Go客户端编写一个exporter84
4.5Node exporter解析87
4.6Redis exporter解析90
4.6.1Redis exporter的应用90
4.6.2Redis exporter的工作原理91
4.7MySQL server exporter解析93
4.7.1MySQL server exporter的应用93
4.7.2MySQL server exporter的工作原理94
4.8深入探索Go客户端96
第3篇Prometheus在Kubernetes监控中的应用
第5章Kubernetes监控方案100
5.1Heapster101
5.2kube-state-metrics104
5.3metrics-server105
5.4Prometheus105
第6章Prometheus的安装配置107
6.1手动安装Prometheus107
6.2安装Prometheus Operator114
6.3在Prometheus Operator中添加自定义的监控项125
6.4在Prometheus Operator中添加自定义告警132
6.4.1配置PrometheusRule133
6.4.2配置告警138
6.5Prometheus Operator的高级配置144
6.5.1自动发现配置145
6.5.2数据持久化配置152
第7章Prometheus监控Kubernetes之服务配置159
7.1静态配置159
7.2服务发现配置164
第8章Prometheus监控Kubernetes之监控对象171
8.1容器监控172
8.1.1Prometheus的配置方式172
8.1.2容器指标174
8.2apiserver监控177
8.2.1配置方式177
8.2.2apiserver指标181
8.3Service监控182
8.4kube-state-metrics监控185
8.5主机监控186
第9章Prometheus监控Kubernetes之数据展现191
9.1在Kubernetes集群中安装Grafana191
9.2配置Grafana200
9.2.1数据源200
9.2.2Dashboard201
9.3插件207
9.4Grafana告警212
9.4.1邮件告警212
9.4.2钉钉告警214
9.4.3Grafana告警配置215
第10章Prometheus监控Kubernetes之告警219
10.1AlertManager简介219
10.2安装AlertManager220
10.3告警规则225
10.4webhook接收器231
第4篇Prometheus源码与拓展
第11章Prometheus服务组件240
11.1Prometheus源码的目录结构240
11.2原生Prometheus的不足242
11.3源码改造更改时区243
11.3.1源码修改243
11.3.2编译244
11.3.3功能验证244
11.4源码改造用blog4go记录系统日志245
11.4.1引入blog4go库245
11.4.2设置日志回调函数246
11.4.3启动日志记录服务246
11.4.4配置config.xml247
11.4.5编译248
11.4.6验证服务248
11.5Prometheus的初始化248
11.5.1Prometheus性能调试249
11.5.2Context介绍249
11.5.3初始化服务组件251
11.5.4组件配置管理257
11.5.5启动服务组件258
11.6源码改造MySQL规则存储262
11.6.1规则加载流程262
11.6.2表结构设计262
11.6.3规则加载模块264
11.6.4loadGroups改造267
11.6.5初始化269
11.6.6功能验证269
11.7数据采集270
11.7.1服务发现270
11.7.2指标采集277
11.7.3存储指标289
11.8通知管理297
11.8.1启动notifier服务298
11.8.2注册notifier308
11.9规则管理311
11.9.1规则调度312
11.9.2查询引擎321
11.10源码改造不重复scrape及自带时间戳规则运算327
11.10.1实现思路328
11.10.2不重复scrape328
11.10.3自带时间戳规则运算331
11.10.4功能验证343
第12章AlertManager服务组件348
12.1接收告警348
12.2告警调度351
12.3告警匹配356
12.4告警处理357
12.5告警通知362
|
內容試閱:
|
无论是传统数据中心还是云数据中心,无论是物理机、虚拟机还是容器,整个数据中心的建设都绕不开监控这个话题。优秀的监控系统不仅需要兼容各种设备和环境,还需要具备高性能、高可靠及易运维等特性,Prometheus正是其中之一。伴随着容器相关技术的兴起,Prometheus正逐步成为容器监控的标准,并且对于传统应用和设备也有很好的兼容性。
Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能够通过Kubernetes、Consul、DNS等多种方式动态获取监控对象。在数据采集方面,借助Go语言的高并发特性,单机Prometheus可以采集数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远端存储。
本书共分为4篇12章,分别讲解Prometheus原理、在传统应用监控和Kubernetes监控中的应用,以及源码和拓展,具体内容如下所述。
第1章主要介绍监控系统的概念和架构设计,并剖析监控系统的内部结构,从程序运行的角度讲解基础资源监控、中间件监控、应用程序监控和日志监控,并将多种监控系统的优缺点进行对比,指出Prometheus独特的优势。
第2章首先介绍Prometheus的相关概念,包括数据指标的定义和分类;然后介绍Prometheus的总体架构和工作原理,包括数据采集、数据处理、数据存储、数据查询及告警;最后讲解Prometheus联邦及Thanos的原理。
第3章主要介绍Prometheus数据存储。首先从历史演进、设计理念、实现原理等多个方面详细介绍Prometheus的本地时序数据库(Prometheus TSDB);然后介绍Prometheus远端存储的使用方式和实现原理,并以InfluxDB为例,详解Adapter的工作原理。
第4章主要介绍Prometheus exporter的背景、使用方式和工作原理。首先介绍几个常用的exporter,包括Node exporter、Redis exporter、MySQL server exporter的内部构造;然后从源码角度解析exporter,并编写一个简单的exporter。
第5章主要介绍Kubernetes集群的常用监控方案,包括?Heapster、kube-state-metrics、metrics-server,并介绍将Prometheus应用于Kubernetes集群的优势。
第6章主要介绍Prometheus在Kubernetes集群中的安装和配置。首先介绍如何用常规的手动方式在Kubernetes集群中安装Prometheus;然后介绍Kubernetes中的另一种更高级的监控方案Prometheus Operator的安装和使用,包括添加自定义监控项、添加自定义告警、自动发现配置、数据持久化配置等。
第7章主要介绍Prometheus监控Kubernetes集群服务的一些配置方法。首先介绍手动的静态配置方法,然后介绍如何使用Prometheus中的服务发现机制来自动发现Kubernetes中的Service。
第8章主要介绍Prometheus在Kubernetes集群中的一些常用监控对象,包括cAdvisor监控、apiserver监控、Service监控、kube-state-metrics监控,并介绍如何使用node-exporter监控Kubernetes集群中的节点。
第9章主要介绍Prometheus监控Kubernetes集群的数据展示。首先介绍在Kubernetes集群中安装Grafana的方法;然后介绍如何将Grafana配置Prometheus数据源,以及一些常用的Dashboard配置方法;并介绍Grafana针对Kubernetes集群监控的一个常用插件grafana-kuberentes-app的安装和使用;最后介绍如何使用Grafana告警,包括邮件告警、钉钉告警等。
第10章主要介绍Prometheus监控Kubernetes集群的告警功能。首先介绍如何在Kubernetes集群中安装Prometheus的告警模块AlertManager;然后介绍如何通过ConfigMap?资源对象配置告警规则;最后编写一个?webhook?接收器来处理AlertManager告警数据。
第11章主要对Prometheus源码进行分析,涉及Prometheus数据采集、规则管理、通知管理、存储管理和查询引擎方面的内容,并以二次开发实战的方式加深读者对Prometheus程序结构的理解。
第12章主要对AlertManager源码进行分析,涉及接收告警、告警调度、告警匹配、告警处理和告警通知方面的内容,并结合配置文件中的配置项,带领读者从源码角度理解告警分组、告警频次控制、告警路由、告警抑制和告警静默功能的实现。
致谢
本书作者分别来自宜信容器云团队(陈晓宇)、k8s技术圈社区(杨川胡)及深信服安全感知团队(陈啸),感谢这些团队及社区对本书作者的支持和鼓励。
感谢张国霞编辑在成书过程中对作者的协助和鞭策。
感谢作者家人对作者的支持和鼓励,来自家人的爱,让我们时刻拥有信心
――――本书作者
|
|