Prometheus结合K8s(二)使用

 上一篇介绍了如何搭建 Prometheus结合K8s(一)搭建-CSDN博客,这章介绍使用

页面访问

kubectl get svc -n prom 看promeheus和granfana的端口访问页面

Prometheus

点击status—target,可以看到metrics的数据来源,即各exporter,点击相应exporter上的链接可查看这个exporter提供的metrics明细。

查看指标能否正常输出

访问grafana,添加prometheus数据源: 默认管理账号密码为admin admin

添加数据源,由于都在集群内,所以Prometheusip写cluster ip和端口即可,因为grafana和Prometheus都在集群内,也可以写servicename(五段式)然后import模板,也可以从网上找现成的模板

可以导入监控模板

编辑具体的监控项

这些语句查的是Prometheus里面的监控项,在上方的Prometheus面板graph里面都能查到指标数据

监控项

直接从grafana的官网下载json文件,导入即可

315 用于监控 Kubernetes 集群和 Pods。

057用于监控 MySQL 的查询、连接、缓存等指标。

kubernetes

sum (container_memory_working_set_bytes{id="/",kubernetes_io_hostname=~"^$Node$"}) / sum (machine_memory_bytes{kubernetes_io_hostname=~"^$Node$"}) * 100

这个 PromQL 查询表达式计算了指定 Kubernetes 节点的容器内存使用率百分比,其分解如下:

  • sum(container_memory_working_set_bytes{id="/",kubernetes_io_hostname=~"^$Node$"})

    • 这个部分用于计算指定节点上所有容器的实际使用内存总量,container_memory_working_set_bytes 表示各个容器当前的工作集内存,即容器实际消耗的内存,不包含缓存的内存。通过 {id="/"} 过滤出根目录的内存使用量。

    • 标签 kubernetes_io_hostname=~"^$Node$" 用于匹配特定节点的主机名,其中 $Node$ 是目标节点的占位符。

  • sum(machine_memory_bytes{kubernetes_io_hostname=~"^$Node$"})

    • 此部分用于获取目标节点的总内存量,通过 machine_memory_bytes 指标得出节点的物理内存总量。

    • 同样使用 kubernetes_io_hostname=~"^$Node$" 来锁定节点。

  • 最终表达式:(工作集内存 / 总内存) * 100

    • 将两个部分相除并乘以 100,得到该节点的容器内存使用率百分比。此表达式可以帮助管理员了解容器内存的利用率,识别内存过载风险。

sum (rate (container_cpu_usage_seconds_total{id="/",kubernetes_io_hostname=~"^$Node$"}[$interval])) / sum (machine_cpu_cores{kubernetes_io_hostname=~"^$Node$"}) * 100

这个 PromQL 查询用于计算指定 Kubernetes 节点的 CPU 使用率百分比,其结构分解如下:

  1. sum(rate(container_cpu_usage_seconds_total{id="/",kubernetes_io_hostname=~"^$Node$"}[$interval]))

    • 这个部分计算在指定时间窗口内($interval)每个容器的 CPU 使用率。container_cpu_usage_seconds_total 指标表示容器使用 CPU 的总时间(以秒为单位)。rate() 函数计算该指标在时间范围内的变化率,从而得到每秒的 CPU 使用量。

    • 标签 id="/" 通常用于选择容器根路径的指标,而 kubernetes_io_hostname=~"^$Node$" 则用于指定要监控的节点。

  2. sum(machine_cpu_cores{kubernetes_io_hostname=~"^$Node$"})

    • 此部分获取目标节点的总 CPU 核心数。machine_cpu_cores 指标表示物理机的 CPU 核心数量,通过相同的标签过滤来确保只选择特定节点的数据。

  3. 最终表达式:(CPU 使用总量 / 总核心数) * 100

    • 将容器的 CPU 使用率与总 CPU 核心数相除,并乘以 100,得到该节点的 CPU 使用率百分比。

sum (container_fs_usage_bytes{device=~"$device",id="/",kubernetes_io_hostname=~"^$Node$"}) / sum (container_fs_limit_bytes{device=~"$device",id="/",kubernetes_io_hostname=~"^$Node$"}) * 100

