prometheus监控实战( 四 )


文章插图
第四节、自定义监控自定义监控可以根据自己编写的脚本,把需要监控的监控指标发送到pushgateway上,最后存储在promethues,使用grafana查看 。
4.1、pushgateway1、部署pushgateway
tar -xvf pushgateway-1.4.2.linux-amd64.tar.gzcd pushgateway-1.4.2.linux-amd64/启动
nohup ./pushgateway --web.listen-address=:48888 1>nohup.log 2>&1 &2、promethues集成pushgateway

  • 编辑配置文件vi prometheus.yml
  - job_name: 'pushgateway'    static_configs:      - targets: [‘192.168.10.10:48888']        labels:          instance: pushgateway
  • 重启prometheus
nohup ./prometheus --config.file=./prometheus.yml --web.listen-address=:49800 1>nohup.log 2>&1 &提示:停掉prometheus,再次启动
4.2、监控jvm1、编写监控jvm脚本并运行编写脚本
vi jvm_stat_exporter.sh!# /bin/kshecho  "start ..."#JAVA_PROCESS_LIST=`jps | grep -v " Jps$" | grep -v " Jstat$"`#echo $JAVA_PROCESS_LISTHOST_IP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v 192.168|grep -v inet6|awk '{print $2}'|tr -d "addr:"`#echo  "$HOST_IP"push_jvm_stat(){  line=$1  #echo $line  PID=`echo $line | cut -d ' ' -f 1`  PNAME=`echo $line | cut -d ' ' -f 2`  #echo "PID:$PID,HOST_IP:$HOST_IP,PNAME:$PNAME"  GC_LINE=`jstat -gc $PID | tail -1`  #echo "$GC_LINE"  # S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT  # S0C  S0C=`echo $GC_LINE | cut -d ' ' -f 1`  S1C=`echo $GC_LINE | cut -d ' ' -f 2`  S0U=`echo $GC_LINE | cut -d ' ' -f 3`  S1U=`echo $GC_LINE | cut -d ' ' -f 4`  EC=`echo $GC_LINE | cut -d ' ' -f 5`  EU=`echo $GC_LINE | cut -d ' ' -f 6`  OC=`echo $GC_LINE | cut -d ' ' -f 7`  OU=`echo $GC_LINE | cut -d ' ' -f 8`  MC=`echo $GC_LINE | cut -d ' ' -f 9`  MU=`echo $GC_LINE | cut -d ' ' -f 10`  CCSC=`echo $GC_LINE | cut -d ' ' -f 11`  CCSU=`echo $GC_LINE | cut -d ' ' -f 12`  YGC=`echo $GC_LINE | cut -d ' ' -f 13`  YGCT=`echo $GC_LINE | cut -d ' ' -f 14`  FGC=`echo $GC_LINE | cut -d ' ' -f 15`  FGCT=`echo $GC_LINE | cut -d ' ' -f 16`  GCT=`echo $GC_LINE | cut -d ' ' -f 17`  #echo $S0C $S1C $S0U    $S1U      $EC       $EU        $OC         $OU       $MC     $MU    $CCSC   $CCSU   $YGC     $YGCT    $FGC    $FGCT     $GCT  #echo "******* $HOST_IP $PNAME *******"  cat <<EOF | curl --data-binary @- http://192.168.10.10:48888/metrics/job/test_jvm_job/instance/${HOST_IP}_$PNAME  # TYPE jvm_s0c gauge  jvm_s0c{processname="$PNAME",hostip="$HOST_IP"} $S0C  # TYPE jvm_s1c gauge  jvm_s1c{processname="$PNAME",hostip="$HOST_IP"} $S1C  # TYPE jvm_s0u gauge  jvm_s0u{processname="$PNAME",hostip="$HOST_IP"} $S0U  # TYPE jvm_s1u gauge  jvm_s1u{processname="$PNAME",hostip="$HOST_IP"} $S1U  # TYPE jvm_ec gauge  jvm_ec{processname="$PNAME",hostip="$HOST_IP"} $EC  # TYPE jvm_eu gauge  jvm_eu{processname="$PNAME",hostip="$HOST_IP"} $EU  # TYPE jvm_oc gauge  jvm_oc{processname="$PNAME",hostip="$HOST_IP"} $OC  # TYPE jvm_ou gauge  jvm_ou{processname="$PNAME",hostip="$HOST_IP"} $OU  # TYPE jvm_mc gauge  jvm_mc{processname="$PNAME",hostip="$HOST_IP"} $MC  # TYPE jvm_mu gauge  jvm_mu{processname="$PNAME",hostip="$HOST_IP"} $MU  # TYPE jvm_ccsc gauge  jvm_ccsc{processname="$PNAME",hostip="$HOST_IP"} $CCSC  # TYPE jvm_ccsu gauge  jvm_ccsu{processname="$PNAME",hostip="$HOST_IP"} $CCSU  # TYPE jvm_ygc counter  jvm_ygc{processname="$PNAME",hostip="$HOST_IP"} $YGC  # TYPE jvm_ygct counter  jvm_ygct{processname="$PNAME",hostip="$HOST_IP"} $YGCT  # TYPE jvm_fgc counter  jvm_fgc{processname="$PNAME",hostip="$HOST_IP"} $FGC  # TYPE jvm_fgct counter  jvm_fgct{processname="$PNAME",hostip="$HOST_IP"} $FGCT  # TYPE jvm_gct counter  jvm_gct{processname="$PNAME",hostip="$HOST_IP"} $GCTEOF # echo "******* $PNAME 2 *******"}while [ 1 = 1 ]do  jps |grep -v " Jps$" | grep -v " Jstat$" | while read line_jps  do    push_jvm_stat "$line_jps"  done  echo "`date` pushed" > ./lastpushed.log  sleep 5done

经验总结扩展阅读