스토리지 CPU 상태 모니터링 (이외 IOPS,Latency,Bandwidth,DISK 용량 모두 모니터링중)
10여대 스토리지 운영중 (대략 800TB, 다양한 벤더, VM 10,000대 이상 운영중) 여러가지 벤더라 cli 명령도 다 틀리고 제공되는 모니터링 툴도 벤더별로 다 제각각이라 관리적인 측면이나 모니터링 측면에서 짜증남…
스토리지 이슈 발생시…. VM 전체가 영향을 받아 서비스에 큰 문제 발생… 그래서 스토리지 모니터링이 상당히 중요한 서비스임..
Point :
아래 스크립트를 크론에 등록하여 curl을 사용하여 influxdb 로 넣고 kapacitor 로 실시간 감시 임계치 부합되면 alert 화면은 grafana 모니터링 |
script
#!/bin/bashnetapp01_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}’` # emcemc01_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 3parsshpass -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” |
– 스토리지 cpu 90% 이상일때 email, slack 로 알람 통보 (tick script 예제)
cat storage_cpu.tick
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 알람 화면
Azure Monitor Storage 인사이트를 사용하여 스토리지 서비스 모니터링