Prometheus是强大的开源企业级监控系统,不仅数据接口简单标准,更具有强大的PromQl作为数据聚合展现的工具。以下通过几个企业级应用案例,介绍监控的原理以及对应的PromQL解析。

CPU监控案例

CPU是所有任务的核心,大部分出现问题的情况都可以反映在cpu上。
数据采集:node_exporter
prometheus公式:
(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
    preometheus-console.jpg