리눅스 서버 환경에서 시스템 자원을 효과적으로 관리하는 것은 안정적이고 효율적인 운영을 위해 매우 중요합니다. 그중 파일 디스크립터(file descriptor) 사용량을 모니터링하면 시스템의 성능 병목현상이나 한계점을 진단하는 데 큰 도움이 됩니다. 이번 가이드에서는 Bash 스크립트, Systemd 서비스, Logrotate를 사용해 파 디스크립터 사용량을 자동으로 로깅하는 시스템을 구축하는 방법을 알아보겠습니다.
사전 준비
이 설정을 진행하기 전에 다음 사항을 확인하세요.
- root 권한이나
sudo권한이 있어야 합니다. - Bash 스크립트와 리눅스 서비스(Systemd)에 대한 기본 지식이 필요합니다.
파일 디스크립터 로깅 자동화: 단계별 가이드
1. 로그 디렉토리 및 스크립트 정의
먼저 로그 파일을 저장할 디렉토리를 생성하고, 파일 디스크립터 사용량을 캡처할 스크립트를 작성합니다.
아래는 스크립트의 구조입니다.
#!/bin/bash
# 변수 설정
LOG_DIR="/var/log/file-nr"
LOG_FILE="$LOG_DIR/file-nr.log"
# 로그 디렉토리 생성
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR"
fi
# 무한 루프를 통해 파일 디스크립터 사용량 로깅
while true; do
echo "$(date '+%Y-%m-%d %H:%M:%S') $(cat /proc/sys/fs/file-nr)" >> "$LOG_FILE"
sleep 5
done
이 스크립트는 리눅스 커널 파일 /proc/sys/fs/file-nr에 저장된 파일 디스크립터 정보를 5초 간격으로 로그 파일에 기록합니다.
2. 로깅 스크립트 생성
스크립트를 /usr/local/bin에 저장해 실행 가능하도록 설정합니다.
- 아래 명령어를 실행해 스크립트를 작성하세요.
nano /usr/local/bin/file-nr-logger.sh
- 위 스크립트를 파일에 붙여넣습니다. 저장 후 종료합니다.
- 스크립트에 실행 권한을 부여합니다.
chmod +x /usr/local/bin/file-nr-logger.sh
3. Systemd 서비스 설정
Systemd를 사용하면 스크립트를 백그라운드에서 실행하고 자동으로 재시작할 수 있습니다. 다음과 같은 Systemd 서비스 파일을 생성합니다.
- 아래 명령어를 실행합니다.
nano /etc/systemd/system/file-nr-logger.service
- 아래 내용을 추가합니다.
[Unit]
Description=File Descriptor Logger Service
After=network.target
[Service]
ExecStart=/usr/local/bin/file-nr-logger.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
- Systemd 매니저를 리로드하고 서비스를 활성화 및 시작합니다.
systemctl daemon-reload
systemctl enable file-nr-logger.service
systemctl start file-nr-logger.servic
4. Logrotate 설정
로그 파일 크기가 무한히 커지는 것을 방지하려면 Logrotate를 사용해 로그를 정리합니다.
- 아래 명령어로 Logrotate 설정 파일을 생성합니다.
nano /etc/logrotate.d/file-nr
- 다음 내용을 추가합니다.
/var/log/file-nr/file-nr.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 root root
postrotate
systemctl restart file-nr-logger.service
endscript
}
- Logrotate 설정을 테스트합니다.
logrotate -f /etc/logrotate.d/file-nr
구현 요약
이제 다음 작업이 자동화되었습니다:
- Bash 스크립트: 5초마다 파일 디스크립터 사용량을 로그에 기록.
- Systemd 서비스: 스크립트의 백그라운드 실행 및 충돌 시 자동 재시작.
- Logrotate 설정: 로그 파일의 크기 관리 및 7일 보관 후 압축 저장.
결론
이번 설정을 통해 파일 디스크립터 사용량을 효율적으로 모니터링하고 로그 데이터를 체계적으로 관리할 수 있는 시스템을 구축했습니다. 이 방법은 가벼우면서도 확장성이 뛰어나며, 시스템 성능 모니터링 외에도 다양한 활용이 가능합니다.
추가적인 자동화 설정이나 리눅스 관리와 관련된 도움이 필요하면 언제든 문의하세요!