Image

지식 기반 → 높은 부하를 피하기 위해 crontab 스크립트 설정

[가상 서버]
출판 날짜: 27.01.2023

어떤 보호 서비스도 공격을 방어할 수 없거나 서버가 다른 이유로 높은 부하에서 작동하기 시작한 경우. 스크립트를 설치하고 crontab 서비스를 통해 1분마다 실행하는 것이 좋습니다. 이렇게 하면 중요한 로드 중에 서버에 대한 액세스를 잃지 않고 이러한 상황을 제거하기 위한 조치를 취할 수 있습니다.

/etc/cron.daily/load-average-2.sh

#!/bin/bash

loadavg=`uptime | awk '{print $10+0}'`
# bash doesn't understand floating point
# so convert the number to an interger
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
if [ "$thisloadavg" -ge "2" ]; then
echo "Busy - Load Average $loadavg ($thisloadavg) "
echo 'Warning - Load AVG (my.server.tld) on:' `date` `uptime` | mailx -s "Warning: LA from `uptime | cut -d'(' -f2 | cut -d')' -f1`" -S smtp=smtp://mail.server.tld -S smtp-auth=login -S smtp-auth user=user@domain.tld -S smtp-auth-password=PassW0rd -S from="LLC COMPANY" to@domain.tld

else
echo "Okay - Load Average $loadavg ($thisloadavg) "
fi

이 스크립트는 /etc/cron.daily 폴더의 load-average-2.sh 파일에 저장하고 실행 권한을 설정해야 합니다.

그런 다음 crontab -e 명령을 통해 행을 추가하여 2분마다 실행해야 합니다:

*/2 * * * * /etc/cron.daily/load-average-2.sh >> /dev/null 2>&1

값은 자신의 값으로 바꿔야 합니다:

  • my.server.tld - 스크립트를 설치하는 서버의 이름입니다.
  • mail.server.tld - 스크립트가 알림을 보내는 메일 서버의 도메인 이름입니다.
  • user@domain.tld - 메일 서버에 연결(로그인)하기 위한 사서함 이름입니다.
  • PassW0rd - 메일 계정의 비밀번호입니다.
  • LLC COMPANY - 편지를 보낼 이름과 주소.
  • to@domain.tld - 알림이 전송될 우편 주소입니다.

부하 평균이 2를 초과하는 경우, 즉 200%(코어 2개)이면 스크립트가 알림을 보냅니다. 이 매개변수는 강조 표시되어 있으며 서버의 코어 수에 따라 원하는 매개변수로 변경할 수 있습니다. 예를 들어 코어가 4개라면 최대 부하는 4개입니다. 400%.

필요한 경우 실행해야 하는 스크립트에 명령을 추가할 수 있습니다. 예를 들어 서비스를 다시 시작하여 부하를 줄일 수 있습니다. 다른 것보다 먼저 추가해야 합니다. 예를 들면 다음과 같습니다:

service nginx restart
service ddos restart
service httpd restart




No Comments Yet