sum(container_fs_usage_bytes{device=~"$device",id="/",kubernetes_io_hostname=~"^$Node$"})

  • 这一部分计算指定节点上所有容器在指定文件系统设备($device)上的实际使用字节数。container_fs_usage_bytes 指标表示容器文件系统的实际使用空间。

  • 标签 id="/" 通常指根文件系统,而 kubernetes_io_hostname=~"^$Node$" 用于匹配特定的节点。

sum(container_fs_limit_bytes{device=~"$device",id="/",kubernetes_io_hostname=~"^$Node$"})

  • 此部分获取指定文件系统设备的总限制字节数,container_fs_limit_bytes 指标表示容器文件系统的大小限制。

  • 同样使用 device=~"$device" 和 kubernetes_io_hostname=~"^$Node$" 标签进行过滤。

最终表达式:(文件系统使用字节数 / 文件系统限制字节数) * 100

  • 将容器的文件系统使用字节数与总限制字节数相除,结果乘以 100,得到该节点文件系统的使用率百分比。

sum (rate (container_cpu_usage_seconds_total{image!="",name=~"^k8s_.*",kubernetes_io_hostname=~"^$Node$"}[$interval])) by (pod_name)

这个 PromQL 查询用于计算 Kubernetes 中每个 Pod 的 CPU 使用率,其结构分析如下:

  1. sum(rate(container_cpu_usage_seconds_total{image!="",name=~"^k8s_.*",kubernetes_io_hostname=~"^$Node$"}[$interval]))

    • container_cpu_usage_seconds_total:此指标表示容器使用 CPU 的总时间(以秒为单位)。

    • rate() 函数用于计算指定时间窗口内($interval)的 CPU 使用速率,即每秒的 CPU 使用量。

    • {image!=""}:此过滤条件确保只计算有图像标签的容器。

    • name=~"^k8s_.*":此过滤条件匹配名称以 k8s_ 开头的容器,通常表示这些容器是由 Kubernetes 管理的。

    • kubernetes_io_hostname=~"^$Node$":此过滤条件用于匹配特定节点,$Node$ 是目标节点的占位符。

  2. by (pod_name)

    • 这部分指示 Prometheus 按 Pod 名称对结果进行分组,以便每个 Pod 的 CPU 使用率可以单独计算和显示。

sum (container_memory_working_set_bytes{image!="",name=~"^k8s_.*",kubernetes_io_hostname=~"^$Node$"}) by (pod_name)

这个 PromQL 查询计算每个 Pod 的内存实际使用量(工作集内存),具体结构如下:

  1. sum(container_memory_working_set_bytes{image!="",name=~"^k8s_.*",kubernetes_io_hostname=~"^$Node$"})

    • container_memory_working_set_bytes 指标表示容器正在使用的实际内存量,不包括缓存内存(即工作集内存)。

    • image!="":过滤掉没有关联镜像的容器,确保仅包含实际正在运行的应用。

    • name=~"^k8s_.*":匹配名称以 k8s_ 开头的容器,通常表示由 Kubernetes 管理的容器。

    • kubernetes_io_hostname=~"^$Node$":匹配特定节点,$Node$ 是目标节点的占位符。

  2. by (pod_name)

    • 该部分按 Pod 名称分组,确保每个 Pod 的工作集内存独立显示。

Mysql

mysql_global_status_uptime

用于监控 MySQL 实例的运行时长。具体说明如下:

  • mysql_global_status_uptime:这是 MySQL 的 Uptime 指标,表示 MySQL 实例自上次启动以来的总运行时间(单位为秒)。此指标可以帮助判断 MySQL 实例的稳定性和重启频率。如果 uptime 较短且频繁重启,可能表明存在系统故障或资源问题。

rate(mysql_global_status_queries[$__interval])

用于计算 MySQL 实例在特定时间间隔内的查询速率,具体分析如下:

  • mysql_global_status_queries:此指标代表 MySQL 实例自启动以来处理的查询总数,包括 SELECT、INSERT、UPDATE、DELETE 等操作。该计数指标会随着时间累积增加。

  • rate() 函数:rate() 用于计算特定时间窗口($__interval)内的查询速率,即每秒查询次数。这个速率可以揭示 MySQL 数据库的负载情况,特别是在不同时间段的查询量变化。例如,可以帮助识别高峰时段的查询负载,以便优化资源分配。

