- 畅销套餐
- 精选套餐
- 人气套餐
- 尊享套餐
- 高薪套餐
- 课程介绍
- 课程大纲
适合人群:
正在准备云原生监控相关职位面试的同学; 对 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、 主体大纲
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-3
指标类型从存储上来讲所有的监控指标都是相同的,但是在不同的场景下这些指标又有一些细微的差异。 例如,在 Node Exporter 返回的样本中指标 node_load1 反应的是当前系统的负载状态,随着时间的变化这个指标返回的样本数据是在不断变化的。而指标 node_cpu_seconds_total 所获取到的样本数据却不同,它是一个持续增大的值,因为其反应的是 CPU 的累计使用时间,从理论上讲只要系统不关机,这个值是会一直变大。为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了 4 种不同的指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。
[20:00]开始学习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-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]开始学习第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]开始学习
“优点知识”老师的其他课程更多+