当前位置: 首页 > Linux

Linux常用监控指标总结

时间:2023-04-07 03:08:15 Linux

1。Linux运维基本合集做运维,不怕出问题,就怕出问题,赶不上现场,蒙在鼓里。因此,依托强大的监测系统,收集尽可能多的指标,意义重大。但是哪些指标有意义呢?基于实践的思路,工程师在长期的经验中总结出来的经验才是最有价值的。在运维工程师长期的工作实践中,我们总结了一些系统运维过程中经常提到的指标,主要包括以下几类:CPULoad内存磁盘IO网络相关内核参数ss统计输出端口收集核心服务进程生存信息收集关键业务流程资源消耗NTP偏移量收集DNS解析收集每个类别,具体详细指标如下,这些指标由open-falcon的代理组件直接支持。falcon-agent每隔一定时间(目前为60秒)收集相关指标并上报给服务器。2、CPU相关收集项的计算方法:通过收集/proc/stat得到,可以参考sar命令的统计输出了解。cpu.idle:CPU或CPU空闲且系统没有未完成的磁盘I/O请求的时间百分比。cpu.busy:相对于cpu.idle,其值等于100减去cpu.idle。cpu.guest:一个或多个CPU运行虚拟处理器所花费的时间百分比。cpu.iowait:一个或多个CPU空闲的时间百分比,在此期间系统有一个未完成的磁盘I/O请求。cpu.irq:CPU或CPU用于服务硬件中断所花费的时间百分比。cpu.softirq:CPU或CPU用于服务软件中断所花费的时间百分比。cpu.nice:在用户级别使用nice执行时发生的CPU使用率百分比priority.cpu.steal:当管理程序为另一个虚拟处理器提供服务时,一个或多个虚拟CPU非自愿等待所花费的时间百分比。cpu.system:在系统级(内核).cpu执行时发生的CPU使用率百分比。user:在用户级别(应用程序)执行时发生的CPU利用率百分比。cpu.cnt:cpu核数。cpu.switches:cpu上下文切换次数,计算机类型。3.磁盘相关采集项计算方法:先读取/proc/mounts拿到所有挂载点,然后通过syscall.Statfs_t拿到blocks和inode的使用情况。每个metric都会附加一组标签说明,类似mount=$mount,fstype=$fstype,其中$mount是挂载点,比如/home,$fstype是文件系统,比如ext4。df.bytes.free:可用磁盘,int64df.bytes.free.percent:可用磁盘占总量的百分比,float64,如32.1df.bytes.total:磁盘总大小,int64df.bytes.used:已用磁盘大小,int64df.bytes.used.percent:占磁盘总使用大小的百分比,float64df.inodes.total:inode总数,int64df.inodes.free:可用inode数,int64df.inodes.free.percent:可用的inode比率,float64df.inodes.used:使用的inode数据,int64df.inodes.used.percent:使用的inode比率,float644。megaclitooloutput使用megacli工具读取RAID相关信息,每个metric都会附有一组标签Description,用来标明它属于哪个PD或者VD。PD格式为PD=Enclosure_ID:SLOT_ID。例如PD=32:0表示第一个磁盘,VD=0表示第一个逻辑磁盘。sys.disk.lsiraid.pd.Media_Error_Count:这个和后面三个指标目前只是作为数据收集,并不一定代表磁盘损坏(只是代表损坏概率变大)sys.disk。lsiraid.pd.Other_Error_Countsys.disk.lsiraid.pd.Predictive_Failure_Countsys.disk.lsiraid.pd.Drive_Temperaturesys.disk.lsiraid.pd.Firmware_state:如果值不为0,说明这个物理磁盘sys.disk.lsiraid有问题.vd.cache_policy:如果值不为0,说明这个逻辑磁盘缓存策略和设置不匹配sys.disk.lsiraid.vd.state:如果值不为0,说明有问题这个逻辑磁盘。5、SMART工具输出使用smartctl工具读取磁盘SMART信息。目前,所有指标仅用作数据收集。这并不一定意味着磁盘损坏(它只是意味着概率变高)。每个metric都会有一组tag描述,表示盘符,比如device=/dev/sda。sys.disk.smart.Reallocated_Sector_Ctsys.disk.smart.Spin_Retry_Countsys.disk.smart.Reallocated_Event_Countsys.disk.smart.Current_Pending_Sectorsys.disk.smart.Offline_Uncorrectablesys.disk.smart.Temperature_Celsius6。对于读写,每个metric都会有一组tag描述,表示挂载点,比如mount=/homesys.disk.rw:如果值不为0,说明读写有问题这个分区。7、IO相关采集项的计算方式:每秒钟采集一次/proc/diskstats,并计算差值,均为计数器类型。每个metric都会有一组标签说明,比如device=$device,用来表示具体的设备,比如sda1、sdb。用户可以参考iostat的帮助文档了解具体的metric含义。disk.io.ios_in_progress:当前正在进行的实际I/O请求数。disk.io.msec_read:所有读取花费的ms总数。disk.io.msec_total:ios_in_progress>=1.disk的时间量。io.msec_weighted_total:最近I/O完成时间和backlog的度量。disk.io.msec_write:所有写入花费的ms总数。disk.io.read_merged:相邻的读请求合并在一个req.disk.io.read_requests中:读取成功完成的总数。disk.io.read_sectors:读取成功的扇区总数。disk.io.write_merged:相邻的写入请求合并为一个请求。disk.io.write_requests:写入成功完成的总数。disk.io.write_sectors:写入成功的扇区总数。disk.io.read_bytes:单位是byte的数字disk.io.write_bytes:单位是byte的数字disk.io.avgrq_sz:下面几个值就是iostat-x1看到的值disk.io.avgqu-szdisk.io.awaitdisk.io.svctmdisk.io.util:是个百分数,比如56.43,表示56.43%8。机器负载相关采集项计算方法:读取/proc/loadavg,都是原始值类型的:load.1最小负载.5minload.15min9.内存相关获取项的计算方法:读取/proc/meminfo中的内容,其中mem.memfree为free+buffers+cached,mem.memused=mem.memtotal-mem.memfree具体用户可以参考输出和free命令的帮助文档,了解每个指标的含义。mem.memtotal:总内存大小mem.memused:使用了多少内存mem.memused.percent:使用内存的百分比mem.memfreemem.memfree.percentmem.swaptotal:总交换大小percent:使用交换的比例mem.swapfreemem。swapfree.percent10。网络相关的集合项计算方法:读取/proc/net/dev的内容,每一个metric都附有一组标签,比如iface=$iface,表示具体的接口,比如eth0。带in的metric表示流入,out表示流出,total是in+out的总和。支持的指标如下:net.if.in.bytesnet.if.in.compressednet.if.in.droppednet.if。in.errorsnet.if.in.fifo.errsnet.if.in.frame.errsnet.if.in.multicastnet.if.in.packetsnet.if.out.bytesnet.if.out.carrier.errsnet.if.out。collisionsnet.if.out.compressednet.if.out.droppednet.if.out.errorsnet.if.out.fifo.errsnet.if.out.packetsnet.if.total.bytesnet.if.total.droppednet.if.total。errorsnet.if.total.packets11。端口集合项计算方法,通过ss-ln,判断指定端口是否处于监听状态。原始值类型,值要么是1:表示正在听,要么是0,表示不听。每个指标都附有一组标记,例如port=port,其中port是特定端口。net.port.listen12。机器内核配置kernel.maxfiles:read/proc/sys/fs/file-maxkernel.files.allocated:read/proc/sys/fs/file-nrfirstFieldkernel.files.left:value=kernel.maxfiles-kernel.files.allocatedkernel.maxproc:读取/proc/sys/kernel/pid_max13。ntp集合项使用ntpq-pn获取本地时间相对于ntp服务器的偏移量。sys.ntp.offset:本地偏移时间,单位ms,如果值过大或为0,说明有异常,需要上报告警。14、进程监控proc.num:判断某个进程的编号,这里需要两种场景,一种是根据进程名来判断,比如name=sshd;另一种是根据cmdline来判断,比如Java应用进程的名字可能是java,根据第一种情况是没办法区分的,这时候可以配置cmdline,比如cmdline=./falcon_agent-c./cfg.ini15。进程资源监控process.cpu.all:进程及其子进程使用的sys+user的cpu,单位为jiffiesprocess.cpu.sys:进程及其子进程使用的syscpu,单位为jiffiesprocess。cpu.user:进程及其子进程使用的用户cpu,单位为jiffiesprocess.swap:进程及其子进程使用的swap,单位为pageprocess.fd:进程使用的文件描述符个数.mem:进程占用的内存,单位为byte16。ss命令输出ss.orphanedss.closedss.timewaitss.slabinfo.timewaitss.synrecvss.estab