← 전체 글로 돌아가기

서버 운영

서버 재부팅 후 로그의 시간대가 맞는지 확인하기

재부팅 후 로그 시간이 잘못되면 디버깅이 매우 어려워진다.

왜 시간이 중요할까

서버 로그는 시간을 기준으로 문제를 추적한다. 만약 시간이 잘못되면:

  • 에러가 난 시간을 놓친다
  • 이벤트 순서가 뒤바뀐다
  • 다른 서버의 로그와 비교할 수 없다

특히 분산 시스템에서는 시간 동기화가 중요하다.

서버의 시간 확인하기

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를 다시 확인하자.

서버 재부팅 후 로그의 시간대가 맞는지 확인하기 · turin's blog