## 프로젝트 개요
Windows 서버에서 특정 서비스의 가용성 상태를 실시간으로 모니터링하고, 중단된 서비스를 자동으로 재시작하여 시스템 안정성을 유지하는 스크립트입니다. 예외 처리와 로깅 기능을 포함해 운영 중 발생할 수 있는 문제 상황을 대응합니다.
## 주요 기능
- 특정 서비스 상태 주기적 점검
- 서비스 중단 시 자동 재시작
- 로그 파일로 실행 이력 및 오류 기록
- 사용자 입력을 통한 서비스 목록 관리
## 사용 방법
1. `servicesToMonitor` 변수에 모니터링할 서비스 이름 추가
2. 스크립트를 PowerShell 환경에서 실행 (관리자 권한 필요)
3. 로그 파일은 `C:\ServiceMonitor.log` 경로에 생성됨
## 확장 가능성
- 이메일 알림 기능 추가
- 복수 서버 대상 모니터링 확장
- 서비스 상태 시각화 대시보드 통합
💙 서버 서비스 상태 모니터링 및 자동 재시작 스크립트
PowerShell 예제
중급
난이도
예제
타입
10/17
등록일
서버 서비스 상태 모니터링 및 자동 재시작 스크립트
중급태그
코드 예제
# 서비스 모니터링 스크립트
$servicesToMonitor = @('Spooler', 'W3SVC', 'RemoteRegistry')
$logPath = "C:\ServiceMonitor.log"
function Check-ServiceStatus {
param ([string]$serviceName)
try {
$service = Get-Service -Name $serviceName -ErrorAction Stop
if ($service.Status -eq 'Stopped') {
Write-Host "[$(Get-Date)] [ERROR] 서비스 '$serviceName' 중단됨" -ForegroundColor Red
return $false
}
else {
Write-Host "[$(Get-Date)] [INFO] 서비스 '$serviceName' 정상 상태 ( $($service.Status) )" -ForegroundColor Green
return $true
}
} catch {
Write-Host "[$(Get-Static)] [ERROR] 서비스 '$serviceName' 확인 실패: $_" -ForegroundColor Red
return $false
}
}
function Restart-ServiceWithLog {
param ([string]$serviceName)
try {
if (Check-ServiceStatus $serviceName) { return }
Write-Host "[$(Get-Date)] [ACTION] 서비스 '$serviceName' 재시작 시도" -ForegroundColor Yellow
Start-Service -Name $serviceName -ErrorAction Stop
Write-Host "[$(Get-Date)] [SUCCESS] 서비스 '$serviceName' 성공적으로 재시작됨" -ForegroundColor Green
} catch {
Write-Host "[$(Get-Date)] [ERROR] 서비스 '$serviceName' 재시작 실패: $_" -ForegroundColor Red
}
}
# 메인 실행 루프
while ($true) {
Get-Date | Out-File -FilePath $logPath -Append
foreach ($service in $servicesToMonitor) {
Restart-ServiceWithLog $service
}
Start-Sleep -Seconds 30
}
등록일: 2025년 10월 17일 20:52
언어 정보
언어
PowerShell
카테고리
Microsoft
인기도
#21
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요