回線速度をZabbixでモニターする
背景
最近、自宅のケーブルテレビ回線を増速しました。ただ、ネットで調べると増速しても回線品質が悪いとなかなかの評判なので、実効速度をモニターしてあまりに遅いようなら光回線とか検討しようかなーと思い、Zabbixでダウンロードの速度を計測することにしました。
自宅のマンションが無料で8Mbpsのケーブルテレビ回線を使えるから使っていたんですが、8Mbpsだと下りは1〜7.5Mbps、上りは100kbpsぐらいで結構ストレスがたまります。2000円弱で30Mbpsにできるそうなので試してみようかなと。その上は4000円弱で160Mbpsだそうで、それなら光にした方がいいかなーというところです。
Zabbixで回線速度をモニターする
外部チェックスクリプトの作成
curl -w "%{speed_download}"
#!/bin/bash SINGLE_DL_TIMEOUT=7 ZABBIX_TIMEOUT=30 FILES_TO_DOWNLOAD=() FILES_TO_DOWNLOAD+=(http://www.gomplayer.jp/img/sample/mp4_h264_aac.mp4) FILES_TO_DOWNLOAD+=(http://www.gomplayer.jp/img/sample/mp4_mpeg4_aac.mp4) FILES_TO_DOWNLOAD+=(http://ec.nikkeibp.co.jp/nsp/dl/05405/05405_08.zip) FILES_TO_DOWNLOAD+=(http://ec.nikkeibp.co.jp/nsp/dl/05405/05405_13.zip) FILES_TO_DOWNLOAD+=(http://wwwjp.kodak.com/JP/images/ja/digital/cameras/dc120/image031.tif) FILES_TO_DOWNLOAD+=(http://www.sharp.co.jp/galileo/guide/movie/sample/sample2_k.mpg) FILES_TO_DOWNLOAD+=(http://homepage1.nifty.com/trust-system/SAMPLE_koriyama.LZH) ############################ cnt=0 sum=0 dl_num=$(expr \( ${ZABBIX_TIMEOUT} - 1 \) / ${SINGLE_DL_TIMEOUT}) function calc { if [ ${cnt} -gt 0 ]; then expr ${sum} / ${cnt} 2>/dev/null else echo 0 fi exit } trap calc EXIT files_to_process=() while [ ${#files_to_process[@]} -lt ${dl_num} ] && [ ${#files_to_process[@]} -lt ${#FILES_TO_DOWNLOAD[@]} ]; do index=$((RANDOM % ${#FILES_TO_DOWNLOAD[@]})) file=${FILES_TO_DOWNLOAD[${index}]} echo "${files_to_process[@]}" | grep "${file}" > /dev/null if [ $? -eq 0 ]; then continue; fi files_to_process+=(${file}) done for file in ${files_to_process[@]}; do speed_Bps=$(curl -kL -m ${SINGLE_DL_TIMEOUT} "${file}" -o /dev/null -w "%{speed_download}" 2>/dev/null) speed_bps=$(expr ${speed_Bps%.*} \* 8) if [ $speed_bps -gt 0 ]; then sum=$(expr ${sum} + ${speed_bps}) cnt=$(expr ${cnt} + 1) fi done
Zabbixでアイテムを設定