| 作者 |
| 朱政科 陈金窗 刘政委 张其栋 郑少斌 |
| 丛书名 |
| 云计算与虚拟化技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782011181051 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------Prometheus云原生监控:运维与开发实战--------------------------- 本书主要围绕当前业界最流行的监控系统Prometheus展开,除了帮助读者快速了解Prometheus的概念、用途、环境搭建等系统性、宏观的认识,更多的让读者感受到Prometheus独孤九剑破众多技术壁垒的精彩。支持监控微服务、系统级监控、数据库监控、中间件监控、大数据监控等。 第1章主要介绍监控系统的相关概念。第2章介绍Prometheus的相关概念。第3章介绍SpringBoot如何集成Prometheus的实战案例。第4章介绍Prometheus中PromQL的相关概念。第5章继续介绍PromQL的更多高级用法。第6章介绍Prometheus的告警模块Alertmanager。第7章介绍Prometheus的exporter相关概念。第8章介绍Prometheus集成SpringBoot实战场景中的高级话题。第9章介绍Prometheus的集群实战。第10章介绍Prometheus的存储原理。第11章介绍Prometheus的其他相关技术。 ---------------------------Prometheus监控技术与实践--------------------------- 本书系统化介绍云原生监控系统Prometheus的基本概念和使用方法。本书从基础内容讲起,由浅入深,分析了监控系统的主要功能和运维原则。主要内容包括三大部分,第一部分“入门基础篇”介绍初识Prometheus云监控的基本点和主要方向,Prometheus架构及核心组件,监控指标与Labels,常用Exporter探测器等;第二部分“技术提高篇”介绍服务发现、告警处理、PromQL数据查询、可视化、Pushgateway等;第三部分“应用实践篇”介绍监控方向,如监控Docker与cAdvisor、Kubernetes、业务程序,编写Exporter探测器和日志监控指标,生产部署,云业务监控平台搭建等。 |
| 目录 |
---------------------------Prometheus云原生监控:运维与开发实战--------------------------- 赞誉 前言 第1章 监控之美 1 1.1 监控:把握应用的脉搏 2 1.2 监控架构分类 6 1.3 MDD思想:从指标到洞察力 10 1.3.1 MDD理念综述 10 1.3.2 指导实践的3大监控方法论 12 1.4 监控系统选型分析及误区探讨 13 1.4.1 黑盒监控和白盒监控 14 1.4.2 监控检查的两种模式—拉取和推送 14 1.4.3 5种常见的监控系统 15 1.4.4 监控系统的选型分析及误区探讨 24 1.5 本章小结 32 第2章 Prometheus入门 33 2.1 Prometheus发展简史 34 2.2 Prometheus的主要特点 35 2.3 Prometheus架构剖析 37 2.4 Prometheus的3大局限性 43 2.5 快速安装并启动Prometheus 43 2.6 本章小结 49 第3章 Spring Boot可视化监控实战 50 3.1 用Micrometer仪表化JVM应用 50 3.2 在Spring Boot 2.x中集成Prometheus的方法 53 3.2.1 引入Maven依赖 54 3.2.2 application.properties配置 56 3.2.3 通过MeterBinder接口采集和注册指标 57 3.2.4 以埋点的方式更新指标数据 58 3.2.5 效果展示 59 3.3 针对Spring Boot 2.x采集并可视化相关数据 61 3.4 第三方专业可视化工具—Grafana 62 3.5 Grafana高级模板 67 3.6 邮件告警的生成与扩展 77 3.6.1 通过Alertmanager生成邮件告警 77 3.6.2 邮件告警扩展:cc和bcc 79 3.7 构建钉钉告警系统 80 3.7.1 安装MacOS Docker 80 3.7.2 安装Docker镜像 81 3.7.3 钉钉接入设置 83 3.7.4 钉钉告警功能验证 84 3.8 本章小结 86 第4章 PromQL让数据会说话 87 4.1 初识PromQL 87 4.1.1 PromQL的4种数据类型 89 4.1.2 时间序列 90 4.1.3 指标 91 4.2 PromQL中的4大选择器 94 4.2.1 匹配器 95 4.2.2 瞬时向量选择器 98 4.2.3 区间向量选择器 99 4.2.4 偏移量修改器 100 4.3 Prometheus的4大指标类型 101 4.3.1 计数器 101 4.3.2 仪表盘 103 4.3.3 直方图 104 4.3.4 摘要 107 4.4 13种聚合操作 109 4.5 Prometheus的3种二元操作符 117 4.5.1 算术运算符 118 4.5.2 集合/逻辑运算符 119 4.5.3 比较运算符 120 4.5.4 优先级 122 4.6 向量匹配 122 4.6.1 一对一匹配 122 4.6.2 一对多和多对一匹配 123 4.6.3 多对多匹配 124 4.7 本章小结 124 第5章 PromQL高级实战 125 5.1 Prometheus内置函数 125 5.1.1 动态标签函数 126 5.1.2 数学运算函数 128 5.1.3 类型转换函数 133 5.1.4 时间和日期函数 133 5.1.5 多对多逻辑运算符函数 137 5.1.6 排序函数 138 5.1.7 Counter函数 139 5.1.8 Gauge函数 141 5.1.9 Histogram函数 144 5.1.10 时间聚合函数 145 5.2 HTTP API 146 5.2.1 API响应格式 148 5.2.2 表达式查询 149 5.2.3 元数据管理 150 5.2.4 其他拓展 151 5.3 两种可定期执行的规则 155 5.3.1 记录规则 155 5.3.2 告警规则 159 5.4 指标的抓取与存储 160 5.4.1 用relabel_configs抓取指标 160 5.4.2 用metric_relabel_configs存储指标 163 5.5 通过调优解决PromQL耗尽资源问题 166 5.6 本章小结 166 第6章 Prometheus告警机制深度解析 167 6.1 Alertmanager架构解析 167 6.2 AMTool的安装与用法 169 6.3 配置文件的编写与解读 171 6.4 告警规则的定义 177 6.5 关于告警的高级应用与问题处理 180 6.5.1 Prometheus告警失灵 180 6.5.2 出现告警轰炸的问题 182 6.6 构建高可用告警集群 184 6.7 本章小结 186 第7章 Prometheus独孤九剑:通过定制Exporter监控一切 187 7.1 Exporter概述 187 7.2 Exporter的数据规范 189 7.3 Exporter数据采集方式 191 7.4 一个最简单的Exporter示例 192 7.5 自己动手编写一个Exporter 195 7.6 高质量Exporter的编写原则与方法 198 7.6.1 分配合理的端口号 198 7.6.2 设计落地页 201 7.6.3 将软件版本信息提供给Prometheus的正确方法 201 7.6.4 必备指标的梳理 202 7.6.5 编写高质量Exporter的其他注意事项 209 7.7 Node Exporter源码解析 210 7.8 Exporter高级应用:开启TSL连接和Basic Auth认证 214 7.8.1 准备证书 214 7.8.2 支持TLS的配置方法 214 7.8.3 支持Basic Auth的配置方法 215 7.9 本章小结 216 第8章 Spring Boot高级监控实战 217 8.1 Controller监控实战 217 8.2 业务代码监控实战 218 8.3 通过注解进行监控的设置与实战 221 8.4 Dubbo监控实战 223 8.5 SPI机制原理解析 225 8.6 SPI高级实战:基于Dubbo的分布式日志链路TraceID追踪 228 8.7 集成Spring Boot时的常见问题及其解决方案 231 8.8 关于Micrometer的两个常见问题及其解决方案 234 8.8.1 极大值BUG问题 235 8.8.2 Actuator内存溢出问题 237 8.9 micrometer-spring-legacy源码解析 242 8.9.1 spring.factories 244 8.9.2 CompositeMeterRegistryAuto-Configuration 246 8.9.3 XX-MeterRegistry的注册 248 8.9.4 WebMvcMetricsFilter过滤器 249 8.9.5 其他 250 8.10 本章小结 251 第9章 Prometheus集群实战 252 9.1 校时 252 9.2 Prometheus的3种常见HA架构 方案 255 9.2.1 简单HA 256 9.2.2 简单HA+远程存储 256 9.2.3 简单HA+远程存储+联邦集群 257 9.2.4 联邦集群配置方式 261 9.2.5 功能分区配置方式 262 9.2.6 K8S单点故障引发的POD漂移问题 263 9.3 Prometheus集群架构采集优化方案 263 9.4 在企业中从零推广Prometheus架构 266 9.4.1 研发团队 266 9.4.2 运维团队 267 9.4.3 借助K8S一起推进上线 268 9.5 搭建基于M3DB的简单HA+远程存储Prometheus K8S集群 268 9.5.1 架构说明 268 9.5.2 K8S内部Prometheus 270 9.5.3 K8S外部Prometheus 270 9.5.4 M3DB 276 9.6 多租户、可横向扩展的Prometheus即服务—Cortex 277 9.7 本章小结 280 第10章 Prometheus存储原理与问题分析 281 10.1 本地存储文件结构解析 282 10.2 存储原理解析 286 10.3 存储配置方法 287 10.4 本地存储容量规划原则与方法 290 10.5 RAM容量规划原则与方法 291 10.6 本地存储及时性和时序性问题分析 293 10.7 本章小结 294 第11章 Prometheus其他相关技术分析与实战 296 11.1 Thanos架构与监控实战 296 11.1.1 Thanos架构解析 297 11.1.2 Thanos在Prometheus监控中的作用与实战 299 11.1.3 Thanos存在的问题 302 11.2 M3DB技术详解 303 11.3 Loki的特性、架构与应用 306 11.3.1 Loki特性 307 11.3.2 Loki架构简介 308 11.3.3 Loki使用方法 310 11.4 ELK的5种主流架构及其优劣分析 311 11.4.1 为什么要用ELK 312 11.4.2 基础架构 313 11.4.3 改良架构 314 11.4.4 二次改良架构 315 11.4.5 基于Tribe Node概念的架构 316 11.4.6 带有冷热分离功能的架构 316 11.5 Fluentd和Fluent Bit项目简介 317 11.6 Operator模式现状与未来展望 319 11.7 关于灵活运用Prometheus的几点建议 321 11.8 本章小结 323 附录A Prometheus相关端口列表 324 附录B PromQL速查手册 350 附录C Prometheus 2.x(从2.0.0到2.20.0)的重大版本变迁 354 附录D Prometheus自监控指标 363 附录E SLA服务可用性基础参考指标 366 ---------------------------Prometheus监控技术与实践--------------------------- 前 言 第一部分 概述 第1章 云计算时代的监控系统 2 1.1 云计算时代的应用系统 2 1.1.1 企业“IT云化”实现数字化转型 3 1.1.2 云计算时代的IT架构特点 3 1.1.3 云计算时代的IT管理变革 4 1.2 云计算监控的目标和挑战 5 1.2.1 云计算监控目标 5 1.2.2 云计算监控挑战 7 1.3 云计算监控的范围和架构 8 1.3.1 监控管理的范围 8 1.3.2 监控系统的基本架构 9 1.4 百花齐放的开源监控软件工具 10 1.4.1 监控系统成熟度 11 1.4.2 Zabbix 11 1.4.3 OpenTSDB 12 1.5 Prometheus监控系统 13 1.5.1 应运而生,茁壮成长 13 1.5.2 功能完善、监控所有层级指标 15 1.5.3 开放、高效、易用的完整解决方案 16 1.6 本章小结 18 第2章 Prometheus基本概念及部署 19 2.1 Prometheus架构 19 2.2 Prometheus快速部署 20 2.2.1 使用二进制文件快速部署 21 2.2.2 使用Docker快速安装 25 2.2.3 Prometheus Web UI 26 2.3 Prometheus相关概念 29 2.3.1 数据模型 29 2.3.2 Metric的四种类型 30 2.3.3 Jobs 和 Instances 32 2.4 Prometheus核心组件 34 2.5 本章小结 35 第二部分 Prometheus技术基础 第3章 Exporter 38 3.1 概述 38 3.1.1 Exporter类型 38 3.1.2 文本数据格式 39 3.1.3 获取Exporter 40 3.2 主机监控 42 3.2.1 Linux主机监控 42 3.2.2 Windows主机监控 52 3.3 数据库监控 53 3.3.1 MySQL Server exporter 54 3.3.2 Redis exporter 60 3.4 Nginx监控 62 3.5 Prometheus之黑盒监控 64 3.5.1 软件安装与部署 65 3.5.2 配置文件 67 3.6 本章小结 71 第4章 服务发现 73 4.1 基于文件的服务发现 74 4.2 基于Consul的服务发现 78 4.2.1 Consul体验应用信息 80 4.2.2 软件下载与部署 80 4.2.3 服务注册发现 83 4.2.4 与Prometheus集成 85 4.3 基于DNS的服务发现 87 4.3.1 自建DNS服务SRV记录设置 87 4.3.2 阿里云域名解析SRV记录设置 88 4.4 Relabelling 89 4.5 本章小结 93 第5章 PromQL 94 5.1 时序数据库 94 5.2 PromQL简介 96 5.2.1 数据模型与数据类型 96 5.2.2 时间序列选择器 97 5.3 PromQL聚合操作 100 5.4 PromQL运算符 102 5.4.1 算术运算符 102 5.4.2 关系运算符 103 5.4.3 向量匹配 105 5.4.4 逻辑运算符 107 5.4.5 运算符优先级 108 5.5 PromQL函数 108 5.5.1 数学函数 108 5.5.2 时间函数 109 5.5.3 标签操作函数 110 5.5.4 Counter指标增长率 111 5.5.5 Gauge指标趋势变化预测 111 5.6 PromQL查询分析 112 5.6.1 指标分析 112 5.6.2 PromQL操作分析 113 5.7 本章小结 113 第6章 告警处理 115 6.1 概述 115 6.2 Alertmanager部署 116 6.2.1 Alertmanager机制 116 6.2.2 使用二进制文件方式安装 117 6.2.3 使用Docker安装 120 6.3 Alertmanager配置 120 6.3.1 global 120 6.3.2 templates 122 6.3.3 route 122 6.3.4 receivers 124 6.3.5 inhibit_rules 125 6.4 Prometheus告警规则 126 6.4.1 与Alertmanager关联 126 6.4.2 告警规则 127 6.4.3 使用模板 132 6.5 告警接收器 133 6.5.1 Email接收告警 133 6.5.2 企业微信接收告警 136 6.5.3 基于Webhook的钉钉接收告警 142 6.5.4 告警通知模板 146 6.6 告警临时静默 147 6.7 本章小结 148 第7章 可视化 149 7.1 概述 149 7.2 Grafana安装 150 7.2.1 在CentOS上安装 151 7.2.2 在Windows上安装 154 7.2.3 使用Docker安装 155 7.3 Grafana基本概念 156 7.4 Prometheus数据源 158 7.4.1 数据源添加 158 7.4.2 页面UI说明 160 7.5 仪表盘导入 161 7.5.1 Node Exporter仪表盘 161 7.5.2 Windows Node仪表盘 164 7.5.3 MySQL仪表盘 166 7.5.4 Redis仪表盘 168 7.5.5 Nginx仪表盘 168 7.5.6 Blackbox Exporter仪表盘 169 7.6 定制监控图表 171 7.6.1 定制仪表盘 171 7.6.2 定制面板 175 7.7 本章小结 183 第8章 Pushgateway 184 8.1 概述 184 8.2 Pushgateway集成 185 8.2.1 软件下载与部署 186 8.2.2 Pushgateway UP状态 187 8.3 Pushgateway数据管理 187 8.3.1 向Pushgateway发送和查看监控指标 187 8.3.2 删除Pushgateway中的监控标准 189 8.3.3 基于推送的Prometheus监控 189 8.4 本章小结 192 第三部分 监控综合实践 第9章 OpenStack云计算监控 194 9.1 OpenStack监控架构 194 9.2 OpenStack Exporter 196 9.2.1 OpenStack Exporter部署 197 9.2.2 OpenStack监控可视化 199 9.3 OpenStack Helm监控 200 9.3.1 基于OpenStack Helm部署Prometheus 200 9.3.2 基于OpenStack Helm部署Grafana 203 9.4 本章小结 204 第10章 Docker容器监控 205 10.1 Docker容器架构与监控 205 10.1.1 Docker容器架构 205 10.1.2 Docker容器监控方式 206 10.1.3 cAdvisor架构及分析 209 10.2 部署cAdvisor容器监控 210 10.2.1 安装与运行cAdvisor 210 10.2.2 cAdvisor结果输出 212 10.2.3 cAdvisor常用搭配方案 214 10.2.4 集成Prometheus 216 10.2.5 集成Grafana实时显示 217 10.3 本章小结 218 第11章 Kubernetes监控 220 11.1 Prometheus与Kubernetes完美结合 220 11.2 在Kubernetes上部署Prometheus的传统方式 222 11.2.1 Kubernetes部署Prometheus 223 11.2.2 Kubernetes部署kube-state-metrics 230 11.2.3 Kubernetes部署node-exporter 234 11.2.4 Kubernetes部署Grafana 236 11.3 通过Operator方式部署Prometheus 239 11.4 服务配置 241 11.4.1 静态配置 241 11.4.2 服务发现配置 241 11.5 监控对象 244 11.5.1 容器监控 244 11.5.2 kube-apiserver监控 245 11.5.3 kube-state-metrics监控 246 11.5.4 主机监控 247 11.6 数据展现 247 11.6.1 在Kubernetes集群中安装Grafana 248 11.6.2 配置Grafana 248 11.6.3 集成Grafana展示数据 248 11.7 告警 250 11.7.1 安装Alertmanager 250 11.7.2 告警规则 252 11.7.3 微信告警 252 11.8 本章小结 253 第12章 微服务及业务监控 254 12.1 微服务监控 254 12.1.1 微服务架构模式 254 12.1.2 以服务为中心的监控 256 12.1.3 微服务监控的关键指标 257 12.2 构建Spring Boot微服务监控 258 12.2.1 Spring Boot监控架构 258 12.2.2 配置加载Actuator监控组件 259 12.2.3 使用io.micrometer构建监控指标 260 12.3 业务监控与运营指标 264 12.3.1 业务运营指标 264 12.3.2 业务量类指标 265 12.3.3 构建运营指标体系 266 12.4 在Spring Boot自定义Metrics 267 12.4.1 扩展Spring Boot支持监控埋点 267 12.4.2 自定义Metrics监控指标 269 12.4.3 使用Collector导出业务指标 273 12.5 本章小结 274 第13章 日志监控的设计与实现 276 13.1 概述 276 13.2 mtail日志监控 277 13.2.1 mtail安装与使用 277 13.2.2 mtail运行与输出 280 13.2.3 mtail与Prometheus、Grafana集成 281 13.2.4 处理Web服务器访问日志 283 13.2.5 集成mtail定制caching_exporter 284 13.2.6 nginx-prometheus-exporter 286 13.3 Fluentd日志监控 288 13.3.1 Fluentd系统架构 288 13.3.2 Fluentd的Prometheus监控插件 290 13.3.3 用Prometheus监控Fluentd 291 13.3.4 与Prometheus集成配置 293 13.4 grok_exporter日志监控 295 13.5 本章小结 297 第14章 Prometheus监控系统生产部署 299 14.1 最佳实践原则 299 14.2 数据存储 301 14.2.1 本地存储 301 14.2.2 远端存储 304 14.3 构建联邦集群系统 308 14.4 Thanos集群解决方案 310 14.4.1 Thanos集群架构 311 14.4.2 部署Thanos监控集群 312 14.4.3 Thanos远程存储 315 14.5 Alertmanager高可用 316 14.5.1 Gossip机制 317 14.5.2 搭建本地集群环境 319 14.6 Prometheus自动化部署 325 14.6.1 使用Ansible部署Prometheus监控系统 325 14.6.2 设计role组件 325 14.6.3 参数调整与部署 328 14.7 在监控中实现异常检测 329 14.8 本章小结 331 |