Prometheus 入门到实战

将对 Prometheus 有一个全面深刻的理解,并能帮助构建企业级大规模监控报警系统。

40766人学习

中级80课时2022/12/22更新

二维码下载学堂APP缓存视频离线看

优点知识
    • 畅销套餐
    • 精选套餐
    • 人气套餐
    • 尊享套餐
    • 高薪套餐
【云原生架构师训练营SVIP】零基础到云原生架构师高定系列课
云原生Kubernetes全栈架构师:基于世界500强的k8s实战课程
3209866人学习
¥1572.00
【K8s CKA】云原生K8s管理员认证课-零基础 考题更新免费学-全新PSI考试系统
258842人学习
¥798.00
【K8s CKS】云原生K8s安全专家认证-考题更新免费学-全新PSI考试系统
74299人学习
¥998.00
更 多 6 门 课 程
高薪云原生K8s全栈架构师+CKA+CKS
云原生Kubernetes全栈架构师:基于世界500强的k8s实战课程
3209866人学习
¥1572.00
【K8s CKA】云原生K8s管理员认证课-零基础 考题更新免费学-全新PSI考试系统
258842人学习
¥798.00
【K8s CKS】云原生K8s安全专家认证-考题更新免费学-全新PSI考试系统
74299人学习
¥998.00
更 多 3 门 课 程
云原生K8s全栈架构师【面向高薪】CKA认证【考证】
Kubernetes架构师课程前期准备-CentOS7系统安装
5690人学习
¥0.10
Kubernetes架构师课程前期准备-课程资料下载教程(请勿单独购买)
4155人学习
¥99.00
云原生Kubernetes全栈架构师:基于世界500强的k8s实战课程
3209866人学习
¥1572.00
更 多 4 门 课 程
云原生高薪实战训练营超级VIP班:帮你成为架构师,挣到高薪资
kubernetes/K8s:云计算+云原生在企业的创新之旅,颠覆传统运维和开发工作模式
454人学习
¥399.00
[2024]kubernetes/k8s+DevOps云原生全栈技术:基于世界1000强实战课程
1404988人学习
¥1499.00
从Linux到K8S高级实战讲解
29534人学习
¥399.00
更 多 30 门 课 程
云原生高薪实战训练营超级VIP班:帮你成为架构师,挣到高薪资
kubernetes/K8s:云计算+云原生在企业的创新之旅,颠覆传统运维和开发工作模式
454人学习
¥399.00
[2024]kubernetes/k8s+DevOps云原生全栈技术:基于世界1000强实战课程
1404988人学习
¥1499.00
从Linux到K8S高级实战讲解
29534人学习
¥399.00
更 多 30 门 课 程
  • 课程介绍
  • 课程大纲

适合人群:

正在准备云原生监控相关职位面试的同学; 对 Prometheus 有一点基础、但希望通过真正的行业项目,认识更实际应用场景的同学; 对大规模企业级云原生监控报警感兴趣的同学。

你将会学到:

将对 Prometheus 有一个全面深刻的理解,并能帮助构建企业级大规模监控报警系统。

  • 掌握云原生监控神器 Prometheus 的核心概念及相关的监控报警技能
  • 理解 Prometheus 的数据模型原理,掌握复杂的 PromQL 查询语句
  • 掌握 Grafana 数据可视化各种复杂的面板以及如何定制漂亮的 Dashboard
  • 掌握 Prometheus 大规模企业级监控报警实践方案
  • 掌握如何使用 Prometheus 和 Operator 监控复杂的 Kubernetes 集群
  • 掌握如何为自己的应用程序编写 Prometheus 仪表化指标数据

课程简介:

1、为什么要学习本门课程


我们知道监控是保证系统运行必不可少的功能,特别是对于 Kubernetes 这种比较庞大的系统来说,监控报警更是不可或缺,我们需要时刻了解系统的各种运行指标,也需要时刻了解我们的 Pod 的各种指标,更需要在出现问题的时候有报警信息通知到我们。



Prometheus 是 Google 内部监控报警系统的开源版本,是 Google SRE 思想在其内部不断完善的产物,它的存在是为了更快和高效的发现问题,快速的接入速度,简单灵活的配置都很好的解决了这一切,而且是已经毕业的 CNCF 项目,所以 Prometheus 是我们进军云原生领域必备的技能。


2、 课程特点


本课程我们深入浅出讲解了Prometheus 的使用,特别是对复杂晦涩难懂的 PromQL 做了大量详细的讲解,并介绍了企业级大规模监控报警系统生产实践方案,从多个角度出发让每个实践都能落地,内容从最基础部分到最佳实践,来源于自身在企业中的实践。


