Prometheus 企业级实用案例及对应的PromQL表达式
Prometheus是强大的开源企业级监控系统,不仅数据接口简单标准,更具有强大的PromQl作为数据聚合展现的工具。以下通过几个企业级应用案例,介绍监控的原理以及对应的PromQL解析。
CPU监控案例
CPU是所有任务的核心,大部分出现问题的情况都可以反映在cpu上。
数据采集:node_exporterprometheus公式:
(1-((sum(increase(node_cpu{mode="idle"}[1m])) by (instance)) / (sum(increase(node_cpu[1m])) by (instance)))) * 100
一般用户态使用率是除空闲外的最高的,当软件启动大量进程处理任务的时候,对cpu消耗最大。另外iowait CPU使用率的监控也是比较重要的prometheus公式:
((sum(increase(node_cpu{mode="iowait"}[1m])) by (instance)) / (sum(increase(node_cpu[1m])) by (instance))
grafana 报警: 设置cpu使用率为95,虽然这个点也可以用,但是系统已经很慢了。
内存监控案例
linux命令查看内存情况
free -m
linux内存使用率非常的高效,linux free显示的信息,很容易让人误解。linux应用程序角度看,linux实际可用内存应该是系统free + buffers + cached使用率 = 实际可用内存/总内存(centos7之后,添加了available字段)
prometheus公式:
(1-((node_memory_Buffers + node_memory_cached + node_memory_memfree)/node_memory_memtotal)) * 100
硬盘io监控案例
node_filesystem_free/node_filesystem_size < 0.2嗲表空闲硬盘不足百分之20了predict_linear: 这个函数针对阈值不好配置的情况,针对曲线变化速率的计算,以及一段时间加速度的预测。它可以实时预测硬盘使用率曲线的变化情况,假如在一个很小的时间段,发现硬盘使用激素的上升,那么这种下降的速度进行一个未来时间的预测。如果发现未来五分钟内按照这种速度就达到硬盘占用百分之百,那么在当前硬盘还有百分之20的情况下就会报警。这个函数可以提供给我们一个阈值,不是一个指定的阈值,而是根据具体情况下,预测出来的,更加智能。
硬盘io监控使用的公式:
((rate(node_disk_bytes_read[1m] )+ rate(node_disk_bytes_written[1m])) / 1024 /1024) > 0
如果这个指标标高了, 那么必然 CPU_IOWAIT 也会飙高(所以说 从这里 我们也可以看得出 报警中 很多项目 虽然重要 但是无法避免重复 都有一定 的连带关系 这也是大米为什么在上篇中 给大家提出了一个 真实链路报警的 未来展望)
网络传输监控案例
使用公式:
rate(node_network_transimit_bytes[1m])/1024/1024,
网络传输的M数
其他案例
tcp等待连接监控 count_netstat_wait_connections(pushgateway+脚本)文件描述符 node_filefd_allocated/node_filefd_maxinum 每个进程能打开的文件数为1024
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据