本书由浅入深地对Prometheus进行了全方位的介绍,内容通俗易懂,理论与实践相结合。首先从监控体系讲起,介绍了关于监控的各种经典理论和方法。然后循序渐进地介绍了Prometheus的各个功能组件和配置方法,包括监控主机和容器、服务发现、警报管理,以及Kubernetes和运行其上的应用程序的监控。本书覆盖了目前的一些主流云技术(比如AWS),但同样适用于各种其他环境和技术栈。读过本书后,相信你可以设计并构建出一个优秀的监控系统。
......(更多)
詹姆斯·特恩布尔(James Turnbull)
是一位作家和工程师。他最近出版的书包括《The Packer Book》《The Terraform Book》和《The Art of Monitoring》,以及关于开源容器虚拟化技术的《The Docker Book》等。他目前是Empatico公司的首席技术官,并且曾担任过Kickstarter的首席技术官、Docker公司服务和支持副总裁、Venmo公司工程副总裁以及Puppet公司技术运营副总裁。
......(更多)
Contents 目 录
译者序
前 言
第1章 监控简介1
1.1 什么是监控1
1.1.1 技术作为客户2
1.1.2 业务作为客户2
1.2 监控基础知识2
1.2.1 事后监控2
1.2.2 机械式监控3
1.2.3 不够准确的监控4
1.2.4 静态监控5
1.2.5 不频繁的监控5
1.2.6 缺少自动化或自服务6
1.2.7 监控模式总结6
1.3 监控机制7
1.3.1 探针和内省7
1.3.2 拉取和推送7
1.3.3 监控数据的类型8
1.4 指标8
1.4.1 什么是指标9
1.4.2 指标类型10
1.4.3 指标摘要12
1.4.4 指标聚合12
1.5 监控方法论20
1.5.1 USE方法20
1.5.2 Google的四个黄金指标21
1.6 警报和通知22
1.7 可视化23
1.8 另一本关于监控的书24
1.9 本书内容24
1.10 小结25
第2章 Prometheus简介26
2.1 Prometheus起源26
2.2 Prometheus架构27
2.2.1 指标收集28
2.2.2 服务发现29
2.2.3 聚合和警报29
2.2.4 查询数据29
2.2.5 自治30
2.2.6 冗余和高可用性30
2.2.7 可视化31
2.3 Prometheus数据模型31
2.3.1 指标名称31
2.3.2 标签32
2.3.3 采样数据32
2.3.4 符号表示32
2.3.5 保留时间33
2.4 安全模型33
2.5 Prometheus生态系统34
2.6 参考链接34
2.7 小结34
第3章 安装和启动Prometheus35
3.1 安装Prometheus35
3.1.1 在Linux上安装Prometheus36
3.1.2 在Windows上安装Prometheus37
3.1.3 在Windows上安装Prometheus的其他方式38
3.1.4 在Mac OS X上安装Prometheus38
3.1.5 通过监控套件安装Prometheus38
3.1.6 通过配置管理工具安装Prometheus39
3.1.7 通过Kubernetes安装Prometheus39
3.2 配置Prometheus39
3.2.1 global40
3.2.2 alerting41
3.2.3 rule_files42
3.2.4 scrape_configs42
3.3 启动Prometheus43
3.4 第一个指标44
3.5 表达式浏览器45
3.6 聚合时间序列48
3.7 容量规划51
3.7.1 内存51
3.7.2 磁盘51
3.8 小结52
第4章 监控主机和容器53
4.1 监控节点54
4.1.1 安装Node Exporter54
4.1.2 配置Node Exporter55
4.1.3 配置textfile收集器56
4.1.4 启用systemd收集器57
4.1.5 运行Node Exporter57
4.1.6 抓取Node Exporter58
4.1.7 过滤收集器58
4.2 监控Docker容器59
4.2.1 运行cAdvisor60
4.2.2 抓取cAdvisor61
4.3 抓取的生命周期62
4.4 标签64
4.4.1 标签分类64
4.4.2 重新标记65
4.5 Node Exporter和cAdvisor指标69
4.5.1 USE方法69
4.5.2 服务状态77
4.5.3 可用性和up指标78
4.5.4 metadata指标79
4.6 查询持久性81
4.6.1 记录规则82
4.6.2 配置记录规则82
4.6.3 添加记录规则83
4.7 可视化86
4.7.1 安装Grafana86
4.7.2 启动和配置Grafana88
4.7.3 配置Grafana Web界面89
4.7.4 第一个仪表板91
4.8 小结92
第5章 服务发现93
5.1 静态配置的局限性93
5.2 基于文件的服务发现94
5.3 基于API的服务发现98
5.4 基于DNS的服务发现102
5.5 小结104
第6章 警报管理105
6.1 警报105
6.2 Alertmanager如何工作107
6.3 安装Alertmanager108
6.3.1 在Linux上安装Alertmanager108
6.3.2 在Windows上安装Alertmanager109
6.3.3 通过监控套件安装Alertmanager110
6.3.4 通过配置管理工具安装Alertmanager110
6.4 配置Alertmanager111
6.5 运行Alertmanager113
6.6 为Prometheus配置Alertmanager114
6.6.1 Alertmanager服务发现114
6.6.2 监控Alertmanager115
6.7 添加警报规则115
6.7.1 添加第一条警报规则116
6.7.2 警报触发118
6.7.3 Alertmanager的警报118
6.7.4 添加新警报和模板120
6.8 路由123
6.9 接收器和通知模板126
6.10 silence和维护128
6.10.1 通过Alertmanager控制silence128
6.10.2 通过amtool控制silence130
6.11 小结132
第7章 可靠性和可扩展性133
7.1 可靠性和容错性133
7.1.1 重复的Prometheus服务器134
7.1.2 设置Alertmanager集群135
7.1.3 为Prometheus配置Alertmanager集群136
7.2 可扩展性138
7.2.1 功能扩展138
7.2.2 水平分片139
7.3 远程存储144
7.4 第三方工具144
7.5 小结144
第8章 监控应用程序145
8.1 应用程序监控入门145
8.1.1 从哪里开始146
8.1.2 监控分类146
8.2 指标146
8.2.1 应用程序指标147
8.2.2 业务指标147
8.2.3 放置指标147
8.2.4 实用程序模式147
8.2.5 外部模式148
8.2.6 监控应用程序示例149
8.3 小结155
第9章 日志监控156
9.1 日志处理156
9.2 mtail简介157
9.2.1 安装mtail157
9.2.2 使用mtail158
9.2.3 运行mtail159
9.3 处理Web服务器访问日志161
9.4 解析Rails日志到直方图163
9.5 部署mtail165
9.6 抓取mtail端点165
9.7 小结166
第10章 探针监控167
10.1 探针架构167
10.2 Blackbox exporter168
10.3 安装exporter168
10.3.1 在Linux上安装exporter169
10.3.2 在Windows上安装exporter170
10.3.3 通过配置管理工具安装exporter170
10.4 配置exporter171
10.4.1 HTTP检查172
10.4.2 ICMP检查 172
10.4.3 DNS检查 173
10.5 启动exporter173
10.6 创建Prometheus作业174
10.7 小结176
第11章 推送指标和Pushgateway177
11.1 Pushgateway177
11.1.1 Pushgateway使用场景178
11.1.2 安装Pushgateway179
11.1.3 在Linux上安装Pushgateway179
11.1.4 在Windows上安装Pushgateway180
11.1.5 通过配置管理工具安装Pushgateway181
11.1.6 配置和运行Pushgateway181
11.1.7 向Pushgateway发送指标182
11.1.8 在Pushgateway上查看指标183
11.1.9 删除Pushgateway中的指标184
11.1.10 从客户端发送指标185
11.2 抓取Pushgateway187
11.3 小结188
第12章 监控Kubernetes189
12.1 Kubernetes集群189
12.2 在Kubernetes上运行Prometheus190
12.3 监控Kubernetes191
12.4 监控Kubernetes节点191
12.4.1 Node Exporter DaemonSet191
12.4.2 Node Exporter服务194
12.4.3 部署Node Exporter195
12.4.4 Node Exporter作业196
12.4.5 Node Exporter规则199
12.5 Kubernetes200
12.5.1 Kube-state-metrics200
12.5.2 Kube API202
12.5.3 cAdvisor和节点205
12.6 小结206
第13章 监控Tornado207
13.1 边车模式207
13.2 MySQL208
13.3 Redis213
13.4 Tornado216
13.4.1 添加Clojure包装器216
13.4.2 添加注册表217
13.4.3 添加指标217
13.4.4 导出指标218
13.4.5 Tornado监控配置219
13.5 小结220
......(更多)
一个良好的监控系统应该能提供以下内容:全局视角,从最高层(业务)依次展开。协助故障诊断作为基础设施、应用程序开发和业务人员的信息源。 同时它也应该是:内置于应用程序设计、开发和部署的生命周期中。尽可能自动化,并提供自服务。
......(更多)