第一个实现如下: 先看一下自动发现脚本,使用python编写,利用linux的/proc/diskstats记得 的磁盘信息发现所有的磁盘。 第二步,监控磁盘的iops,利用linux的/proc/diskstats的第四个字段和第八字段可监控读和写的iops,第四个记录是记录所有读的次数,第八个字段是记录所有写的次数。 |grep "${disk} "|awk '{print $6}' elif [[ ${option} == "write" ]];then cat /proc/diskstats |grep "${disk} "|awk '{print $10}' elif [[ ${option} == "readops" ]];then cat /proc/diskstats |grep "$ {disk} "|awk '{print $4}' elif [[ ${option} == "writeops" ]];then cat /proc/diskstats |grep "
/bin/bash diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\b head -1 | awk '{print $4}' #//磁盘读的次数 ;; read.ms) /bin/cat /proc/diskstats -1 | awk '{print $11}' #//磁盘写的毫秒数 ;; io.active) /bin/cat /proc/diskstats awk '{print $12}' #//I/O的当前进度, ;; read.sectors) /bin/cat /proc/diskstats $6}' #//读扇区的次数(一个扇区的等于512B) ;; write.sectors) /bin/cat /proc/diskstats
3.2/proc/diskstats——原始I/O计数器展开代码语言:BashAI代码解释cat/proc/diskstats每行14个字段,对应/sys/block/*/stat。 /O进行中的时间(ms)计算平均I/O大小:展开代码语言:BashAI代码解释#读平均大小(KB)=(第6列*0.5)/第4列awk'{if($4>0)print($6*0.5)/$4}'/proc/diskstats
proc/cpuinfo - name: meminfo mountPath: /proc/meminfo - name: diskstats mountPath: /proc/diskstats - name: stat mountPath: /proc/stat meminfo hostPath: path: /var/lib/lxcfs/proc/meminfo type: File - name: diskstats hostPath: path: /var/lib/lxcfs/proc/diskstats type: File - name: stat
memory-swappiness 0 --cpus=2 \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats :/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs cpu-quota=200000 \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats :/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs
memstats[i] = new(runtime.MemStats) diskstats[i] = new(DiskStats) } // Define the various metrics [location1]) == nil { diskReads.Mark(diskstats[location1].ReadCount - diskstats[location2].ReadCount (diskstats[location1].WriteCount - diskstats[location2].WriteCount) diskWriteBytes.Mark(diskstats [location1].WriteBytes - diskstats[location2].WriteBytes) diskReadBytesCounter.Inc(diskstats[location1 ].ReadBytes - diskstats[location2].ReadBytes) diskWriteBytesCounter.Inc(diskstats[location1].WriteBytes
使用strace命令能跟踪到答案: shell> strace -eopen iostat open("/proc/diskstats", O_RDONLY) 注:Strace教程:5 simple ways to troubleshoot using Strace 注:关于diskstats的说明,参见官方文档(主要是其中的field1 ~ field11部分)。 these devices have a value for the field #9 (beginning after the device name) in /proc/{partitions,diskstats temporarily) solve the problem, you should reboot your system to reset the counters in /proc/{partitions,diskstats
etc/zabbix/zabbix_agentd.d/userparameter_io.conf UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats awk '{print $$4}' //磁盘读的次数 UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats '{print $$7}' //磁盘读的毫秒数 UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats awk '{print $$8}' //磁盘写的次数 UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats head -1 | awk '{print $$12}' //I/O的当前进度,只有这个域应该为0 UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats
source h=host,D=db,t=child --purge --where 'NOT EXISTS(SELECT * FROM parentWHERE col=child.col)' pt-diskstats 功能: Aninteractive I/O monitoring tool for GNU/Linux 原理: 和iostat类似,通过获取/proc/diskstats的数值,但是功能更强大 示例: # pt-diskstats--show-timestamps 【下面是线上的数据库截图】 ?
logger.debug(() -> new ParameterizedMessage( "unexpected exception processing /proc/diskstats devicesNumbers), e); return null; } } @SuppressForbidden(reason = "read /proc/diskstats String> readProcDiskStats() throws IOException { return Files.readAllLines(PathUtils.get("/proc/diskstats return fsPath; } } FsProbe提供了stats、ioStats、readProcDiskStats等方法;其中readProcDiskStats方法主要是读取/proc/diskstats totalWriteKilobytes属性 小结 FsProbe提供了stats、ioStats、readProcDiskStats等方法;其中readProcDiskStats方法主要是读取/proc/diskstats
/proc/cpuinfo /proc/diskstats /proc/meminfo /proc/stat /proc/swaps /proc/uptime 比如把宿主机的 /var/lib/lxcfs -it -m 256m \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats :/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs -m 256m \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats :/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs
-1 | awk'{print UserParameter=custom.vfs.dev.write.ops[*],cat/proc/diskstats| grep1 | head-1 | awk'{ [*],cat/proc/diskstats| grep1 | head-1 | awk'{print UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats| grep1 | head-1 | awk'{print UserParameter=custom.vfs.dev.write.sectors[*],cat/proc/ -1 | awk'{print UserParameter=custom.vfs.dev.write.ops[*],cat/proc/diskstats| grep1 | head-1 | awk'{ [*],cat/proc/diskstats| grep1 | head-1 | awk'{print UserParameter=custom.vfs.dev.read.sectors[*],cat
-it -m 200m \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats :/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs
/bin/bash diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\b"|awk '{print #This script is used to discovery disk on the server import subprocess import json args="cat /proc/diskstats
/bin/bash# io_bottleneck_detector.sh# 监控I/O等待和队列长度while true; do # 从/proc/diskstats获取原始数据 cat / proc/diskstats | grep "sda " | awk ' { reads = $4; read_sectors = $6; writes = $8; write_sectors = $10; io_time = $13; weighted_io = $14; # 计算瞬时差异 getline < "/tmp/diskstats_prev write_iops " IOUtil:" io_util "%"; # 保存当前状态 print reads, writes, io_time > "/tmp/diskstats_prev
adb shell 'echo 1 > /data/bootchart/stop' 重启之后,看到/data/bootchart/目录下文件为: header kernel_pacct proc_diskstats.log 在手机的路径 LOGROOT=/data/bootchart TARBALL=bootchart.tgz # 5个文件 FILES="header proc_stat.log proc_ps.log proc_diskstats.log
0-15 3、引入lxcfs lxcfs是一个的小型FUSE文件系统,旨在使Linux容器更像一个虚拟机,能够帮助容器正确的识别自身资源,处理对以下文件的信息 /proc/cpuinfo /proc/diskstats Mounts: /proc/cpuinfo from lxcfs-proc-cpuinfo (rw) /proc/diskstats from lxcfs-proc-diskstats
用户空间借助bootchartd抓取/proc/uptime、/proc/stat、/proc/diskstats、/proc/xxx/stat、/proc/meminfo信息,最后打包到bootlog.tgz = xfopen("proc_diskstats.log", "w"); + FILE *proc_meminfo = xfopen("proc_meminfo.log", "w"); = xfopen("proc_diskstats.log", "w"); FILE *proc_meminfo = xfopen("proc_meminfo.log", "w"); / , "/proc/diskstats");-----------------------------------------保存/proc/diskstats到proc_diskstats.log中 主要从proc_diskstats.log中获取。 内存信息:分为5部分使用中、cached、buffer、swap以及剩余内存。主要从proc_meminfo.log中获取。
iostat 是用来分析I/O 状态的常用工具,其输出结果是以/proc/diskstats为基础计算的。
proc/cpuinfo| grep "processor"| wc -l 查看cpu内核频率 cat /proc/cpuinfo |grep MHz|uniq 查看磁盘信息 cat /proc/diskstats