zoukankan      html  css  js  c++  java
  • linux 系统性能指标采样脚本

    以下脚本写于redmine性能排查时,用于定位系统性能瓶颈的采样,源地址为~/performanceLog/collectLog.sh中,计划放入github的代码片段库中.


    注: 如果mysql的地址或者目录更换,此脚本中dstat 的mysql相关数据的采集需要重写其插件的mysql连接部分的代码。 注: 如果mysql的地址或者目录有更换,又想使用以下脚本采集数据,需要重写其mysql连接部分的代码,才能让脚本中dstat 的mysql相关数据的采集正常获取。

    #!/bin/bash
    cd /home/pset/performanceLog/
    
    #create dir for today
    today=`date "+%Y%m%d"`
    
    if [ ! -d $today ]; then
    mkdir $today; 
    fi
    
    cd $today
    
    #declare var to remember current hour.
    hour=`date "+%H"`
    
    echo "current hour is: "$hour
    
    postfix="_nohup.log"
    
    filenameOfDstat=$hour"_"$today"_dstat"$postfix".csv"
    echo $filenameOfDstat
    
    filenameOfIostat=$hour"_"$today"_iostat"$postfix
    echo $filenameOfIostat
    
    filenameOfPidstat=$hour"_"$today"_pidstat"$postfix
    echo $filenameOfPidstat
    
    filenameOfFree=$hour"_"$today"_free"$postfix
    echo $filenameOfFree
    
    filenameOfMemInfo=$hour"_"$today"_meminfo"$postfix
    echo $filenameOfMemInfo
    
    filenameOfUptime=$hour"_"$today"_Uptime"$postfix
    echo $filenameOfUptime
    
    filenameOfMpstat=$hour"_"$today"_mpstat"$postfix
    echo $filenameOfMpstat
    
    filenameOfIOtop=$hour"_"$today"_iotop"$postfix
    echo $filenameOfIOtop
    
    filenameOfSar=$hour"_"$today"_sar"$postfix
    echo $filenameOfSar
    
    
    #the process id which we are intrested in.: mysqld ruby.bin
    pidMysqld=`ps -e| grep mysqld.bin|awk 'NR==1 {print $1}'`
    pidRuby=`ps -e| grep ruby.bin|awk 'NR==1 {print $1}'`
    
    export DSTAT_MYSQL_USER='root'
    export DSTAT_MYSQL_PWD='1111'
    
    nohup dstat -t --mysql5-cmds --mysql5-io --mysql5-keys $@ -df --disk-util --disk --mem --proc --top-cpu --top-latency --top-bio --io --sys --filesystem --tcp --vm --output $filenameOfDstat 1 3600 &
    nohup pidstat -p $pidMysqld -u -d -w -h 2 1800 > $filenameOfPidstat &
    nohup mpstat -P ALL 2 1800 > $filenameOfMpstat &
    nohup iotop -p $pidMysqld -n 1800 -d 2 > $filenameOfIOtop &
    nohup iostat -dxk 2 1800 > $filenameOfIostat &
    #nohup sar -o $filenameOfSar 2 1800 &
    
    
    #nohup free > $filenameOfFree &
    #nohup cat /proc/meminfo > $filenameOfMemInfo &
    #nohup uptime > $filenameOfUptime &
    
    
    # in every day at april ,run the shell script at 1 min past each hour.
    #1 * * 4 * /root/shift_my_times.sh
    
    #1 * * 4 * /home/pset/performanceLog/collectLog.sh
    
    
    crontab设置成每小时启动,并依照脚本中设定的频率采集数据:
    1 0,4,10-23 * 4 * /home/pset/performanceLog/collectLogs.sh
    * * * 4 * /usr/local/bin/mycheckpoint --user=root --password=1111 --socket=/redmine/mysql/tmp/mysql.sock --database=mycheckpoint

    产生此方案的关键系统指标展示:
    pidstat:可以针对特定的进程,比如:mysql 或者其它进程
    mpstat:用于查看高峰时段某些cpu的idle是否异常。
    dstat io:用于记录每次采集的时间点,并统筹全局的cpu  mem  io  net  mysql的指标信息

    相关页面: http://www.cnblogs.com/ToDoToTry/p/4462609.html 

  • 相关阅读:
    关于初入.NET的那些事
    有趣的接口和抽象类
    类型转换的那些趣事(is和as)
    【项目实践】SpringBoot三招组合拳,手把手教你打出优雅的后端接口
    【项目实践】一文带你搞定Session和JWT的登录认证方式
    【项目实践】后端接口统一规范的同时,如何优雅得扩展规范
    羊车门问题简析
    对于python这门课程的一些想法、计划、期望
    Android 4.1果冻豆新特性详解
    使用include实现布局(layout)复用
  • 原文地址:https://www.cnblogs.com/ToDoToTry/p/4423577.html
Copyright © 2011-2022 走看看