3、讲师简介


阳明 - 阳明的博客博主,10年互联网从业经验,全栈工程师,具备丰富的云计算经验,有上亿活跃用户应用后端实践经验,专注云原生技术领域,擅长 Python、Golang、Kubernetes 等技术,对云原生监控服务 Prometheus、VictorialMetrics 有丰富的使用经验,也是 VictorialMetrics 项目贡献者。同时也是 Kubernetes 技术社区『k8s技术圈』的运营者,云原生技术教学平台『优点知识』独立运营者,为超过上千学员传授过 Kubernetes 知识。


4、 主体大纲

工作簿1_00.png


5、配套福利


本课程配备了非常详细的课程资料文档,部分实践章节还配备了练习题目。

展开更多

课程大纲-Prometheus 入门到实战

  • 第1章Prometheus基础(49分钟4节)

  • 1-1

    Prometheus简介Prometheus 是一个监控系统和时序数据库,特别适合监控云原生环境,它具有多维数据模型和强大的查询语言,并在一个生态系统中集成了检测、指标收集、服务发现和报警等功能。本课程将为你从 0 讲解 Prometheus 的基本概念,然后一步一步深入带领你加深对 Prometheus 的理解。本课程的整个演示环境在 CentOS 7.9 上进行测试,但是整个过程基本上不需要很多的改动就可以移植到其他 Linux 发行版中。所以在学习本课程之前你将需要有 Unix/Linux 服务器管理的基础知识,系统监控经验会有所帮助,但并不是必须要的,不需要你具有 Prometheus 本身的经验,因为我们本身就是从 0 开始讲解的,所以你不用担心。

    「仅限付费用户」点击下载“1.基础.zip”

    [08:06]
  • 1-2

    Prometheus系统架构一个团队通常会运行一个或多个 Prometheus 服务器,这些服务器构成了 Prometheus 监控的核心。Prometheus 服务器可以配置为使用服务发现机制(如 DNS、Consul、Kubernetes 等)来自动发现一组指标源(所谓的目标),然后 Prometheus 通过 HTTP 定期从这些目标中以文本格式抓取指标,并将收集到的数据存储在本地时序数据库中。抓取的目标可以是一个直接暴露 Prometheus 指标的应用程序,也是可以是一个将现有系统(比如 MySQL)的 metrics 指标转换为 Prometheus 指标标准格式的中间应用(也就是我们说的 exporter),然后 Prometheus 服务器通过其内置的 Web UI、其他仪表盘工具(比如 Grafana)或者直接使用其 HTTP API 来提供收集到的数据进行查询。注意:每次抓取只会将目标的每个时间序列的当前值传输给 Prometheus,所以抓取间隔觉得了存储数据的最终采样频率。目标进程本身不保留任何历史指标数据。另外我们还可以配置 Prometheus 根据收集的指标数据生成报警,但是 Prometheus 不会直接把报警通知发送给我们,而是将原始报警转发到 Prometheus

    [04:24]
  • 1-3

    Prometheus数据模型Prometheus 采集的监控数据都是以指标(metric)的形式存储在内置的 TSDB 数据库中,这些数据都是时间序列:一个带时间戳的数据,这些数据具有一个标识符和一组样本值。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为返回结果。

    [14:51]
  • 1-4

    Prometheus安装配置前面我们提到了 Prometheus 是采用 Go 语言开发的,直接使用独立的二进制文件即可部署。下面我们就在我们的 CentOS 机器上来下载 Prometheus。

    [21:44]
  • 第2章PromQL使用(3小时27分钟14节)

  • 2-1

    PromQL介绍PromQL 是 Prometheus 监控系统内置的一种查询语言,PromQL 允许你以灵活的方式选择、聚合等其他方式转换和计算时间序列数据,该语言仅用于读取数据。可以说 PromQL 是我们学习 Prometheus 最困难也是最重要的部分,本章节我们将介绍 PromQL 的基础知识、理论基础,然后会深入了解更加高级的查询模式。通过对本章节 PromQL 的学习你将能够有效地构建、分享和理解 PromQL 查询,可以帮助我们从容应对报警规则、仪表盘可视化等需求,还能够避免一些在使用 PromQL 表达式的时候遇到的一些陷进。

    「仅限付费用户」点击下载“2.promql.zip”

    [11:38]
  • 2-2

    重新理解数据模型在开始学习 PromQL 的知识之前,我们先重新来熟悉下 Prometheus 的数据模型。

    [12:02]
  • 2-3

    指标类型从存储上来讲所有的监控指标都是相同的,但是在不同的场景下这些指标又有一些细微的差异。 例如,在 Node Exporter 返回的样本中指标 node_load1 反应的是当前系统的负载状态,随着时间的变化这个指标返回的样本数据是在不断变化的。而指标 node_cpu_seconds_total 所获取到的样本数据却不同,它是一个持续增大的值,因为其反应的是 CPU 的累计使用时间,从理论上讲只要系统不关机,这个值是会一直变大。为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了 4 种不同的指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。

    [20:00]
  • 2-4

    演示示例服务为了尽可能详细地给大家演示 PromQL 指标查询,这里我们将 Fork 一个开源的 Prometheus 演示服务来进行查询,这样可以让我们更加灵活地对指标数据进行控制,项目仓库地址:https://github.com/cnych/prometheus_demo_service,这是一个 Go 语言开发的服务,我们可以自己构建应用。

    [11:57]
  • 2-5

    PromQL基础与 SQL 查询语言(SELECT * FROM ...)不同,PromQL 是一种嵌套的函数式语言,就是我们要把需要查找的数据描述成一组嵌套的表达式,每个表达式都会评估为一个中间值,每个中间值都会被用作它上层表达式中的参数,而查询的最外层表达式表示你可以在表格、图形中看到的最终返回值。比如下面的查询语句:histogram_quantile( # 查询的根,最终结果表示一个近似分位数。 0.9, # histogram_quantile() 的第一个参数,分位数的目标值 # histogram_quantile() 的第二个参数,聚合的直方图 sum by(le, method, path) ( # sum() 的参数,直方图过去5分钟每秒增量。 rate( # rate() 的参数,过去5分钟的原始直方图序列 demo_api_request_duration_seconds_bucket{job="demo"}[5m] ) ))PromQL 表达式不仅仅是整个查询,而是查询的任何嵌套部分(比如上面的rate(...)部分),你可以把它作为一个查询本身来运行。在上面的例子中,每行注释代表一个表达式。

    [13:22]
  • 2-6

    选择时间序列本节我们将学习如何用不同的方式来选择数据,如何在单个时间戳或一段时间范围内基于标签过滤数据,以及如何使用移动时间的方式来选择数据。

    [12:58]
  • 2-7

    平均变化率通常来说直接绘制一个原始的 Counter 类型的指标数据用处不大,因为它们会一直增加,一般来说是不会去直接关心这个数值的,因为 Counter 一旦重置,总计数就没有意义了。

    [23:26]
  • 2-8

    聚合我们知道 Prometheus 的时间序列数据是多维数据模型,我们经常就有根据各个维度进行汇总的需求。PromQL 中提供了基于标签维度和基于时间维度进行聚合的两种操作。

    [18:11]
  • 2-9

    运算Prometheus 的查询语言支持基本的逻辑运算和算术运算。在 Prometheus 系统中支持下面的二元算术运算符:+ 加法- 减法* 乘法/ 除法% 模^ 幂等

    [21:46]
  • 2-10

    阈值PromQL 通过提供一组过滤的二元运算符(>、<、== 等),允许根据其样本值过滤一组序列,这种过滤最常见的场景就是在报警规则中使用的阈值。比如我们想查找在过去 15 分钟内的 status="500" 错误率大于 20% 的所有 HTTP 路径,我们在 rate 表达式后面添加一个 >0.2 的过滤运算符:rate(demo_api_request_duration_seconds_count{status="500",job="demo"}[15m]) > 0.2这个查询只会将错误率大于 20% 的数据过滤出来。

    [17:56]
  • 2-11

    集合有的时候我们需要过滤或将一组时间序列与另一组时间序列进行合并,Prometheus 提供了 3 个在瞬时向量之间操作的集合运算符。and(集合交集):比如对较高错误率触发报警,但是只有当对应的总错误率超过某个阈值的时候才会触发报警or(集合并集):对序列进行并集计算unless(除非):比如要对磁盘空间不足进行告警,除非它是只读文件系统。与算术和过滤二元运算符类似,这些集合运算符会尝试根据相同的标签集在左侧和右侧之间查找来匹配序列,除非你提供 on() 或 ignoring() 修饰符来指定应该如何找到匹配。注意:与算术和过滤二进制运算符相比,集合运算符没有 group_left() 或 group_right() 修饰符,因为集合运算符总是进行多对多的匹配,也就是说,它们总是允许任何一边的匹配序列与另一边的多个序列相匹配。

    [09:15]
  • 2-12

    排序本节我们将学习如何对查询结果进行排序,或者只选择一组序列中最大或最小的值。我们可以使用 sort()(升序) 或者 sort_desc()(降序)函数来实现对输出结果进行排序,例如,要显示按值排序的每个路径请求率,从最高到最低,我们可以用下面的语句进行查询:sort_desc(sum by(path) (rate(demo_api_request_duration_seconds_count{job="demo"}[5m])))有的时候我们并不是对所有的时间序列感兴趣,只对最大或最小的几个序列感兴趣,我们可以使用 topk() 和 bottomk() 这两个运算符来操作,可以返回 K 个最大或最小的序列,比如只显示每个 path 和 method 的前三的请求率,我们可以使用下面的语句来查询。topk(3, sum by(path, method) (rate(demo_api_request_duration_seconds_count{job="demo"}[5m])))

    [05:59]
  • 2-13

    直方图在这一节中,我们将学习直方图指标,了解如何根据这些指标来计算分位数。Prometheus 中的直方图指标允许一个服务记录一系列数值的分布。直方图通常用于跟踪请求的延迟或响应大小等指标值,当然理论上它是可以跟踪任何根据某种分布而产生波动数值的大小。Prometheus 直方图是在客户端对数据进行的采样,它们使用的一些可配置的(例如延迟)bucket 桶对观察到的值进行计数,然后将这些 bucket 作为单独的时间序列暴露出来。

    [20:26]
  • 2-14

    检测本节我们将学习如何来检查我们的实例数据抓取健康状况。每当 Prometheus 抓取一个目标时,它都会存储一个合成的样本,其中包含指标名称 up 和被抓取实例的 job 和 instance 标签,如果抓取成功,则样本的值被设置为 1,如果抓取失败,则设置为 0,所以我们可以通过如下所示的查询来获取当前哪些实例处于正常或挂掉的状态:up{job="demo"}正常三个演示服务实例都处于正常状态,所以应该都为1。如果我们将第一个实例停掉,重新查询则第一个实例结果为0。

    [08:54]
  • 第3章服务发现(1小时1分钟4节)

  • 3-1

    Relabeling机制Relabeling 重新标记用于配置 Prometheus 元信息的方式,它是转换和过滤 Prometheus 中 label 标签对象的核心,本章节我们将了解 Relabeling 规则的工作原理,并能够将它们应用于不同的场景中。Prometheus 发现、抓取和处理不同类型的 label 标签对象,根据标签值操作或过滤这些对象非常有用,比如:只监视具有特定服务发现注解的某些目标,通常在服务发现中使用向目标抓取请求添加 HTTP 查询参数仅存储从指定目标中提取样本的子集将抓取序列的两个标签值合并为一个标签Relabeling 是作为一系列转换步骤实现的,我们可以在 Prometheus 的配置文件中应用这些步骤来过滤或修改标记对象,我们可以对一下类型的标记对象应用 Relabeling 操作:发现的抓取目标(relabel_configs)抓取的单个样本(metric_relabel_configs)发送给 Alertmanager 的报警(alert_relabel_configs)写到远程存储的样本(write_relabel_configs)

    「仅限付费用户」点击下载“3.服务发现.zip”

    [11:42]
  • 3-2

    Relabeling规则Relabeling 规则主要由以下的一些配置属性组成,但对于每种类型的操作,只使用这些字段的一个子集。action:执行的 relabeling 动作,可选值包括 replace、keep、drop、hashmod、labelmap、labeldrop 或者 labelkeep,默认值为 replace。separator:分隔符,一个字符串,用于在连接源标签 source_labels 时分隔它们,默认为;。source_labels:源标签,使用配置的分隔符串联的标签名称列表,并与提供的正则表达式进行匹配。target_label:目标标签,当使用 replace 或者 hashmod 动作时,应该被覆盖的标签名。regex:正则表达式,用于匹配串联的源标签,默认为 (.*),匹配任何源标签。modulus:模数,串联的源标签哈希值的模,主要用于 Prometheus 水平分片。replacement:replacement 字符串,写在目标标签上,用于替换 relabeling 动作,它可以参考由 regex 捕获的正则表达式捕获组。

    [20:51]
展开更多

“优点知识”老师的其他课程更多+

在线
客服
APP
下载

下载Android客户端

下载iphone 客户端

官方
微信

关注官方微信

返回
顶部