개발
서버 개발 일지

Nginx 서버 로그 기록 설정 및 커스터마이징

139 views as of October 10, 2024.
Nginx 서버를 운용하다보면 참 여러가지 서버 트래픽이 발생한다.

제일 무난한 관리방법은 역시 모든 엑세스에 대해서 철저하게 로깅해놓고 지속적으로 모니터링하면서 필요한 타이밍에 제어를 하는것이다.

경험이 많으신 서버 관리자는 더 효율적인 방법과 자료로 질이 나쁜 트래픽이나 엑세스 요청을 유효하게 거르시겠지만 나같은 경우에는 이미 실서비스를 운용하면서 맨땅에 헤딩하는식으로 이런 자료과 경험을 쌓아가야해서 자연적으로 로깅을 잘하고 모니터링할 수 있는 환경을 구축하는것이 중요했다.

뭐 거두절미하고 관련 설정을 여기에 기록해보자한다.

http {    
    ...
 
    # log_format 설정
    log_format main '[$time_local] $remote_addr "$host" '
                '"$request" $status $body_bytes_sent "$http_referer" '
                '"$http_user_agent"';
 
    access_log /var/log/nginx/access.log main;
 
    # 특정 확장자에 대한 로그 비활성화 설정
    map $request_uri $loggable {
       "~*^.+\.(jpg|jpeg|png|gif|css|js|map|svg|ico|woff|woff2|ttf|eot)(\?.*)?$"  0;  # 해당 파일 확장자일 때 0 (로그 비활성화)
        default                                                                     1;  # 그 외 요청일 때는 1 (로그 활성화)
    }
 
    # 로그 비활성화 조건을 모든 서버에 적용
    access_log /var/log/nginx/access.log main if=$loggable;
 
    ...
Copy

참 여러번 수정한 nginx.conf 로그 설정이다.

우선 로그라는것은 보기 좋아야하므로 로그를 아래와 같은 순서로 나오게 조율했다.

1.[타임스탬프]
2.접속자IP
3.요청Domain
4.요청내용(Method, URI, Protocol)
5.HTTP응답코드
6.응답바이트
7.이전URL
8.유저에이전트

[09/Oct/2024:20:59:56 +0000] 0.0.0.0 "domain.or.kr" "GET / HTTP/1.1" 200 158303 "https://www.google.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
[09/Oct/2024:20:59:57 +0000] 0.0.0.0 "domain.com" "GET /spb3/sboard3/write.php?db=regist&page=3&mode=write&time=1549556661 HTTP/1.1" 301 169 "-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)"Copy

실제로 찍히는 access.log 데이터는 위와 같다. (아이피정보랑 도메인명은 바꿨습니다)

이 내용을 이제 적절히 파싱해서 쓰면 적절한 모니터링을 할 수 있는 정보가 생성되는 것이다.

나같은 경우는 이 로그정보를 하루에 한번씩 주기적으로 1000개 정도를 짤라내서 ERP 내부에서 조회할 수 있게 파싱한다음에 아래와같이 표로 출력해서 모니터링 한다.

위 로그파일을 가져와서 배열로 파싱한 후 테이블로 랜더링

주로 이상한 URI로 요청하는 엑세스나 유저 에이전트 검사를 통해 과도하게 크롤링을 하는 봇들을 추려서 아이피 차단을 걸곤한다.

AWS IP 차단 방법 (서버 아이피 차단) - eruLabo
AWS IP 차단 방법 (서버 아이피 차단) - eruLabo
기존에 웹 서버 단계에서 아이피를 차단하는 방법을 기록한 적이 있다. 이 방법의 단점은 일일히 서버 설정을 열어서 차단해야된다는 문제가 있고, 서버 단에서 엑세스 거부를 날리기 때문에 웹서버 자체가 일단 접...
https://erulabo.com/184

지금 상상으로는 이런 서버 엑세스로그에 AI를 접목시켜서 알아서 이상건을 추려내는 그런 시스템을 떠올리기는하는데 최소한의 자원으로 이런 내용을 어떻게 구현할지 참 고민이 많긴하다.

어찌되었든 터미널화면에서 모니터링을 이제 안해도된다라는거는 나에겐 행복한일인건 분명하다.
#개발 #서버 #Nginx #로그 #Log
0 개의 댓글
×