스토리지 CPU 상태 모니터링 (이외 IOPS,Latency,Bandwidth,DISK 용량 모두 모니터링중)
10여대 스토리지 운영중 (대략 800TB) (다양한 벤더) (VM 10,000대 이상 운영중)
여러가지 벤더라 cli 명령도 다 틀리고 제공되는 모니터링 툴도 벤더별로 다 제각각이라 관리적인 측면이나
모니터링 측면에서 짜증남...
스토리지 이슈 발생시.... VM 전체가 영향을 받아 서비스에 큰 문제 발생...
스토리지 모니터링이 상당히 중요한 서비스임..
Point :
아래 스크립트를 크론에 등록하여 -> curl을 사용하여 -> influxdb 로 넣고 -> kapacitor 로 실시간 감시 -> -> 임계치 부합되면 alert -> 화면은 grafana 모니터링중.... |
script
#!/bin/bash netapp01_cpu=`snmpwalk -v 2c -c public x.x.x.x .1.3.6.1.4.1.789.1.2.1.3.0 | awk -F " " '{print $4}'` . . netapp08_cpu=`snmpwalk -v 2c -c public x.x.x .1.3.6.1.4.1.789.1.2.1.3.0 | awk -F " " '{print $4}'` # emc emc01_cpu=`/data/storage/emc/check_xio_cpu.sh 10.200.x.x user 'User01' | awk -F ":" '{print $2" "$4" "$6" "$8}' | sed -e 's/ /+/g' | bc -l` emc01_cpu=`echo "$emc01_cpu/4" | bc` # hp 3par sshpass -p 'xxxx' ssh -p 22 user@10.200.x.x 'statcpu -iter 1 -t' > /data/storage/Storage-3par-cpu.txt hp3par_cpu=`cat /data/storage/Storage-3par-cpu.txt | awk -F " " '{print sum += $4} END {print "sum="sum/4}' | grep sum | awk -F "=" '{print $2}'` hp3par_cpu=`echo "scale=1; 100-$hp3par_cpu" | bc` # netapp sshpass -p 'xxxxxxx' ssh -p 22 admin@x.x.x.x 'statistics node show' > /data/storage/Storage-8060-cpu.txt netapp8060_01_cpu=`grep xxxxxxxxx-01 /data/storage/Storage-8060-cpu.txt | awk -F " " '{print $2}'` netapp8060_02_cpu=`grep xxxxxxxxx-02 /data/storage/Storage-8060-cpu.txt | awk -F " " '{print $2}'` # data insert curl -i -XPOST 'http://x.x.x.x:8086/write?db=public' --data-binary 'storage_cpu,storage=netapp01 value='$netapp01_cpu' . . . storage_cpu,storage=emc01 value='$emc01_cpu' storage_cpu,storage=hp3par value='$hp3par_cpu' storage_cpu,storage=netapp_8060_01 value='$netapp8060_01_cpu' . storage_cpu,storage=netapp_8060_04 value='$netapp8060_04_cpu'' |
---------------------------------------------------------------------------------------
stream |from() .measurement('storage_cpu') .groupBy('storage') |window() .period(2m) .every(3m) |alert() .details(''' <h1>{{ .ID }}</h1> <b>Status : {{ .Level }}</b><br> <b>Trigger : Storage CPU(%)</b><br> <b>Storage : {{ index .Tags "storage" }}</b><br> <b>Value : {{ index .Fields "value" }}</b><br> ''') .message('{{ .Level}}: {{ .Name }}/{{ index .Tags "storage" }} CPU(%): {{ index .Fields "value" }}') .warn(lambda: "value" > 89) .crit(lambda: "value" > 94) .log('/data/alert_log/storage_cpu.log') .email() .slack()
|
---------------------------------------------------------------------------------------
임계치 발생시 Slack 알람 화면