本书共分为11章,紧密围绕Prometheus的相关概念和技术展开介绍。 第1章主要介绍了监控系统的相关概念。本章首先介绍了监控的概念、监控的分类、MDD(指标驱动开发)的理念、Google四大黄金指标、USE方法、RED方法等知识;接着介绍了监控中的探针和内省、拉取和推送等常见手法;最后介绍了常见的监控系统Nagios、Zabbix、Ganglia、Open-Falcon、ZMon,以及进行监控系统选型时应该考虑的维度及误区。 第2章介绍了Prometheus的相关概念。从历史、特点、架构、局限性、快速开始这5个方面介绍了Prometheus是什么,它在监控领域有哪些使用场景,以及如何快速安装和启动Prometheus。 第3章介绍了在Spring Boot中如何集成Prometheus。本章通过介绍Micrometer的理论,辅以Spring Boot 2.x应用的案例,一步步教读者将Spring Boot 2.x应用数据传输到Prometheus监控系统中,再以可视化监控大盘的形式展现在Grafana仪表盘中。本章还介绍了当系统出现故障时,读者如何将Spring Boot 2.x应用的故障信息以告警的形式发送到邮箱或者钉钉中。本章内容对于广大开发者来说具有一定的实战指导作用。 第4章介绍了与PromQL相关的知识。PromQL是Prometheus实战的核心,是Prometheus 场景的基础,也是Prometheus的重中之重。本章用很大的篇幅,从时间序列、PromQL数据类型、指标类型、选择器、聚合操作、二元操作符、内置函数、最佳实践、性能优化等方面,通过理论联系实际的方式,全方位介绍了与PromQL相关的概念及其具体用法。 第5章介绍了PromQL的高级用法。首先介绍了39个PromQL内置函数,然后围绕HTTP API、记录规则、告警规则、metric_relabel_configs、relabel_configs等多个知识点,以理论联系实际、知识点结合案例的形式,全方位介绍了PromQL的高级用法和最佳实践。 第6章介绍了Prometheus的告警模块—Alertmanager。本章围绕Alertmanager告警的架构、工作原理、集群、触发的流程等展开介绍,接着拓展了告警分组、抑制、静默、延迟等众多知识点。读完本章,读者可以轻松理解告警是如何触发的,还可以分析、定位、解决告警轰炸、告警不准确等常见问题。 第7章介绍了Prometheus中与Exporter相关的概念。Exporter的来源主要有两个,一个是社区,另一个是用户自定义。本章从数据规范、数据采集方式、案例代码编写等方面一步步指导读者自定义Exporter。为了帮助读者提高编码水平和真正写好Exporter,本章还给出了写好Exporter的建议,并结合Node Exporter、Redis Exporter、MySQL Exporter、RocketMQ Exporter等的原理进行分析讲解。通过对本章的学习,读者可以掌握使用和定制Exporter的方法。 第8章介绍了与Spring Boot相关的高级话题,帮助读者了解Prometheus集成Spring Boot的原理、源码和解决方案。本章针对Prometheus监控RESTful、监控业务、通过注解进行监控、监控Dubbo这4个真实需求给出了源码级的技术指导方案。对Prometheus集成Spring Boot过程中可能产生的问题,如空指针、极大值、内存溢出等,本章也做了补充分析与解答。 第9章介绍了与Prometheus集群相关的实战内容。本章围绕Prometheus集群实战的架构问题,讨论了多种集群解决方案(简单HA、简单HA+远程存储、简单HA+远程存储+联邦集群)的理念、方法及优化手段,探究如何构建具有更高扩展性和可靠性的集群。本章是实战章节,在采集指标、推广Prometheus在企业中的部署等细节问题上都给出了指导。本章还通过搭建一个基于M3DB的简单HA+远程存储Prometheus K8S集群的真实案例,用步骤引导以及配置文件样例的形式,带领读者实际部署Prometheus集群。 第10章介绍了Prometheus的存储原理。Prometheus不仅是一个监控系统,还是一款优秀的时序数据库。本章主要围绕Prometheus 3.0版本的TSDB本地存储,对存储文件的格式、存储的原理、chunk、索引、block、WAL日志、tombstones、Checkpoint等相关知识点进行介绍,让读者清晰地了解Prometheus存储的运行机制。第11章介绍了Prometheus的相关技术。本章首先介绍了Prometheus的伴侣—Thanos和M3DB,并对使用这些技术的过程中可能出现的一些问题给出了指导和建议;然后介绍了继承Prometheus理念的Loki,详细介绍了Loki、ELK等相关日志技术的原理和架构方案;最后,介绍了Operator模式和Prometheus Operator模式,以及在实战中针对压测、查找中间件(如Redis问题)等场景应该如何灵活运用Prometheus。