Задать вопрос
opium
@opium
Просто люблю качественно работать

Чем мониторить сайты у себя?

Хочется открытый аналог сервисов вроде ping-admin.ru, webopulsar.ru, pingdom.com
Сейчас использую вебопульсар, но за последний год он слишком много раз зафакапил и я вовремя не узнал об упавшем сайте, хотя пару лет до этого он работал прекрасно.
Хочу поставить аналог к себе на сервер, чтобы контролировать любые риски с мониторингом сайтов.
  • Вопрос задан
  • 5223 просмотра
Подписаться 20 Оценить Комментировать
Ответ пользователя 1nd1go К ответам на вопрос (8)
@1nd1go
Я тоже в свое время над этим думал. Мне надо было сделать запрос на http сервер и получить время ответа. И показать график.

Решил написать сам:
responseTime.sh:
#!/bin/bash

url=$1
output=$2
date=/home/centos/statistics/`date +"%Y%m%d"`

if [! -d "$date"]; then
  mkdir $date
fi

curl -o /dev/null -w "%{time_total}\n" -s $url \
  | awk -v url=$url '{printf "%s %s %s\n",$0,strftime("%Y%m%d-%T"),url;}' \
  >> $date/$output


Здесь мы дернули, и записали в файлик строчку вида:
0.111 20131021-17:13:13 http://ya.ru

Результат записей в файлик я передавал в gnuplot через скрипт:
#drawplot.sh
#!/bin/bash

today='date +"%Y%m%d"'
server="~/statistics/"$today"/"$1

awk -v server="$server" -v today="$today" \
  '{gsub(/###server###/,server);gsub(/###server###/,server);gsub(/###today###/,today)};1' ~/statistics/plot.conf \ 
  | gnuplot


#plot.conf
set terminal png size 640,480
set xdata time
set timefmt "%Y%m%d-%H:%M:%S"
set output "###server###.png"
set xrange ["###today###-00:00:00":"###today###:-23:59:59"]
set format x "%H:%M"
set yrange [0:10]
set ytics 1
set grid

plot "###server###" using 2:1 smooth unique


После этого появлялась или обновлялась .png картинка с графиком, ее можно было вставлять в страницу, если надо (для этого был отдельный скрипт :) ).

Запускалось по крону:
#crontab ex.
*/5 * * * * ~/statistics/responseTime.sh "http://ya.ru" yandex &> /dev/null && ~/statistics/drawplot.sh yandex &> /dev/null;


Сделано естественно на коленке с синей изолентой. Вы можете также например вставить посылку почты, если время curl будет больше определенного порога.
Ответ написан