서버 운영
DNS 레코드 로그가 너무 많을 때 무엇부터 볼까
운영 중 로그가 폭주하면서 실제 에러를 놓치기 쉽다. DNS와 도메인 관련 로그를 필터링하는 방법.
로그가 많아지는 원인 먼저 파악
Nginx, Traefik, systemd 로그가 갑자기 증가했다면, 세 가지 원인이 대부분이다.
- DNS 조회 실패 반복: 클라이언트가 도메인을 못 찾고 계속 재시도
- 프록시 재시도: 업스트림 서버가 응답 없어서 반복 요청
- 헬스체크 폭주: Kubernetes나 로드밸런서가 끊임없이 확인
먼저 시간대를 확인한다.
sudo journalctl --since "2026-06-28 14:00:00" --until "2026-06-28 15:00:00" | wc -l
갑자기 증가한 시점과 연관된 배포나 설정 변경이 있었는지 기억해본다.
DNS 특정 에러만 필터링
# Nginx에서 DNS 관련 로그만
sudo grep "name resolution" /var/log/nginx/error.log | tail -20
# systemd 저널에서
sudo journalctl -u systemd-resolved -n 50
# NXDOMAIN (존재하지 않는 도메인)
sudo grep "NXDOMAIN" /var/log/syslog
같은 도메인이 반복되는가, 아니면 다양한 도메인인가. 같은 도메인이면 설정 오류, 다양하면 클라이언트 문제일 가능성이 높다.
프록시 설정 확인
# Nginx upstream 상태
sudo nginx -T | grep -A10 "upstream"
# 현재 설정 리로드
sudo nginx -t && sudo systemctl reload nginx
Upstream에 도메인 이름으로 지정되어 있다면, 매번 DNS 조회가 일어난다.
# 이렇게 하면 매번 DNS 조회
upstream backend {
server api.example.com:8080;
}
# 이렇게 하면 DNS는 한 번만
upstream backend {
server 10.0.0.1:8080;
}
DNS 캐시 설정
Nginx의 resolver directive로 로컬 DNS 캐시를 사용한다.
resolver 127.0.0.1 valid=300s; # 5분마다 재확인
resolver_timeout 5s;
valid 시간을 길게 하면 조회가 줄어들지만, 도메인이 변경되었을 때 반영이 늦어진다.
헬스체크 빈도 조정
# Traefik 헬스체크 설정 확인
grep -r "interval\|timeout" /etc/traefik/
# Kubernetes probe 설정
kubectl get pod -o yaml | grep -A5 "livenessProbe\|readinessProbe"
HeealthCheck interval이 5초 같은 짧은 시간으로 설정되면 로그가 폭주한다.
로그 레벨 조정
일시적으로 로그 레벨을 높여서 노이즈를 줄인다.
# Nginx 에러 로그 레벨 (crit, error, warn, notice, info, debug)
sudo sed -i 's/error_log .*/error_log \/var\/log\/nginx\/error.log warn;/' /etc/nginx/nginx.conf
sudo nginx -t && sudo systemctl reload nginx
또는 로그를 필터링해서만 본다.
# 실시간으로 특정 패턴만 보기
sudo journalctl -f | grep -v "health check\|probe"
로그 로테이션 설정
로그 크기 자체가 문제라면 로테이션 설정을 확인한다.
cat /etc/logrotate.d/nginx
Logrotate가 제때 실행되지 않으면 로그 파일이 계속 커진다.
# 수동 로테이션
sudo logrotate -f /etc/logrotate.d/nginx
# 로그 파일 크기 확인
du -h /var/log/nginx/
근본 원인 해결
로그가 많은 건 증상이고, 원인을 찾아서 고쳐야 한다.
# 가장 자주 나오는 에러
sudo grep "error" /var/log/nginx/error.log | \
sed 's/.*\(error: .*\)$/\1/' | sort | uniq -c | sort -rn | head -5
Top 5 에러를 보면 실제 문제가 뭔지 명확해진다. 그것을 먼저 고친다.