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 分钟内的即时速率,适用于更短时间内的快速变化监测。适合捕捉突发事件。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-05

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-05 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-05目录1. LLM App Squatting and Cloning2. Improving Grapheme-to-Phoneme Conversion through In-Context Knowledge3. A Comp…

【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作

1.实验目的 熟悉了解掌握SQL Server软件的基本操作与使用方法,以及通过理论课学习与实验参考书的帮助,熟练掌握使用T-SQL语句和交互式方法对数据表进行插入数据、修改数据、删除数据等等的操作;作为后续实验的基础,根据实验要求重…

LDR6020驱动的Type-C接口显示器解决方案

一、引言 随着科技的飞速发展,Type-C接口凭借其高速数据传输、强大的电力传输能力以及便捷的正反可插设计,正逐渐成为现代电子设备的主流接口标准。在显示器领域,Type-C接口的引入不仅简化了线缆连接,还为用户带来了更丰富的功能…

Spring |(四)IoC/DI配置管理第三方bean

文章目录 📚数据源对象管理🐇环境准备🐇实现Druid管理🐇实现C3P0管理 📚加载properties文件🐇第三方bean属性优化🐇读取单个属性 学习来源:黑马程序员SSM框架教程_SpringSpringMVCMa…

三十一、构建完善微服务——API 网关

一、API 网关基础 系统拆分为微服务后,内部的微服务之间是互联互通的,相互之间的访问都是点对点的。如果外部系统想调用系统的某个功能,也采取点对点的方式,则外部系统会非常“头大”。因为在外部系统看来,它不需要也没…

(免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统

摘 要 大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在大学生在线计算机类专业考研学习网站管理的要求下,开发一…

社交电商专业赋能高校教育与产业协同发展:定制开发AI智能名片及2+1链动商城小程序的创新驱动

摘要:本文围绕社交电商有望成为高校常态专业这一趋势展开深入探讨,剖析国家政策认可下其学科发展前景,着重阐述在专业建设进程中面临的师资短缺及实践教学难题。通过引入定制开发AI智能名片与21链动商城小程序,探究如何借助这些新…

Linux各种并发服务器优缺点

本文旨在介绍针对“无并发C/S模型”改进的方法总结以及各种改进方法的优缺点,具体函数的实现并不介绍。 1. 无并发C/S模型 创建服务器流程分析: socket()创建服务器的监听套接字bind()将服务器给服务器的监听套接字绑定IP地址和Port端口号listen()设置…

基于AXI PCIE IP的FPGA PCIE卡示意图

创作不易,转载请注明出处:https://blog.csdn.net/csdn_gddf102384398/article/details/143926217 上图中,在FPGA PCIE卡示意图内,有2个AXI Master设备,即:PCIE到AXI4-Full-Master桥、AXI CDMA IP&#xff1…

【漏洞复现】|智互联SRM智联云采系统quickReceiptDetail SQL注入漏洞

漏洞描述 智互联(深圳)科技有限公司SRM智联云采系统针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

el-table-column自动生成序号在序号前插入图标

实现效果&#xff1a; 代码如下&#xff1a; 在el-table里加入这个就可以了&#xff0c;需要拿到值可以用scope.$index ​​​​​​​<el-table-column type"index" label"序号" show-overflow-tooltip"true" min-width"40">…

如何利用 Puppeteer 的 Evaluate 函数操作网页数据

介绍 在现代的爬虫技术中&#xff0c;Puppeteer 因其强大的功能和灵活性而备受青睐。Puppeteer 是一个用于控制 Chromium 或 Chrome 浏览器的 Node.js 库&#xff0c;提供了丰富的 API 接口&#xff0c;能够帮助开发者高效地处理动态网页数据。本文将重点讲解 Puppeteer 的 ev…

“小浣熊家族AI办公助手”产品体验 — “人人都是数据分析师”

一、引言&#xff1a; 大家平时应该在工作中常常使用到Excel来做数据统计&#xff0c;比如临近过年时&#xff0c;公司一般会开各种复盘、年终、检讨、明年规划大会&#xff0c;势必需要准备一大堆的量化数据报表&#xff0c;用于会议上的数据汇报、分析工作&#xff0c;试想一…

Unity-添加世界坐标系辅助线

如果你想在场景中更直观地显示世界坐标系&#xff0c;可以通过编写一个简单的脚本来实现。下面是一个基本的示例脚本&#xff0c;它会在场景中绘制出世界坐标系的三个轴&#xff1a; using UnityEngine;public class WorldAxesIndicator : MonoBehaviour {public float length…

Makefile基础应用

1 使用场景 在Linux环境下&#xff0c;我们通常需要通过命令行来编译代码。例如&#xff0c;在使用gcc编译C语言代码时&#xff0c;需要使用以下命令。 gcc -o main main.c 使用这种方式编译代码非常吃力&#xff0c;每次调试代码都需要重新在命令行下重新编译&#xff0c;重复…

【tensorflow的安装步骤】

创建一个虚拟环境 conda create -n tensorflow python3.6激活虚拟环境 conda activate tensorflow使用镜像源下载 pip install tensorflow1.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/特别特别重要的点&#xff01;&#xff01;&#xff01; 别用WiFi或者校园网下…

【Python · PyTorch】循环神经网络 RNN(基础概念)

【Python PyTorch】循环神经网络 RNN&#xff08;基础概念&#xff09; 0. 生物学相似性1. 概念2. 延时神经网络&#xff08;TDNN&#xff09;3. 简单循环神经网络&#xff08;Simple RNN&#xff09;3.1 BiRNN 双向循环神经网络3.2 特点记忆性参数共享图灵完备 3.3 网络结构3…

使用EFK收集k8s日志

首先我们使用EFK收集Kubernetes集群中的日志&#xff0c;本次实验讲解的是在Kubernetes集群中启动一个Elasticsearch集群&#xff0c;如果企业内已经有了Elasticsearch集群&#xff0c;可以直接将日志输出至已有的Elasticsearch集群。 文章目录 部署elasticsearch创建Kibana创建…

Qt入门1——认识Qt的几个常用头文件和常用函数

1.头文件 ① #include <QPushButton>——“按钮”头文件&#xff1b; ② #include <QLabel>——“标签”头文件&#xff1b; ③ #include <QFont>——“字体”头文件&#xff1b; ④#include <QDebug>——输出相关信息&#xff1b; 2. 常用函数/类的基…

【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作

【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作 文章目录 中断操作注册和释放中断中断服务函数使能和禁止上半部和下半部软中断tasklet工作队列 设备节点中的中断中断号API函数获取中断号获取中断信息 中断应用读取设备树节点获取中断号获取中断触发方…