深入浅出Prometheus:原理、应用、源码与拓展详解
  • 推荐0
  • 收藏3
  • 浏览2.4K

深入浅出Prometheus:原理、应用、源码与拓展详解

陈晓宇 , 杨川胡 , 陈啸 (作者)  张国霞 (责任编辑)

  • 丛  书:博文视点云原生精品丛书
  • 书  号:978-7-121-36095-4
  • 出版日期:2019-04-01
  • 页  数:384
  • 开  本:
  • 出版状态:上市销售
  • 维护人:张国霞
本书主要围绕prometheus设计、架构、使用以及源码分析等多个角度全面阐述prometheus的内部原理和设计思想,本书第一部分主要围绕监控系统设计以及prometheus的核心架构,第二部分详细介绍prometheus的使用方式以及和kubernetes集成容器监控,第三部分从源代码角度深入剖析内部实现,开发示例。
Prometheus目前在开源监控系统中最为流行并加入CNCF,并且在生产环境部署案例较多,本书详细阐述prometheus的技术原理和实战,在当然市面还没有相关的图书
陈晓宇
宜信容器云架构师,负责宜信PaaS平台的设计和推广,帮助企业从传统应用迁移至云原生应用。在云计算相关行业具有丰富的研发与架构经验,并积极参与OpenStack、Kubernetes、Harbor等社区的开源项目。
杨川胡
“k8s技术圈”社区维护者,全栈工程师,具备丰富的云计算、上亿活跃用户应用后端实践经验,擅长Python、Golang、Docker、Kubernetes等技术,曾在小米担任资深研发工程师。个人GitHub页面:https://github.com/cnych。
陈啸
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 本书主角——Prometheus 22
1.9 其他开源监控工具 26
1.9.1 Zabbix 26
1.9.2 Nagios 30
1.9.3 Open-Falcon 31
1.10 监控系统的对比 33
第2章 深入Prometheus设计 35
2.1 指标 35
2.1.1 Prometheus的指标定义 35
2.1.2 Prometheus的指标分类 36
2.1.3 Prometheus数据样本 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.2 Thanos 55
2.8 Prometheus并非监控银弹 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.3 exporter简介 82
4.4 基于Go客户端编写一个exporter 84
4.5 Node exporter解析 87
4.6 Redis exporter解析 90
4.6.1 Redis exporter的应用 90
4.6.2 Redis exporter的工作原理 91
4.7 MySQL server exporter解析 93
4.7.1 MySQL server exporter的应用 93
4.7.2 MySQL server exporter的工作原理 94
4.8 深入探索Go客户端 96

第3篇 Prometheus在Kubernetes监控中的应用
第5章 Kubernetes监控方案 100
5.1 Heapster 101
5.2 kube-state-metrics 104
5.3 metrics-server 105
5.4 Prometheus 105
第6章 Prometheus的安装配置 107
6.1 手动安装Prometheus 107
6.2 安装Prometheus Operator 114
6.3 在Prometheus Operator中添加自定义的监控项 125
6.4 在Prometheus Operator中添加自定义告警 132
6.4.1 配置PrometheusRule 133
6.4.2 配置告警 138
6.5 Prometheus 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.1 Prometheus的配置方式 172
8.1.2 容器指标 174
8.2 apiserver监控 177
8.2.1 配置方式 177
8.2.2 apiserver指标 181
8.3 Service监控 182
8.4 kube-state-metrics监控 185
8.5 主机监控 186
第9章 Prometheus监控Kubernetes之数据展现 191
9.1 在Kubernetes集群中安装Grafana 191
9.2 配置Grafana 200
9.2.1 数据源 200
9.2.2 Dashboard 201
9.3 插件 207
9.4 Grafana告警 212
9.4.1 邮件告警 212
9.4.2 钉钉告警 214
9.4.3 Grafana告警配置 215
第10章 Prometheus监控Kubernetes之告警 219
10.1 AlertManager简介 219
10.2 安装AlertManager 220
10.3 告警规则 225
10.4 webhook接收器 231

