文章插图
第四节、自定义监控自定义监控可以根据自己编写的脚本,把需要监控的监控指标发送到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
- 重启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
经验总结扩展阅读
- 分布式存储系统之Ceph集群启用Dashboard及使用Prometheus监控Ceph
- 1 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - ES6标准入门和Flex布局
- Java代码审计之实战某博客
- 大数据技术之HBase原理与实战归纳分享-下
- 大数据技术之HBase原理与实战归纳分享-中
- SpringBoot-JavaMailSender接口实战
- MatrixOne从入门到实战04——MatrixOne的连接和建表
- 大数据技术之HBase原理与实战归纳分享-上
- 使用docker-compose安装Prometheus
- 房地产监控户-监管账户是什么