promethues指标

记录

参考

Grafana Dashboards for Kubernetes Administrators

Google 在“SRE Handbook”中提出了“四个黄金信号”:延迟、流量、错误数、饱和度。实际操作中可以使用 Use 或 Red 方法作为指导,Use 用于资源,Red 用于服务。

  • Use 方法:Utilization、Saturation、Errors。如 Cadvisor 数据
  • Red 方法:Rate、Errors、Duration。如 Apiserver 性能指标
  1. 在线服务:如 Web 服务、数据库等,一般关心请求速率,延迟和错误率即 RED 方法
  2. 离线服务:如日志处理、消息队列等,一般关注队列数量、进行中的数量,处理速度以及发生的错误即 Use 方法
  3. 批处理任务:和离线任务很像,但是离线任务是长期运行的,批处理任务是按计划运行的,如持续集成就是批处理任务,对应 Kubernetes 中的 Job 或 CronJob, 一般关注所花的时间、错误数等,因为运行周期短,很可能还没采集到就运行结束了,所以一般使用 Pushgateway,改拉为推。

node-exporter

概览

node_cpu:系统CPU使用量
node_load1:系统负载
node_memory*:内存使用量
node_disk*:磁盘IO
node_filesystem*:文件系统用量
node_network*:网络带宽

node_time:当前系统时间
node_boot_time:系统启动时间
go_*:node exporter中go相关指标
process_*:node exporter自身进程相关运行指标

新旧版本的指标差异

新指标含义老指标
node_cpu_seconds_totalCPU在每种mode下花费的时间,以秒为单位node_cpu
node_memory_MemTotal_bytes内存总字节数node_memory_MemTotal
node_memory_MemFree_bytes空闲内存总字节数node_memory_MemFree
node_filesystem_size_bytes文件系统的总字节数node_filesystem_size
node_filesystem_avail_bytes文件系统可用字节数node_filesystem_avail
node_disk_io_time_seconds_total执行I / O的总秒数node_disk_io_time_ms
node_disk_reads_completed_total读取成功的总数node_disk_reads_completed
node_disk_written_bytes_total写成功的总数node_disk_sectors_written
node_time_seconds系统当前时刻node_time
node_boot_time_seconds系统启动时刻node_boot_time
node_intr_total服务的总中断数node_intr

CPU

CPU空闲率

sum(irate(node_cpu_seconds_total{mode="idle", instance="134node"}[1m])) * 100 / count(node_cpu_seconds_total{mode="user", instance="134node"})

注释:

sum()函数: 指将括号内的指标值求和

irate()函数: 指计算范围向量中时间序列的每秒钟的瞬时(per-second)速度

count()函数 : 指将时间序列向量中的元素个数作为标量返回

CPU负载率

node_load1{instance="134node"} / count by(job, instance)(count by(job, instance, cpu)(node_cpu_seconds_total{instance="134node"}))

注释:

node_load1 : 指1分钟内cpu平均负载,同样cpu_load5指5分钟内cpu平均负载,cpu_load15指15

count : 指聚合向量中的每个元素(即计数)

by: without用于从计算结果中移除列举的标签,而保留其它标签。by则正好相反,结果向量中只保留列出的标签,其余标签则移除。通过without和by可以按照样本的问题对数据进行聚合。

CPU使用率

avg without (cpu) (irate(node_cpu{instance="88node", mode!="idle"}[5m]))
(1-avg(irate(node_cpu_seconds_total{mode="idle",instance=""}[5m]))) * 100

// avg : 平均值

内存

已用内存:(总内存-空闲内存-缓存=已使用内存)

  node_memory_MemTotal_bytes{instance="88node"} -  

  node_memory_MemFree_bytes{instance="88node"} - 

  node_memory_Cached_bytes{instance="88node"} - 

  node_memory_Buffers_bytes{instance="88node"} - 

  node_memory_Slab_bytes{instance="88node"}

Buffer缓存:

 node_memory_Buffers_bytes{instance="88node"}

Cached缓存:

 node_memory_Cached_bytes{instance="88node"}  

 + node_memory_Slab_bytes{instance="88node"}

Free空闲内存:

 node_memory_MemFree_bytes{instance="88node"}

可用内存占比:

 (node_memory_MemAvailable_bytes{instance="88node"} / 

 node_memory_MemTotal{instance="88node"}) * 100