第4篇 Prometheus源码与拓展
第11章 Prometheus服务组件 240
11.1 Prometheus源码的目录结构 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.xml 247
11.4.5 编译 248
11.4.6 验证服务 248
11.5 Prometheus的初始化 248
11.5.1 Prometheus性能调试 249
11.5.2 Context介绍 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.4 loadGroups改造 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 注册notifier 308
11.9 规则管理 311
11.9.1 规则调度 312
11.9.2 查询引擎 321
11.10 源码改造——不重复scrape及自带时间戳规则运算 327
11.10.1 实现思路 328
11.10.2 不重复scrape 328
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

本书勘误

印次
  • 页码:36  •  行数:3  •  印次: 1

    “指标名称必须由字母”,写成了“字面”

    brook 提交于 2019/8/25 18:40:18
    张国霞 确认于 2019/11/26 11:31:50
  • 页码:51  •  行数:4  •  印次: 1

    图 2-13中的 TSDB 写成了 stdb

    brook 提交于 2019/8/25 18:37:26
    张国霞 确认于 2019/11/26 11:32:17
  • 页码:166  •  行数:8  •  印次: 1

    如果需要获取主机的监控信息,就需要借助node-exporter,它的暴露端口是9090,而上面Prometheus请求的端口是10250.

    上面的9090是错误的,应该是9100端口。请纠正。

    kaweit 提交于 2019/10/17 10:30:53
    张国霞 确认于 2019/11/26 11:31:08

读者评论

  • 说好的“示例代码文件”呢。。。囧

    wahaha2324发表于 2019/9/15 18:08:46
    • 和kubernetes结合的部分相关的资源可以在这里获取:https://github.com/cnych/kubernetes-learning

      请叫我雷锋。。。囧

      wahaha2324发表于 2019/9/15 18:14:11
  • 老师好: 我是<深入浅出Prometheus原理、应用、源码与拓展详解>的读者, 书中有很多的示例代码文件, 在”下载资源”处并没有, 这肯定会让很多读者觉得不方便(包括我), 不知道, 老师您, 能否与原书3位作者沟通一下, 开放示例代码文件或者github, 感谢!另外, 是否可以和原书3位作者沟通一下, 建立一个微信群(QQ群), 方便读者相互交流和讨论, 盼回复!

    Chris发表于 2019/7/26 12:48:07
  • 所以书籍那么多yaml配置文件。。我是要手打???

    零落白夜发表于 2019/6/12 16:58:52
  • 下载资源 处想下载实例配置。结果只有一个书籍的目录doc???

    nandy发表于 2019/4/26 10:57:14
    • 如有源码下载,才会放在这里

      张国霞发表于 2019/5/13 10:16:53
  • 书中代码和资源文件说是在 下载资源 处下载。结果只有一个书籍的目录doc,糊弄人吗?太不负责了吧。

    allenonline发表于 2019/4/24 15:05:57
    • 如有源码下载,会放在这里。

      张国霞发表于 2019/5/13 10:16:39
    • @张国霞 感觉这个不地道啊

      meng0819发表于 2019/7/23 14:51:46

同系列书

相关图书

看漫画学Python:有趣、有料、好玩、好用(全彩版)

关东升、赵大羽 (作者)

Python是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机...

 

游戏设计师的Playlist:激发创造力的必玩游戏

Zack Hiwiller (作者) 李天颀 (译者)

在本书中,作者基于多年的游戏设计及教授经验,用诙谐幽默的语言向读者传授了一个又一个重要的游戏设计理念。书中的每一章均有一个明确的主题,涉及随机性、叙事、挑战、机...

¥99.00

Julia高性能科学计算 : 第2版

Changhyun Kwon ( 权昌贤) (作者) 徐国栋 李琦 (译者)

Julia 像C一样快,像MATLAB 一样方便,并且像Python 一样通用。在Julia 开发者,特别是JuMP 包开发者的大力支持下,Julia 为运筹学...

 

Boost程序库完全开发指南――深入C++”准”标准库(第5版)

罗剑锋 (作者)

Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉。<br>Boost由C++标准委员会的部分成员所设...

¥118.00

程序员修炼之道:通向务实的最高境界(第2版)

THOMAS, DAVID; HUNT, ANDREW (作者)

《程序员修炼之道》之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特...

¥89.00

ASP.NET Core 3框架揭秘

蒋金楠 (作者)

本书主要阐述 ASP.NET Core 最核心的部分——请求处理管道。通过阅读本书,读者可以深刻系统地了解 ASP.NET Core 应用在启动过程中管道的构建...

¥199.00