반응형
리눅스 서버 주요 서비스 자동 점검 및 재시작 스크립트
운영 중인 Linux 서버에서는 SSH, 웹서버, DB, 메일, FTP 서비스가 비정상 종료되는 상황이 발생할 수 있습니다. 이럴 때 주기적으로 서비스를 점검하고, 장애 발생 시 자동으로 재시작하도록 구성하면 운영 안정성을 높일 수 있습니다.
스크립트 작성
vim service_check.sh
#!/bin/bash
# ==========================================
# 주요 서비스 상태 점검 및 자동 재시작 스크립트
# Author : 운영 자동화 예제
# ==========================================
NOWDATE=$(date '+%Y-%m-%d %H:%M:%S')
HOSTNAME=$(hostname)
LOG_FILE="/var/log/service_check.log"
MAIL_TO="admin@example.com"
# 점검 대상 서비스 목록
SERVICES=(
ssh
nginx
mysql
postfix
vsftpd
)
# 로그 함수
write_log() {
echo "[$NOWDATE] $1" >> $LOG_FILE
}
# 메일 알림 함수 (mailx 설치 필요)
send_alert() {
SUBJECT="[ALERT] $HOSTNAME 서비스 장애 복구"
echo "$1" | mail -s "$SUBJECT" $MAIL_TO
}
# 서비스 점검
check_service() {
SERVICE_NAME=$1
systemctl is-active --quiet $SERVICE_NAME
if [ $? -ne 0 ]; then
write_log "$SERVICE_NAME 서비스 비정상 상태"
systemctl restart $SERVICE_NAME
sleep 3
systemctl is-active --quiet $SERVICE_NAME
if [ $? -eq 0 ]; then
MSG="$SERVICE_NAME 서비스 재시작 성공"
write_log "$MSG"
send_alert "$MSG"
else
MSG="$SERVICE_NAME 서비스 재시작 실패"
write_log "$MSG"
send_alert "$MSG"
fi
fi
}
# 메인 루프
for SERVICE in "${SERVICES[@]}"
do
check_service $SERVICE
done
실행 권한 부여
chmod +x service_check.sh
수동 실행
./service_check.sh
Cron 등록 (1분마다 점검)
crontab -e
* * * * * /root/scripts/service_check.sh >/dev/null 2>&1
로그 확인
tail -f /var/log/service_check.log
메일 발송 기능 사용 시
sudo apt install -y mailutils
또는
sudo yum install -y mailx
728x90
반응형
'스크립트' 카테고리의 다른 글
| 아파치 서버의 로그 삭제 스크립트 (0) | 2013.08.14 |
|---|---|
| MySQL/MariaDB 데이터베이스 및 계정 자동 생성 스크립트 (0) | 2013.08.14 |
| bind recursive clients 모니터링 (0) | 2013.08.14 |
| 파이션 기본 문법 및 데이터 타입 이해 (0) | 2013.07.24 |
| php 임의의 패스워드 생성 (0) | 2013.07.02 |