서버 운영
서버 재부팅 후 로그의 시간대가 맞는지 확인하기
재부팅 후 로그 시간이 잘못되면 디버깅이 매우 어려워진다.
왜 시간이 중요할까
서버 로그는 시간을 기준으로 문제를 추적한다. 만약 시간이 잘못되면:
- 에러가 난 시간을 놓친다
- 이벤트 순서가 뒤바뀐다
- 다른 서버의 로그와 비교할 수 없다
특히 분산 시스템에서는 시간 동기화가 중요하다.
서버의 시간 확인하기
date
현재 시간이 표시된다. 시간대도 함께:
timedatectl
더 상세한 정보를 본다:
Local time: Sun 2026-06-29 15:30:00 KST
Universal time: Sun 2026-06-29 06:30:00 UTC
RTC time: Sun 2026-06-29 06:30:00
Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
NTP service: active
시간이 잘못되었다면
1. 시간대 설정 확인
# 현재 시간대
timedatectl show-timezones | grep Seoul
# 시간대 변경
sudo timedatectl set-timezone Asia/Seoul
2. NTP 동기화
# NTP 서비스 상태 확인
sudo systemctl status systemd-timesyncd
# NTP 활성화
sudo timedatectl set-ntp true
# 강제 동기화
sudo ntpdate -s time.nist.gov
# 또는
sudo chronyc makestep
3. 하드웨어 시계(RTC) 동기화
# RTC를 시스템 시간으로 동기화
sudo hwclock --systohc
로그 확인하기
로그의 시간대를 확인:
# Nginx 로그
tail -f /var/log/nginx/access.log
# Syslog
tail -f /var/log/syslog
# Docker 로그
docker logs <container> --timestamps
모든 로그의 시간이 일치하는지 확인하자.
재부팅 후 자동 동기화
대부분의 리눅스는 부팅 후 자동으로 NTP 동기화한다. 하지만 BIOS 배터리가 방전되면 시간이 리셋될 수 있다:
# 부팅 후 시간대 확인하는 스크립트
#!/bin/bash
current=$(date +%s)
expected=$(curl -s -I example.com | grep -i date | cut -d: -f2- | date -f - +%s)
diff=$((current - expected))
if [ ${diff#-} -gt 60 ]; then
echo "System clock is off by $diff seconds"
sudo ntpdate -s time.nist.gov
fi
내 경험
한 번은 서버 BIOS 배터리가 방전되어서 시간이 2024년으로 돌아가 있었다. 로그를 보니 모든 타임스탬프가 과거였다. 그 이후로는 모니터링에 시간 체크를 포함했다.
분산 환경에서의 시간 동기화
여러 서버를 쓸 때는 더 신경 써야 한다:
# 각 서버 시간 확인
for server in web1 web2 db1; do
echo "$server: $(ssh $server date)"
done
모든 서버의 시간 차이가 1초 이상이면 NTP를 다시 확인하자.