注释:

total:总计物理内存的大小。

Free:空闲内存有多少。

Shared:多个进程共享的内存总额。

Buffers:表示buffers cache的内存数量,一般对块设备的读写才需要缓冲

Cached:表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被

Slab:slab分配器不仅可以提供动态内存的管理功能,而且可以作为经常分配并释放的内存的缓存

MemAvailable: Free + Buffers + Cached - 不可回收的部分。不可回收部分包括:共享内存段,tmpfs,ramfs等

Swap分区

Swap free :

node_memory_SwapFree_bytes

swap :类似于可以把硬盘当内存用,那么这一部分内存一般就叫做swap

Swap Usage :

node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes

Swap I/O(in):

rate(node_vmstat_pswpin[1m]) * 4096 or irate(node_vmstat_pswpin[5m]) * 4096

Swap I/O(out):

rate(node_vmstat_pswpout[1m]) * 4096 or irate(node_vmstat_pswpout[5m]) * 4096

Swap free 率(百分百)

(node_memory_SwapFree_bytes{instance=~"$server"} /node_memory_SwapTotal_bytes{instance=~"$server"}) * 100

文件系统

空闲文件系统空间

sum(node_filesystem_free_bytes{fstype="xfs",instance="88node"})

sum(node_filesystem_free_bytes{fstype="ext4",instance="134node"})

注释:

fstype 有如下种类:

aufs : 指联合文件系统,用来把原本分离的两个文件系统联合在一起

cgroup : cgroups(控制组)是Linux内核的一个功能,用来限制、统计和分离一个进程组的资源

tmpfs : tmpfs是一种虚拟内存文件系统,而不是块设备。

overlay : 一个 overlay 文件系统包含两个文件系统,一个 upper 文件系统和一个 lower 文件系统,是一种新型的联合文件系统

文件系统的使用情况

node_filesystem_free_bytes{fstype=~"xfs|ext4", group="canary"} / node_filesystem_size_bytes{fstype=~"xfs|ext4", group="canary"}

ext4是第四代扩展文件系统,是linux下的日志文件系统,ext4的文件系统容量达到1EB,而文件容量则达到16TB。XFS是一个64位文件系统,最大支持8EB减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32位linux系统,文件和文件系统的大小会被限制在16TB。

磁盘

IOPS:io次数

磁盘每秒读取次数(5分钟内)

sum by (instance) (irate(node_disk_reads_completed_total[5m]))

node_disk_reads_completed_total: The total number of reads completed successfully

磁盘每秒写入次数(5分钟内)

sum by (instance)(irate(node_disk_writes_completed_total[5m]))

node_disk_writes_completed_total :The total number of writes completed successfully.

磁盘每秒读写总次数(5分钟内)

sum by (instance) (irate(node_disk_reads_completed[5m])) + sum by (instance) (irate(node_disk_writes_completed[5m]))

使用I/O的秒数(5分钟内)

sum by (instance) (irate(node_disk_io_time_seconds_total[5m]))

node_disk_io_time_seconds_total: Total seconds spent doing I/Os

磁盘读取总字节数(1分钟内)

sum(irate(node_disk_read_bytes_total[1m]))

node_disk_read_bytes_total: The total number of bytes read successfully(成功读取的字节数)

磁盘写入总字节数(1分钟内)

sum(irate(node_disk_written_bytes_total[1m]))

node_disk_written_bytes_total :The total number of bytes written successfully(成功写入的字节数)

使用I/O的秒数(1分钟内)

sum(irate(node_disk_io_time_seconds_total[1m]))

node_disk_io_time_seconds_total :Total Milliseconds spent doing I/Os.(使用IO的总毫秒数)

网络

上传速率:

 irate(node_network_transmit_bytes{device!="lo",instance="88node"}[1m])

下载速率:

 irate(node_network_receive_bytes{device!="lo",instance="88node"}[1m])

注释:

eth0: ethernet的简写,一般用于以太网接口。

wifi0:wifi是无线局域网,因此wifi0一般指无线网络接口。

ath0: Atheros的简写,一般指Atheros芯片所包含的无线网络接口。

tunl0:tunl0是隧道接口,封装数据的时候使用

lo: local的简写,一般指本地环回接口。

参考:

Prometheus安装以及指标

官网函数

指标解释

# 微服务 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×