mysql_global_variables_innodb_buffer_pool_size

提供了 MySQL 实例的 innodb_buffer_pool_size 配置值,具体解释如下:

  • mysql_global_variables_innodb_buffer_pool_size:该指标表示 InnoDB 缓冲池的大小(以字节为单位),这是 MySQL 用于缓存数据和索引的内存区域。InnoDB 缓冲池的大小对数据库的性能有直接影响,尤其是当数据库的大部分数据都能缓存到缓冲池时,会显著减少磁盘 I/O,提升查询性能。

connections

sum(max_over_time(mysql_global_status_threads_connected{[$__interval]))

用于监控在给定时间窗口内 MySQL 实例的最大连接数具体分解如下:

  1. mysql_global_status_threads_connected:该指标表示当前连接到 MySQL 实例的线程数。这个数值会随着时间动态变化,反映当前有多少客户端连接处于活跃状态。

  2. max_over_time():该函数用于计算指定时间窗口($interval)内的最大连接数。例如,如果 $interval 为 5 分钟,max_over_time 会返回在过去 5 分钟内连接数的峰值。通过观察此数值,可以了解 MySQL 在特定时间段内的最大连接负载。

  3. sum():最外层的 sum() 作用是将多个实例的最大连接数相加,计算整个 MySQL 集群的连接负载总量。

sum(mysql_global_status_max_used_connections)

用于监控 MySQL 实例在历史上达到的最大连接数,具体说明如下:

  • mysql_global_status_max_used_connections:该指标表示 MySQL 自启动以来所记录的最大并发连接数,即历史上出现的最高连接数峰值。此指标可以帮助了解 MySQL 实例连接的最高负载情况,确保最大连接数限制合理。如果此数值接近或超过 max_connections 设置,则可能出现连接拒绝或性能下降的问题。

  • sum():外层的 sum() 用于将符合过滤条件的各实例的最大连接数相加。这样可以在多实例环境中汇总各 MySQL 实例的最大连接数,得出整个 MySQL 集群的最大历史连接负载。

sum(mysql_global_variables_max_connections)

用于获取 MySQL 配置中允许的最大连接数总和。该查询提供了所有符合过滤条件的 MySQL 实例中配置的 max_connections 值的总和。

  • mysql_global_variables_max_connections:此指标表示 MySQL 实例配置的 max_connections 参数值,它定义了允许的最大并发连接数。设置适当的 max_connections 值对于避免连接过载至关重要。

  • sum():最外层的 sum() 会将符合条件的所有实例的最大连接数汇总,以提供一个整体视图,了解 MySQL 集群中所有实例所允许的总连接容量。

sum(max_over_time(mysql_global_status_threads_connected[$__interval]))

用于在给定时间窗口内计算 MySQL 实例的最大连接数。其作用和结构解析如下:

  1. mysql_global_status_threads_connected:此指标表示当前连接到 MySQL 的线程数量,反映了实时的连接数负载。这个值随时间变化,表示有多少客户端线程正在连接 MySQL 实例。

  2. max_over_time() 函数:此函数用于在指定时间窗口($interval)内计算连接数的最大值。例如,如果 $interval 设置为 5 分钟,则 max_over_time() 会返回过去 5 分钟中连接数的峰值。此峰值帮助了解 MySQL 实例在高负载期的最大连接数。

  3. sum() 函数:sum() 汇总所有符合查询条件的 MySQL 实例的最大连接数。在多实例环境中,这个函数可以计算整个 MySQL 集群的峰值连接负载,从而提供一个整体视图。

table locks

Questions

rate(mysql_global_status_questions[$__interval])

用于计算 MySQL 实例在特定时间窗口内执行的 SQL 查询速率。此查询可以帮助数据库管理员评估 MySQL 的查询负载情况,尤其适用于监控 MySQL 在不同时段的查询波动情况。以下是详细说明:

  1. mysql_global_status_questions:该指标表示 MySQL 实例自启动以来执行的总查询数量,包含所有 SQL 请求(如 SELECT、INSERT、UPDATE、DELETE 等)。它是一个累积计数指标,随着时间不断增加。

  2. rate() 函数:rate() 函数计算指定时间窗口($interval)内的平均速率。对于 mysql_global_status_questions 指标,rate() 会返回在给定的时间间隔内每秒执行的查询数量,能够准确捕捉到 MySQL 的查询速率波动。例如,如果 $interval 为 5 分钟,则 rate() 会返回过去 5 分钟的每秒查询平均数量。

thread cache

sum(mysql_global_variables_thread_cache_size)

用于监控 MySQL 实例的线程缓存大小。以下是对该查询的详细解析:

  1. mysql_global_variables_thread_cache_size:此指标表示 MySQL 配置的线程缓存大小(以线程数为单位)。线程缓存用于存储线程的复用,能够减少创建和销毁线程的开销。当有新的客户端连接时,如果缓存中有可用线程,则可以快速响应,从而提升性能。

  2. sum() 函数:此函数用于将多个 MySQL 实例的线程缓存大小进行汇总,提供整个 MySQL 集群中线程缓存的总配置。这对于评估集群整体的线程管理能力非常重要。

sum(mysql_global_status_threads_cached)

用于监控 MySQL 实例的缓存线程数量。以下是对该查询的详细分析:

  1. mysql_global_status_threads_cached:此指标表示当前从线程缓存中获取的线程数量。线程缓存用于存储已创建的线程,以便在新连接请求到来时快速复用,从而提高性能。此值表示在连接期间实际使用了多少线程缓存。

  2. sum() 函数:这个函数会将所有符合条件的 MySQL 实例中的线程缓存数量进行求和,提供整个 MySQL 集群的线程缓存使用情况。这对于了解集群的线程利用效率和性能调优非常重要。

监控 threads_cached 的数量可以帮助数据库管理员评估线程缓存的有效性。如果线程缓存的使用量较高,这可能意味着数据库在连接管理方面表现良好;反之,如果缓存利用率低,则可能需要调整 thread_cache_size 参数,以提升性能。此查询对于容量规划和资源优化尤其有用。

tenproary Object

tenporary

sum(rate(mysql_global_status_created_tmp_tables [$__interval]))

用于监控 MySQL 实例在特定时间窗口内创建的临时表的速率。以下是对该查询的详细分析:

  1. mysql_global_status_created_tmp_tables:该指标表示 MySQL 自启动以来创建的临时表的总数。临时表通常在执行某些 SQL 查询(如 GROUP BY 和 ORDER BY)时使用,能够有效地处理中间结果。

  2. rate() 函数:rate() 函数计算在指定时间窗口($interval)内的平均速率。它会返回在该时间段内每秒创建的临时表数量。例如,如果 $interval 为 5 分钟,rate() 会计算过去 5 分钟内每秒创建的临时表的平均数量。这个速率可以帮助监控系统在处理复杂查询时的性能表现。

  3. sum() 函数:sum() 用于将符合条件的所有 MySQL 实例的临时表创建速率进行汇总,适用于多实例环境,能够提供整体视图。

sum(rate(mysql_global_status_created_tmp_disk_tables [$__interval]))

用于监控 MySQL 实例在特定时间窗口内创建的临时磁盘表的速率。以下是对该查询的详细分析:

  1. mysql_global_status_created_tmp_disk_tables:该指标表示 MySQL 自启动以来创建的临时磁盘表的总数。临时磁盘表通常在处理复杂查询时生成,尤其是当内存中的临时表无法满足要求时,MySQL 会将其写入磁盘以存储中间结果。

  2. rate() 函数:rate() 计算在指定时间窗口($interval)内的平均速率。它返回在该时间段内每秒创建的临时磁盘表数量。例如,如果 $interval 为 5 分钟,则 rate() 会计算过去 5 分钟内每秒创建的临时磁盘表的平均数量。这对于了解系统的查询性能和资源利用情况非常重要。

  3. sum() 函数:sum() 用于汇总所有符合条件的 MySQL 实例中的临时磁盘表创建速率,适合多实例环境,为管理员提供整体视图。

监控临时磁盘表的创建速率可以帮助数据库管理员识别潜在的性能问题。频繁创建临时磁盘表可能表明 SQL 查询的设计不当、缺乏适当的索引或内存配置不足。这可能导致性能下降,因为磁盘 I/O 通常比内存访问慢。

Select types

sum(rate(mysql_global_status_select_full_join[$__interval]))

用于监控 MySQL 实例在特定时间窗口内执行的全连接查询的速率。以下是对该查询的详细分析:

  1. mysql_global_status_select_full_join:此指标表示自 MySQL 启动以来执行的全连接查询的总数。全连接(Full Join)是指在两个表中返回所有行的连接,不论它们是否匹配。此查询通常在没有合适索引的情况下执行,可能导致性能问题。

  2. rate() 函数:rate() 函数用于计算在指定时间窗口($interval)内的平均速率,返回在该时间段内每秒执行的全连接查询数量。例如,如果 $interval 为 5 分钟,则 rate() 会计算过去 5 分钟内每秒执行的全连接查询的平均数量。

  3. sum() 函数:此函数用于将符合条件的所有 MySQL 实例的全连接查询速率进行汇总,以提供整体视图,特别适合于多实例环境。

监控全连接查询的执行速率对于数据库管理员来说非常重要,因为全连接通常会导致性能下降。频繁的全连接查询可能表明查询设计不佳或缺乏适当的索引。通过监控此指标,管理员可以识别潜在的性能问题并进行优化,例如优化 SQL 查询、增加索引或调整数据库设计。

sum(rate(mysql_global_status_select_range [$__interval]))

用于监控 MySQL 实例在特定时间窗口内执行的范围查询(Range Queries)的速率。以下是对该查询的详细分析:

  1. mysql_global_status_select_range:此指标表示自 MySQL 启动以来执行的范围查询的总数。范围查询通常是指通过使用条件限制返回结果集的一部分,例如 WHERE 子句中的条件。在查询中使用索引可以提高范围查询的性能。

  2. rate() 函数:rate() 函数计算在指定时间窗口($interval)内的平均速率,返回在该时间段内每秒执行的范围查询数量。例如,如果 $interval 为 5 分钟,则 rate() 会计算过去 5 分钟内每秒执行的范围查询的平均数量。

  3. sum() 函数:此函数用于汇总所有符合条件的 MySQL 实例的范围查询速率,适合多实例环境,能够提供整体视图。

sum(rate(mysql_global_status_select_scan[$__interval]))

用于监控 MySQL 实例在特定时间窗口内执行的扫描查询(Scan Queries)的速率。以下是对该查询的详细分析:

  1. mysql_global_status_select_scan:该指标表示自 MySQL 启动以来执行的扫描查询的总数。扫描查询通常是指没有使用索引,而是通过全表扫描来返回结果。全表扫描可能会导致性能下降,特别是在数据量较大的表中。

  2. rate() 函数:rate() 函数计算在指定时间窗口($interval)内的平均速率,返回在该时间段内每秒执行的扫描查询数量。例如,如果 $interval 为 5 分钟,则 rate() 会计算过去 5 分钟内每秒执行的扫描查询的平均数量。

  3. sum() 函数:该函数用于汇总所有符合条件的 MySQL 实例中的扫描查询速率,适合多实例环境,提供整体视图。

sorts

mysql sorts

sum(rate(mysql_global_status_sort_rows [$__interval]))

用于监控 MySQL 实例在特定时间窗口内排序的行数的速率。以下是对该查询的详细分析:

  1. mysql_global_status_sort_rows:该指标表示自 MySQL 启动以来用于排序操作的行数总计。排序操作通常在执行查询时需要处理 ORDER BY 子句,或者在某些情况下使用 GROUP BY,涉及对大量数据的排序。

  2. rate() 函数:rate() 函数计算在指定时间窗口($interval)内的平均排序行数的速率,返回在该时间段内每秒进行排序的行数。例如,如果 $interval 为 5 分钟,则 rate() 会计算过去 5 分钟内每秒进行排序的行数的平均数量。

  3. sum() 函数:此函数用于汇总所有符合条件的 MySQL 实例中的排序行数的速率,适合多实例环境,提供整体视图。

  4. mysql_global_status_sort_rows

    • 含义:表示自 MySQL 启动以来处理的排序行数总数。这反映了执行的排序操作的复杂性。

  5. mysql_global_status_sort_scan

    • 含义:表示自 MySQL 启动以来执行的扫描排序的总次数。扫描排序发生在没有使用索引的情况下,通常会导致性能下降。

  6. mysql_global_status_sort_range

    • 含义:表示自 MySQL 启动以来执行的范围排序的总次数。范围排序通常是指使用了范围条件的排序操作。

  7. mysql_global_status_sort_merge_passes

    • 含义:表示自 MySQL 启动以来进行的合并排序操作的总次数。合并排序用于将多个结果集合并成一个最终结果,通常在处理大量数据时会发生。

  • 排序性能:高的 sort_rows 和 sort_scan 数量可能表明查询没有有效利用索引,从而导致性能下降。

  • 内存使用:高的 sort_merge_passes 表示 MySQL 在合并结果时可能需要更多的内存和计算资源。

  • 查询优化:结合这些指标,数据库管理员可以识别需要优化的查询,确保使用适当的索引来减少不必要的扫描和排序操作。

slow queries

sum(rate(mysql_global_status_slow_queries[$__interval]))

用于监控特定时间窗口内慢查询的速率。以下是对该查询的详细分析:

  • mysql_global_status_slow_queries:此指标表示自 MySQL 启动以来执行的慢查询的总数。慢查询是指执行时间超过设定阈值的查询,这通常是在 MySQL 配置中指定的 long_query_time。

  • rate() 函数:该函数用于计算在指定时间窗口($interval)内每秒的慢查询速率。例如,如果 $interval 是 5 分钟,那么 rate() 会计算过去 5 分钟内每秒的慢查询平均数量。

aborted

connection

sum(rate(mysql_global_status_aborted_connects [$__interval]))

sum(rate(mysql_global_status_aborted_clients [$__interval]))

  • mysql_global_status_aborted_connects

    • 含义:表示自 MySQL 启动以来中止的连接总数。这通常是由于身份验证失败、用户未提供所需的参数或连接超时等原因引起的。

    • 监控目的:高数量的中止连接可能表明存在安全问题(例如密码错误)或应用程序设计不当,可能需要优化连接池或身份验证机制。

  • mysql_global_status_aborted_clients

    • 含义:表示自 MySQL 启动以来中止的客户端总数。这通常是由于客户端在没有发送完整请求的情况下关闭连接引起的。

    • 监控目的:高数量的中止客户端可能指示应用程序异常或用户操作不当,可能导致资源浪费。

table locks

sum(rate(mysql_global_status_table_locks_immediate [$__interval]))

sum(rate(mysql_global_status_table_locks_waited [$__interval]))

用于衡量表级锁的使用情况。以下是对这两个指标的详细分析及其在 Prometheus 中的查询。

  • mysql_global_status_table_locks_waited

    • 含义:表示自 MySQL 启动以来等待表锁的总次数。表锁用于防止多个事务对同一表的数据进行冲突性操作。

    • 监控目的:高数量的等待表锁可能表明存在锁竞争,导致性能下降。这通常发生在高并发情况下,多个事务同时尝试访问同一表。

  • mysql_global_status_table_locks_immediate

    • 含义:表示自 MySQL 启动以来立即获取表锁的总次数。此指标表明在没有等待的情况下成功获取锁的情况。

    • 监控目的:这个值与 table_locks_waited 结合使用,可以帮助评估锁的效率和事务的并发性。

network

mysql_global_status_bytes_received

  • 含义:表示自 MySQL 启动以来接收到的字节总数。此指标包括客户端发送给 MySQL 的所有查询和数据。

  • 监控目的:可以帮助管理员评估流入 MySQL 数据库的数据量,了解应用程序与数据库之间的交互频率和数据传输量。

mysql_global_status_bytes_sent

  • 含义:表示自 MySQL 启动以来发送给客户端的字节总数。此指标包括 MySQL 返回给客户端的结果集和状态信息。

  • 监控目的:可以帮助管理员了解 MySQL 向客户端传输数据的量,反映查询的复杂度和结果集的大小。

memory

通过计算总的 InnoDB 数据页大小,数据库管理员可以:

  • 评估缓冲池的使用效率:了解当前使用的内存量与设定的缓冲池大小的比例。

  • 监测性能瓶颈:如果数据页数量过多而缓冲池大小不够,可能导致性能下降,这时可能需要调整缓冲池大小或优化查询。

command,handlers

command

topk(5,rate(mysql_global_status_commands_total[$__interval])>0)

用于获取执行 MySQL 命令的速率,并返回速率最高的前五个命令

rate(...):计算 mysql_global_status_commands_total 指标在给定时间间隔($__interval)内的速率。此指标表示自 MySQL 启动以来已执行的命令总数。

{job=~"$job", instance=~"$instance"}:使用正则表达式匹配特定的作业和实例,以便从监控数据中筛选出相应的指标。

> 0:过滤条件,只返回执行次数大于零的命令。

topk(5, ...):从计算出的速率中返回前五个最大值。即找出最活跃的五个 MySQL 命令。

handlers

rate(mysql_global_status_handlers_total{handler!~"commit|rollback|savepoint.|prepare"}[$__interval]) or irate(mysql_global_status_handlers_total{handler!~"commit|rollback|savepoint.|prepare"}[5m])

该 Prometheus 查询用于监控 MySQL 的处理器指标,重点关注与事务无关的处理器(如提交、回滚、保存点和准备的处理器)

rate(...):计算在给定时间窗口($__interval)内的速率,表示每秒的处理器调用次数。这是一个用于计算时间序列数据变化率的函数,适合监控指标。

mysql_global_status_handlers_total:这是一个表示自 MySQL 启动以来各种处理器调用总数的指标。处理器通常指不同类型的查询或操作的统计。

{instance=~"$host", handler!~"commit|rollback|savepoint.*|prepare"}

  • instance=~"$host":通过正则表达式匹配特定的 MySQL 实例。

  • handler!~"commit|rollback|savepoint.*|prepare":过滤掉与事务相关的处理器。这意味着只关注非事务性操作的处理器。

or:表示如果第一个 rate 查询没有返回结果,将使用 irate 查询的结果。

irate(...):计算在过去 5 分钟内的即时速率,适用于更短时间内的快速变化监测。适合捕捉突发事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机学习笔记 1. 点亮一个LED灯

把基础的东西都过一下,用来学习记录一下。 目录 1、Keil工程 2、Keil实现代码 3、烧录程序 0、实现的功能 点亮一个LED灯 1、Keil工程 打开Keil,Project----New uVision Project,工程文件命名----OK 选择单片机类型AT89C52,和…

Ubuntu安装sublime Tex

Ubuntu安装sublime Text步骤_ubuntu sublime-CSDN博客 Sublime Text 3 - Sublime Text sudo dpkg -i sublime-text_build_3211_amd64.deb

基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面

文章目录 0、前言 1、目标 2、图片的预处理 3、SD NAND的预处理 4、FPGA实现 4.1、详细设计 4.2、仿真 4.3、实验结果 前言 在上一篇文章《基于FPGA的SD卡的数据读写实现(SD NAND FLASH)》中,我们了解到了SD NAND Flash的相关知识&am…

Ubuntu24.04LTS设置root用户可远程登录

Ubuntu24.04LTS设置root用户可远程登录 文章目录 Ubuntu24.04LTS设置root用户可远程登录1. 设置root密码2. 设置root用户可远程登录1. 查看ssh服务是否安装2. 安装ssh服务3. 再次查看ssh服务是否安装4. 配置ssh文件5. 重启ssh服务6. root远程登录 1. 设置root密码 Ubuntu安装后…

VM虚拟机装MAC后无法联网,如何解决?

✨在vm虚拟机上,给虚拟机MacOS设置网络适配器。选择NAT模式用于共享主机的IP地址 ✨在MacOS设置中设置网络 以太网 使用DHCP ✨回到本地电脑上,打开 服务,找到VMware DHCP和VMware NAT,把这两个服务打开,专一般问题就…

python中的base64使用小笑话

在使用base64的时候将本地的图片转换为base64 代码如下,代码绝对正确 import base64 def image_to_data_uri(image_path):with open(image_path, rb) as image_file:image_data base64.b64encode(image_file.read()).decode(utf-8)file_extension image_path.sp…

bert的模型训练和使用情绪识别

bert我的理解从它的名字可以看出来,它是一种双向的编码器解码器结构,也就是说它非常的高效,非常的高级,在它非常小的麻雀腹内居然五脏俱全。所以按道理来说,它应该是比gpt模型更加全面。所以我们有学习它的必要。 安装…

一分钟学习数据安全——IAM系统的数据访问控制模型

数据访问控制是信息系统中至关重要的安全功能,通过对用户访问权限的管理,保护系统中的敏感数据和资源,防止未经授权的访问、篡改和滥用。 数据访问控制发生在身份鉴别之后,解决主体如何安全访问数据的问题。 实施数据访问控制一…

STARTS:一种用于自动脑电/脑磁(E/MEG)源成像的自适应时空框架|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 STARTS: A Self-adapted Spatio-temporal Framework for Automatic E/MEG SourceImaging STARTS:一种用于自动脑电/脑磁(E/MEG)源成像的自适应时空框架 01 文献速递介绍 电生理源成像(Electrophysiological Source Imaging,E…

AI Large Language Model

AI 的 Large Language model LLM , 大语言模型: 是AI的模型,专门设计用来处理自然语言相关任务。它们通过深度学习和庞大的训练数据集,在理解和生成自然语言文本方面表现出色。常见的 LLM 包括 OpenAI 的 GPT 系列、Google 的 PaLM 和 Meta…

Spyglass:更改默认编辑器

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 Spyglass默认使用的是Vim(Small Version)作为其文本编辑器,如果希望使用其他文本编辑器(比如gedit、nano、VS Code、Sublime Text&#xff09…

网络安全之接入控制

身份鉴别 ​ 定义:验证主题真实身份与其所声称的身份是否符合的过程,主体可以是用户、进程、主机。同时也可实现防重放,防假冒。 ​ 分类:单向鉴别、双向鉴别、三向鉴别。 ​ 主题身份标识信息:密钥、用户名和口令、证书和私钥 Internet接入控制过程 …

【网站推荐】the top trending open-source startups, every quarter

每季度最热门的开源初创公司 我们根据 GitHub 存储库自 2020 年以来的明星增长情况发布热门开源项目,并将其称为 Runa 开源初创公司 (ROSS) 指数。 una Capital actively invests in open-source startups (like Nginx and MariaDB) and considers an active deve…

java学习记录11

异常 在java中提供了处理异常的机制,能够帮助我们避免程序崩溃。 Throwable可以用来表示任何可以作为异常抛出的类,分为两种: Error和Exception。其中Error用来表示JVM无法处理的错误。程序被强制终止。 Exception又分为两种: 受…

IDEA如何导入项目,包括从git仓库(github)导入项目

前言 大家好,我是小徐啊。自从使用了IDEA开发Java应用后,我再也不想使用eclipse了。IDEA的好处真的太多了。今天小徐就来介绍下IDEA的入门知识,也就是如何导入一个项目。 IDEA如何导入项目 首先,打开IDEA,点击上方的…

GitLab|数据迁移

注意:新服务器GitLab版本需和旧版本一致 在旧服务器执行命令进行数据备份 gitlab-rake gitlab:backup:create 备份数据存储在 /var/opt/gitlab/backups/ 将备份数据传输到新服务器的/var/opt/gitlab/backups/下,并修改文件权限(下载前和上传…

SSRF漏洞利用

2.漏洞利用 2.1 SSRF中URL的伪协议 file:// 从⽂件系统中获取⽂件内容,如,file:///etc/passwd dict:// 字典服务器协议,访问字典资源,如dict://ip:6379/info sftp:// ssh⽂件传输协议或安全⽂件传输协议 ldap:// 轻量级⽬录访问…

flux代码解析

https://zhuanlan.zhihu.com/p/714150390https://zhuanlan.zhihu.com/p/714150390 flux.1[pro] 1.版本 flux.1 [pro] api收费版本 flux.1 [dev] flux.1 蒸馏版本 guidance-distilled模型 flux.1 [schell] 1-4步版本 2.通读代码框

Scala之Array数组

可修改的Array import scala.collection.mutable.ArrayBuffer //Array:数组 //可修改的:ArrayBuffer //不可修改的:Array object Test1 {//可修改的:ArrayBufferdef main(args: Array[String]): Unit {//1.新建val arr1 ArrayBuffer(1,2,3)…

PostgreSQL常用字符串函数与示例说明

文章目录 coalesce字符串位置(position strpos)字符串长度与大小写转换去掉空格(trim ltrim rtrim)字符串连接(concat)字符串替换简单替换(replace)替换指定位置长度(overlay)正则替换(regexp_replace) 字符串匹配字符串拆分split_part(拆分数组取指定位置的值)string_to_array…