说明: 监控框架,通常就是我们说的监控的方法论,目前常用的就是USE和Google的四个黄金指标
USE侧重于主机的维度,该方法建议收集:使用率、饱和度、错误
Google四个黄金指标侧重于应用程序的性能,该方法建议收集: 流量、延迟、饱和度、错误。其中,流量可以为QPS或TPS
USE方法
1) CPU监控
CPU使用率
irate函数:用于计算范围向量中时间序列增加的每秒的即时速率
CPU在5分钟内每秒的速率
irate(node_cpu_seconds_total{job="node_exporter"}[5m])
每台Node平均的CPU空闲使用率
avg(irate(node_cpu_seconds_total{job="node_exporter",mode="idle"}[5m])) by (instance) * 100
每台CPU平均CPU使用率
100-avg(irate(node_cpu_seconds_total{job="node_exporter",mode="idle"}[5m])) by (instance) * 100
CPU饱和度
node_load1显示1分钟CPU负载
CPU的错误数不太容易获取
2) 内存监控
1) 内存使用率
内存总大小:node_memory_MemTotal_bytes
空闲可用:node_memory_MemFree_bytes
缓冲:node_memory_Buffers_bytes
缓存:node_memory_Cached_bytes内存使用率:
(node_memory_MemTotal_bytes -(node_memory_MemTotal_bytes-node_memory_MemFree_bytes-node_memory_Cached_bytes))/node_memory_MemTotal_bytes * 100
2) 内存饱和度
node_vmstat_pswpin:系统每秒从磁盘读到内存的字节数
node_vmstat_pswpout:系统每秒从内存写到磁盘的字节数1024 * sum by(instance)
((rate(node_vmstat_pswpin[1m])+rate(node_vmstat_pswpout[1m])))
3) 磁盘使用率
说明: 每个主机上的每个挂载点都有文件系统,我们添加mountpoint标签,特别是根文件系统挂载,另外的单独挂载的文件系统,需要额外添加mountpoint挂载点,进行计算
根文件系统磁盘使用率:
(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint='/'} * 100
磁盘predict_linear函数:
predict_linear(node_filesystem_size_bytes{mountpoint='/'}[1h],4*3600)<0
解释:
predict_linear使用线性回归,选择最近1个小时磁盘使用的趋势,以这一个小时的增长情况来确定文件系统何时会耗尽。
这里使用4*3600,即四个小时;最后判断小于0的值,即文件系统空间不足
因此:如果基于最后一个小时的增长历史记录,文件系统将在接下来四个小时内用完空间,查询结果返回一个负数,我们可以基于这个触发报警
Google四个黄金指标
服务状态监控:
之前我们通过node_exporter的systemd收集器,收集了sshd、docker、rsyslog服务的状态
监控状态展示:
node_systemd_unit_state{name="docker.service",state="active"}
1)流量:QPS或者TPS
sum(rate(http_server_requests_seconds_count{application="$application", instance="$instance"}[1m]))
2)延时
sum(rate(http_server_requests_seconds_sum{application="$application", instance="$instance", status!~"5.."}[1m]))/sum(rate(http_server_requests_seconds_count{application="$application", instance="$instance", status!~"5.."}[1m]))
3)饱和度
// tomcat
A: tomcat_threads_busy_threads{application="$application", instance="$instance"}
B: tomcat_threads_current_threads{application="$application", instance="$instance"}
C: tomcat_threads_config_max_threads{application="$application", instance="$instance"}4) 错误
例如:HTTP响应码为5开头的
sum(rate(http_server_requests_seconds_count{application="$application", instance="$instance", status=~"5.."}[1m]))
其他测量方式
up: 可用性