1。Linux运维的基本习得项目。做Linux系统运维,不怕出问题。因此,依托强大的监测系统,收集尽可能多的指标,意义重大。但是哪些指标有意义呢?基于实践的思路,工程师在长期的经验中总结出来的经验才是最有价值的。在运维工程师长期的工作实践中,我们总结了一些系统运维过程中经常提到的指标,主要包括以下几类:CPULoad内存磁盘IO网络相关内核参数ss统计输出端口收集核心服务进程存活信息收集关键业务进程资源消耗NTP偏移量收集DNS解析收集+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:theavailableinodeRatio,float64df.inodes.used:usedinodedata,int64df.inodes.used.percent:usedinoderatio,float644,megacli工具输出使用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.1minload.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.bytes//网卡每秒传输的数据量网。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。bytes//网卡每秒发送和接收的数据量。听状态。原始值类型,值要么是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:进程使用的文件描述符个数process.mem:进程占用的内存,单位为byte16。ss命令输出ss.orphanedss.closedss.timewaitss.slabinfo.timewaitss.synrecvss.estab以上是良序教程网为各位小伙伴分享的Linux相关知识。
