监控的艺术 云原生时代的监控框架
第 1章 引言 1
1.1 内容概览 2
1.2 监控的定义 2
1.2.1 业务客户 2
1.2.2 IT 客户 2
1.3 监控的实际存在形式 2
1.3.1 手动、用户发起或无监控阶段 3
1.3.2 被动式监控阶段 3
1.3.3 主动式监控阶段 4
1.4 模型分布 4
查看完整
1.1 内容概览 2
1.2 监控的定义 2
1.2.1 业务客户 2
1.2.2 IT 客户 2
1.3 监控的实际存在形式 2
1.3.1 手动、用户发起或无监控阶段 3
1.3.2 被动式监控阶段 3
1.3.3 主动式监控阶段 4
1.4 模型分布 4
查看完整
作者介绍 詹姆斯·特恩布尔(James Turnbull),曾任Kickstarter CTO、Docker公司服务和支持副总裁、Venmo公司工程副总裁、Puppet Labs技术运维副总裁。热衷于开源领域,著有近10本技术书,包括《Linux系统管理大全》《精通Puppet配置管理工具》。 译者介绍 浙江中金黄金集团CTO,曾就职于美国道富银行,历任全栈工程师、架构师、技术经理。技术涉猎广泛,在产品设计开发、架构设计、技术团队管理等方面有丰富经验。另译有《扩展jQuery》和《HTML5 JavaScript动画基础》。
本书由前Docker员工、运维专家詹姆斯·特恩布尔执笔,系统介绍现代应用程序、架构的监控和度量。全书共分为13章,主要内容包括监控和度量过程中涉及的一些基本概念,描述基于主机的监控。书中运用了大量的代码进行分析例证,有助于实时监控系统。另外,作者对系统日志、应用程序以及通知等方面进行了系统介绍,并且在*后3章中,对Tornado的组成部分展开了详细介绍,力求构建可监控的系统。本书适合软件开发工程师、系统管理员以及其他所有对系统监控和DevOps感兴趣的人阅读。
第 1章 引言 1
1.1 内容概览 2
1.2 监控的定义 2
1.2.1 业务客户 2
1.2.2 IT 客户 2
1.3 监控的实际存在形式 2
1.3.1 手动、用户发起或无监控阶段 3
1.3.2 被动式监控阶段 3
1.3.3 主动式监控阶段 4
1.4 模型分布 4
1.5 实施主动式监控 5
1.6 本书内容 7
1.7 工具的选择 8
第 2章 监控框架 9
2.1 黑盒与白盒 10
2.2 以事件、日志、指标为中心 11
2.2.1 更多关于指标的知识 11
2.2.2 指标的定义 12
2.2.3 指标的类型 13
2.2.4 指标小结 14
2.2.5 指标聚合 15
2.3 上下文和有价值的通知 16
2.4 可视化 17
2.5 传统监控有何问题 18
2.5.1 静态配置 18
2.5.2 不灵活的逻辑和阈值 18
2.5.3 以目标对象为中心 19
2.5.4 宠物和肉牛的插曲 19
2.5.5 新方法的不同之处 20
2.5.6 更智能的阈值输入 20
2.6 为监控框架采集数据 27
2.7 小结 28
第3章 使用Riemann管理事件和指标 29
3.1 Riemann简介 30
3.1.1 Riemann的架构和实现 30
3.1.2 安装Riemann 31
3.2 配置Riemann 35
3.2.1 学习Clojure 35
3.2.2 Riemann的基础配置 35
3.2.3 事件、流、索引 38
3.2.4 配置事件、流、索引 40
3.2.5 向Riemann发送事件 43
3.2.6 创建Riemann监控检测 44
3.2.7 Riemann过滤的一个小插曲 45
3.3 连接Riemann服务器 47
3.3.1 配置上游Riemann服务器 48
3.3.2 配置下游Riemann服务器 50
3.3.3 向下游发送Riemann事件 51
3.4 在上游Riemann服务器发出告警 52
3.4.1 Riemann事件限流 57
3.4.2 汇总Riemann事件 57
3.4.3 电子邮件通知的替代工具 58
3.5 测试Riemann配置 58
3.6 验证Riemann配置 60
3.7 性能、可伸缩性、高可用性 61
3.8 Riemann的替代工具 63
3.9 小结 63
第4章 Graphite和Grafana 64
4.1 Graphite简介 64
4.1.1 Carbon 65
4.1.2 Whisper 65
4.1.3 Graphite Web、Graphite-API、Grafana 66
4.2 Graphite的架构 66
4.3 安装Graphite 66
4.3.1 在Ubuntu上安装Graphite 68
4.3.2 在Red Hat上安装Graphite 68
4.3.3 安装Graphite-API 70
4.3.4 安装Grafana 71
4.3.5 通过配置管理工具安装Graphite和Grafana 73
4.4 配置Graphite和Carbon 73
4.4.1 配置Carbon指标的留存模式 78
4.4.2 估算Graphite存储空间 80
4.4.3 Carbon和Graphite服务管理 81
4.5 配置Graphite-API 84
4.5.1 Graphite-API的服务管理 86
4.5.2 测试Graphite-API 87
4.6 配置Grafana 87
4.7 为Graphite配置Riemann 91
4.8 Grafana简介 95
4.9 Graphite和Carbon冗余 100
4.10 时间和时区 103
4.10.1 手动管理时间 103
4.10.2 通过配置管理工具管理时间 106
4.10.3 检查时间状态 107
4.11 Graphite和Grafana的替代工具 107
4.11.1 商业工具 107
4.11.2 开源工具 108
4.12 Whisper的替代工具 108
4.12.1 InfluxDB 108
4.12.2 Cyanite 109
4.13 小结 109
第5章 监控主机 110
5.1 collectd简介 111
5.2 应该监控哪些主机组件 112
5.3 安装collectd 113
5.3.1 在Ubuntu上安装collectd 113
5.3.2 在Red Hat上安装collectd 114
5.3.3 通过配置管理工具安装collectd 115
5.4 配置collectd 115
5.4.1 加载和配置collectd插件来进行监控 118
5.4.2 后的准备 130
5.4.3 启用和运行collectd 130
5.5 collectd事件 130
5.6 将collectd事件发送到Graphite 132
5.7 重构collectd指标名称 133
5.8 小结 136
第6章 在Riemann中使用collectd事件 137
6.1 检测正在运行的进程 137
6.2 其他行动和改进 141
6.3 重复一些传统监控 142
6.4 通过更智能的数据进行更好的监控 143
6.4.1 构建基于中位数的检测 143
6.4.2 使用百分位数进行基于主机的检测 144
6.4.3 对检测进行抽象 145
6.4.4 对检测进行组织 149
6.5 使用Grafana绘制collectd指标 149
6.5.1 创建主机看板 150
6.5.2 创建第 一个主机图表 151
6.5.3 创建内存图表 154
6.5.4 单个主机图表 155
6.5.5 其他图表 156
6.6 网络、设备和Microsoft Windows监控 156
6.7 collectd的替代工具 157
6.7.1 商业工具 157
6.7.2 开源工具 157
6.8 小结 158
第7章 容器——另一种类型的主机 159
7.1 容器监控面临的挑战 159
7.2 监控Docker容器 162
7.2.1 Docker collectd插件 163
7.2.2 安装Docker collectd插件 164
7.2.3 配置Docker collectd插件 165
7.3 使用Riemann处理Docker collectd的统计信息 166
7.4 为Docker指标指定不同的解析度 176
7.5 清理旧的Graphite Docker指标 177
7.6 使用Docker 指标进行监控 177
7.7 其他容器监控工具 178
7.8 小结 179
第8章 日志 180
8.1 ELK技术栈入门 180
8.2 Logstash架构 181
8.3 安装Logstash 183
8.3.1 在Debian和Ubuntu上安装Java 183
8.3.2 在Red Hat上安装Java 183
8.3.3 测试Java是否安装成功 183
8.3.4 在Ubuntu和Debian上安装Logstash包 183
8.3.5 在Red Hat上安装Logstash包 184
8.3.6 通过配置管理工具安装Logstash 184
8.3.7 测试Logstash是否已安装成功 185
8.4 配置Logstash 185
8.5 安装Elasticsearch 187
8.5.1 在Debian和Ubuntu上安装Java 187
8.5.2 在Red Hat上安装Java 188
8.5.3 通过配置管理工具安装Elasticsearch 189
8.5.4 测试Elasticsearch是否安装成功 189
8.5.5 确定Elasticsearch正在运行 189
8.6 配置Elasticsearch集群和节点 190
8.7 时间和时区 193
8.8 集成Logstash和Elasticsearch 193
8.8.1 Logstash内部会发生什么 195
8.8.2 Elasticsearch内部会发生什么 200
8.9 安装Kibana 201
8.10 配置Kibana 202
8.11 运行Kibana 203
8.12 通过Syslog将主机连接到Logstash 205
8.12.1 配置Logstash 205
8.12.2 Syslog概览 206
8.12.3 配置Syslog 207
8.13 记录Docker日志 209
8.14 将数据从Logstash发送到Riemann 214
8.15 将数据从Riemann发送到Logstash 216
8.16 伸缩扩展Logstash和Elasticsearch 219
8.16.1 伸缩扩展Logstash 219
8.16.2 伸缩扩展Elasticsearch 220
8.17 监控组件 221
8.17.1 监控RSyslog 221
8.17.2 监控Logstash 221
8.17.3 监控Elasticsearch 226
8.18 Logstash的替代方案 229
8.18.1 Splunk 229
8.18.2 Heka 229
8.18.3 Graylog 229
8.18.4 mtail 229
8.19 小结 229
第9章 构建可监控的应用程序 230
9.1 应用程序监控入门 231
9.1.1 应该在哪里测量 231
9.1.2 测量模式 232
9.1.3 时间和观察者效应 232
9.2 指标 233
9.2.1 应用程序指标 233
9.2.2 业务指标 233
9.2.3 监控模式或放置指标的位置 233
9.2.4 工具模式 233
9.2.5 外部模式 234
9.2.6 在示例应用程序中构建指标 235
9.3 日志 248
9.3.1 添加自己的结构化日志条目 249
9.3.2 将结构化日志添加到示例应用程序 250
9.3.3 使用现有日志 255
9.4 健康检查、端点和外部监控 258
9.5 部署 262
9.5.1 向示例应用程序添加部署通知 262
9.5.2 使用部署事件 264
9.6 跟踪 267
9.7 小结 267
第 10章 通知 268
10.1 目前的通知 269
10.2 更新expired事件配置 269
10.3 升级电子邮件通知 269
10.3.1 格式化电子邮件主题 271
10.3.2 格式化电子邮件正文 271
10.4 为通知添加图表 275
10.4.1 定义数据源 276
10.4.2 定义查询参数 277
10.4.3 定义图表面板和行 279
10.4.4 绘制看板 280
10.4.5 将看板添加到Riemann通知中 281
10.4.6 一些脚本化看板示例 282
10.4.7 其他上下文 283
10.5 添加Slack作为目的地 283
10.6 添加PagerDuty作为目的地 286
10.7 维护和停机 289
10.8 从通知中学习 292
10.9 其他告警工具 295
10.10 小结 295
第 11章 监控之巅:监控Tornado 296
11.1 Tornado应用程序 297
11.2 监控策略 299
11.3 标记Tornado事件 299
11.4 监控Tornado:Web层 300
11.4.1 监控HAProxy 301
11.4.2 监控Nginx 309
11.4.3 解决Web层的监控问题 316
11.4.4 在Riemann中设置Tornado检测 318
11.4.5 webtier函数 320
11.5 向Riemann添加Tornado检测 325
11.6 小结 326
第 12章 监控Tornado:应用程序层 327
12.1 监控应用程序层的JVM 327
12.2 采集应用程序层的JVM日志 331
12.3 监控Tornado API应用程序 334
12.4 解决Tornado应用程序层监控的关注点 339
12.5 小结 342
第 13章 监控Tornado:数据层 343
13.1 监控数据层的MySQL服务器 343
13.1.1 使用MySQL数据作为指标 346
13.1.2 查询的执行时间 349
13.2 监控数据层的Redis服务器 351
13.3 解决Tornado数据层的监控 353
13.4 Tornado看板 355
13.5 扩展Tornado之外的监控 360
13.6 小结 361
附录 浅谈Clojure和函数式编程 362
^ 收 起
1.1 内容概览 2
1.2 监控的定义 2
1.2.1 业务客户 2
1.2.2 IT 客户 2
1.3 监控的实际存在形式 2
1.3.1 手动、用户发起或无监控阶段 3
1.3.2 被动式监控阶段 3
1.3.3 主动式监控阶段 4
1.4 模型分布 4
1.5 实施主动式监控 5
1.6 本书内容 7
1.7 工具的选择 8
第 2章 监控框架 9
2.1 黑盒与白盒 10
2.2 以事件、日志、指标为中心 11
2.2.1 更多关于指标的知识 11
2.2.2 指标的定义 12
2.2.3 指标的类型 13
2.2.4 指标小结 14
2.2.5 指标聚合 15
2.3 上下文和有价值的通知 16
2.4 可视化 17
2.5 传统监控有何问题 18
2.5.1 静态配置 18
2.5.2 不灵活的逻辑和阈值 18
2.5.3 以目标对象为中心 19
2.5.4 宠物和肉牛的插曲 19
2.5.5 新方法的不同之处 20
2.5.6 更智能的阈值输入 20
2.6 为监控框架采集数据 27
2.7 小结 28
第3章 使用Riemann管理事件和指标 29
3.1 Riemann简介 30
3.1.1 Riemann的架构和实现 30
3.1.2 安装Riemann 31
3.2 配置Riemann 35
3.2.1 学习Clojure 35
3.2.2 Riemann的基础配置 35
3.2.3 事件、流、索引 38
3.2.4 配置事件、流、索引 40
3.2.5 向Riemann发送事件 43
3.2.6 创建Riemann监控检测 44
3.2.7 Riemann过滤的一个小插曲 45
3.3 连接Riemann服务器 47
3.3.1 配置上游Riemann服务器 48
3.3.2 配置下游Riemann服务器 50
3.3.3 向下游发送Riemann事件 51
3.4 在上游Riemann服务器发出告警 52
3.4.1 Riemann事件限流 57
3.4.2 汇总Riemann事件 57
3.4.3 电子邮件通知的替代工具 58
3.5 测试Riemann配置 58
3.6 验证Riemann配置 60
3.7 性能、可伸缩性、高可用性 61
3.8 Riemann的替代工具 63
3.9 小结 63
第4章 Graphite和Grafana 64
4.1 Graphite简介 64
4.1.1 Carbon 65
4.1.2 Whisper 65
4.1.3 Graphite Web、Graphite-API、Grafana 66
4.2 Graphite的架构 66
4.3 安装Graphite 66
4.3.1 在Ubuntu上安装Graphite 68
4.3.2 在Red Hat上安装Graphite 68
4.3.3 安装Graphite-API 70
4.3.4 安装Grafana 71
4.3.5 通过配置管理工具安装Graphite和Grafana 73
4.4 配置Graphite和Carbon 73
4.4.1 配置Carbon指标的留存模式 78
4.4.2 估算Graphite存储空间 80
4.4.3 Carbon和Graphite服务管理 81
4.5 配置Graphite-API 84
4.5.1 Graphite-API的服务管理 86
4.5.2 测试Graphite-API 87
4.6 配置Grafana 87
4.7 为Graphite配置Riemann 91
4.8 Grafana简介 95
4.9 Graphite和Carbon冗余 100
4.10 时间和时区 103
4.10.1 手动管理时间 103
4.10.2 通过配置管理工具管理时间 106
4.10.3 检查时间状态 107
4.11 Graphite和Grafana的替代工具 107
4.11.1 商业工具 107
4.11.2 开源工具 108
4.12 Whisper的替代工具 108
4.12.1 InfluxDB 108
4.12.2 Cyanite 109
4.13 小结 109
第5章 监控主机 110
5.1 collectd简介 111
5.2 应该监控哪些主机组件 112
5.3 安装collectd 113
5.3.1 在Ubuntu上安装collectd 113
5.3.2 在Red Hat上安装collectd 114
5.3.3 通过配置管理工具安装collectd 115
5.4 配置collectd 115
5.4.1 加载和配置collectd插件来进行监控 118
5.4.2 后的准备 130
5.4.3 启用和运行collectd 130
5.5 collectd事件 130
5.6 将collectd事件发送到Graphite 132
5.7 重构collectd指标名称 133
5.8 小结 136
第6章 在Riemann中使用collectd事件 137
6.1 检测正在运行的进程 137
6.2 其他行动和改进 141
6.3 重复一些传统监控 142
6.4 通过更智能的数据进行更好的监控 143
6.4.1 构建基于中位数的检测 143
6.4.2 使用百分位数进行基于主机的检测 144
6.4.3 对检测进行抽象 145
6.4.4 对检测进行组织 149
6.5 使用Grafana绘制collectd指标 149
6.5.1 创建主机看板 150
6.5.2 创建第 一个主机图表 151
6.5.3 创建内存图表 154
6.5.4 单个主机图表 155
6.5.5 其他图表 156
6.6 网络、设备和Microsoft Windows监控 156
6.7 collectd的替代工具 157
6.7.1 商业工具 157
6.7.2 开源工具 157
6.8 小结 158
第7章 容器——另一种类型的主机 159
7.1 容器监控面临的挑战 159
7.2 监控Docker容器 162
7.2.1 Docker collectd插件 163
7.2.2 安装Docker collectd插件 164
7.2.3 配置Docker collectd插件 165
7.3 使用Riemann处理Docker collectd的统计信息 166
7.4 为Docker指标指定不同的解析度 176
7.5 清理旧的Graphite Docker指标 177
7.6 使用Docker 指标进行监控 177
7.7 其他容器监控工具 178
7.8 小结 179
第8章 日志 180
8.1 ELK技术栈入门 180
8.2 Logstash架构 181
8.3 安装Logstash 183
8.3.1 在Debian和Ubuntu上安装Java 183
8.3.2 在Red Hat上安装Java 183
8.3.3 测试Java是否安装成功 183
8.3.4 在Ubuntu和Debian上安装Logstash包 183
8.3.5 在Red Hat上安装Logstash包 184
8.3.6 通过配置管理工具安装Logstash 184
8.3.7 测试Logstash是否已安装成功 185
8.4 配置Logstash 185
8.5 安装Elasticsearch 187
8.5.1 在Debian和Ubuntu上安装Java 187
8.5.2 在Red Hat上安装Java 188
8.5.3 通过配置管理工具安装Elasticsearch 189
8.5.4 测试Elasticsearch是否安装成功 189
8.5.5 确定Elasticsearch正在运行 189
8.6 配置Elasticsearch集群和节点 190
8.7 时间和时区 193
8.8 集成Logstash和Elasticsearch 193
8.8.1 Logstash内部会发生什么 195
8.8.2 Elasticsearch内部会发生什么 200
8.9 安装Kibana 201
8.10 配置Kibana 202
8.11 运行Kibana 203
8.12 通过Syslog将主机连接到Logstash 205
8.12.1 配置Logstash 205
8.12.2 Syslog概览 206
8.12.3 配置Syslog 207
8.13 记录Docker日志 209
8.14 将数据从Logstash发送到Riemann 214
8.15 将数据从Riemann发送到Logstash 216
8.16 伸缩扩展Logstash和Elasticsearch 219
8.16.1 伸缩扩展Logstash 219
8.16.2 伸缩扩展Elasticsearch 220
8.17 监控组件 221
8.17.1 监控RSyslog 221
8.17.2 监控Logstash 221
8.17.3 监控Elasticsearch 226
8.18 Logstash的替代方案 229
8.18.1 Splunk 229
8.18.2 Heka 229
8.18.3 Graylog 229
8.18.4 mtail 229
8.19 小结 229
第9章 构建可监控的应用程序 230
9.1 应用程序监控入门 231
9.1.1 应该在哪里测量 231
9.1.2 测量模式 232
9.1.3 时间和观察者效应 232
9.2 指标 233
9.2.1 应用程序指标 233
9.2.2 业务指标 233
9.2.3 监控模式或放置指标的位置 233
9.2.4 工具模式 233
9.2.5 外部模式 234
9.2.6 在示例应用程序中构建指标 235
9.3 日志 248
9.3.1 添加自己的结构化日志条目 249
9.3.2 将结构化日志添加到示例应用程序 250
9.3.3 使用现有日志 255
9.4 健康检查、端点和外部监控 258
9.5 部署 262
9.5.1 向示例应用程序添加部署通知 262
9.5.2 使用部署事件 264
9.6 跟踪 267
9.7 小结 267
第 10章 通知 268
10.1 目前的通知 269
10.2 更新expired事件配置 269
10.3 升级电子邮件通知 269
10.3.1 格式化电子邮件主题 271
10.3.2 格式化电子邮件正文 271
10.4 为通知添加图表 275
10.4.1 定义数据源 276
10.4.2 定义查询参数 277
10.4.3 定义图表面板和行 279
10.4.4 绘制看板 280
10.4.5 将看板添加到Riemann通知中 281
10.4.6 一些脚本化看板示例 282
10.4.7 其他上下文 283
10.5 添加Slack作为目的地 283
10.6 添加PagerDuty作为目的地 286
10.7 维护和停机 289
10.8 从通知中学习 292
10.9 其他告警工具 295
10.10 小结 295
第 11章 监控之巅:监控Tornado 296
11.1 Tornado应用程序 297
11.2 监控策略 299
11.3 标记Tornado事件 299
11.4 监控Tornado:Web层 300
11.4.1 监控HAProxy 301
11.4.2 监控Nginx 309
11.4.3 解决Web层的监控问题 316
11.4.4 在Riemann中设置Tornado检测 318
11.4.5 webtier函数 320
11.5 向Riemann添加Tornado检测 325
11.6 小结 326
第 12章 监控Tornado:应用程序层 327
12.1 监控应用程序层的JVM 327
12.2 采集应用程序层的JVM日志 331
12.3 监控Tornado API应用程序 334
12.4 解决Tornado应用程序层监控的关注点 339
12.5 小结 342
第 13章 监控Tornado:数据层 343
13.1 监控数据层的MySQL服务器 343
13.1.1 使用MySQL数据作为指标 346
13.1.2 查询的执行时间 349
13.2 监控数据层的Redis服务器 351
13.3 解决Tornado数据层的监控 353
13.4 Tornado看板 355
13.5 扩展Tornado之外的监控 360
13.6 小结 361
附录 浅谈Clojure和函数式编程 362
^ 收 起
作者介绍 詹姆斯·特恩布尔(James Turnbull),曾任Kickstarter CTO、Docker公司服务和支持副总裁、Venmo公司工程副总裁、Puppet Labs技术运维副总裁。热衷于开源领域,著有近10本技术书,包括《Linux系统管理大全》《精通Puppet配置管理工具》。 译者介绍 浙江中金黄金集团CTO,曾就职于美国道富银行,历任全栈工程师、架构师、技术经理。技术涉猎广泛,在产品设计开发、架构设计、技术团队管理等方面有丰富经验。另译有《扩展jQuery》和《HTML5 JavaScript动画基础》。
本书由前Docker员工、运维专家詹姆斯·特恩布尔执笔,系统介绍现代应用程序、架构的监控和度量。全书共分为13章,主要内容包括监控和度量过程中涉及的一些基本概念,描述基于主机的监控。书中运用了大量的代码进行分析例证,有助于实时监控系统。另外,作者对系统日志、应用程序以及通知等方面进行了系统介绍,并且在*后3章中,对Tornado的组成部分展开了详细介绍,力求构建可监控的系统。本书适合软件开发工程师、系统管理员以及其他所有对系统监控和DevOps感兴趣的人阅读。
比价列表
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