Отслеживайте время отклика nginx с помощью bash-скрипта

Мне нужно следить за файлом журнала nginx. Если время отклика больше определенного значения, мне нужно отправлять почтовые оповещения. Я использовал следующий скрипт. Но при выполнении cronjob некоторые строки журнала пропускаются. Ожидаемый результат: - Письмо сработало, когда столбец 15 в журнале превышает 1000 мс.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DATE=$(date +%Y-%m-%d)
DATE1=$(date +%Y-%m-%dT%H:%M:%S)
###########################################
#This section counts the number of lines appended in the logs for last 10 seconds. And the number is saved into variable "dif". By using this value, we can make avoid repetitions.
before=$(wc -l < /var/log/nginx/access.log)
sleep 10
after=$(wc -l < /var/log/nginx/access.log)
let dif=$after-$before
echo "$dif"
############################################
MS=`tail -n $dif /var/log/nginx/access.log | awk '{ print $15}' | grep -o '[0-9]\.[0-9][0-9][0-9]' | sort -V | sort -nr | head -n1`
echo $DATE1 >> /root/scripts/analysing.log
echo $MS >> /root/scripts/analysing.log
var1=`tail -n $dif /var/log/nginx/access.log | grep -B1 "$MS"|awk 'FNR == 1 {print}' | cut -d 'I' -f 3`
echo " "
echo "Last Recorded & Nginx Highest Execution Time (Millisecond) is: $MS "
echo " "
if [ 1 -eq "$(echo "${MS} > 10.000" | bc)" ]
then
echo "Current Status: Problem!!" 
echo "Description: Nginx Request Processing Time Is High!!"
echo "Nginx request execution time is greater than 10000ms on "$DATE1" I"$var1" " | mail -s "e-Agree Nginx Crossed Normal Execution Limit" -a "From: Alerts <qaz@abc.com>" "zxcvbnm@asdfgh.com"
fi
0
задан 28 April 2017 в 12:19

1 ответ

Найденный решением с помощью команды для подсчета количества слов.

  • Хранимая сумма ${wc -l filename} в файл в конце сценария
  • вышеупомянутое значение принимается в переменную и используется, как запускают номер строки
  • И текущий ${wc -l filename} значение как конец номер строки

При помощи этой логики, я постарался не копировать & пропуск строк.

И добавил этот сценарий в crontab для выполнения каждую минуту.

0
ответ дан 28 April 2017 в 22:19

Другие вопросы по тегам:

Похожие вопросы: