Linux

날짜별로 저장하는 로그, 운영에서 급하게 조회해야할 때

PSAwesome 2019. 11. 26. 10:59
반응형

안녕하세요. 운영 업무에서 급하게 서버 로그를 확인해야할 때 오늘 날짜가 기억이 나지 않을 때....

'오늘이' 하면서 달력을 누르는 행위가 싫어서 오늘 날짜의 directory로 이동하도록 설정한 내용을 포스팅하려고 합니다.

참 간단한 설정이지만 이러한 상황이 있을 때 저의 선택을 공유합니다.

 


li 중간에 이미지를 삽입하려 하니 번호가 깨지네요. 읽으실 때 양해좀 부탁드립니다.


상황:

  • 모놀리틱 웹 애플리케이션에서 file로 로그를 찍습니다.
  • 로그는 /log/작곡가/년월일/file1.txt file2.txt 방식입니다.
  • 스카우터에서 쿼리 에러와 사용자가 어떤 기능이 되지 않는다고 합니다.
  • 원인을 파악하는데 오늘 날짜가 늘 기억나지 않습니다.
  • 로그를 작곡가는 paganini, mendelssohn, vivaldi 입니다.

 

예전에 alias 설정에 대해 포스팅한 글이 있습니다. (내용 중복 주의)

2019/07/05 - [Linux] - bash alias 설정 - linux

저의 선택:

  • 해당 디렉토리 위치로 이동하는 alias 설정
  • error 낸 파일이 무엇인지 error파일을 찾는 스크립트를 alias 설정

 

먼저 shell script로 날짜를 가져오는 것을 알아야 했습니다.

예제를 위해 리눅스를 docker 실행시켜봅니다.

기본 설정:

  • 윈도우 cmd 창에서 docker가 설치되어 있고
  • 가상화 설정이 되어 있고
  • 윈도우에서 실행이 가능한 설정이 되어 있따는 것을 가정하고 글을 작성합니다.

 

    • docker run -it ubuntu:latest /bin/bash
    • cmd창을 여시고 docker를 실행합니다.

docker run 이후 bash

  1. bash 내부에 진입했을 것입니다. date를 입력합니다.
    • date
    • date +%Y%m%d
      • 주의사항: date + 띄어쓰기 시 오류가 발생합니다.
  2. 각각의 출력으로 현재 제가 로그를 찍는 디렉토리와 일치한 출력을 확인합니다.

date 출력, 스크립트 실행 시 주의사항

  1. 현재 디렉토리 상황입니다. (예제의 디렉토리 생성 포함, 각 디렉토리 내부에 가서 임시 파일을 생성합니다.)
    • mkdir /log; cd log; mkdir paganini/ mendelssohn/ vivaldi/
    • cd paganini; mkdir 20191122/ 20191123/ 20191124/ 20191125/
    • cd mendelssohn; mkdir 20191122/ 20191123/ 20191124/
    • cd vivaldi; mkdir 20191122/ 20191123/ 20191124/

log directory

  1. alias 설정을 위해 bash에 접근합니다. (현재 유저가 없기 때문에 유저 생성 스크립트를 먼저 실행합니다.)
    • adduser user #유저 명
    • 1234 #비밀번호
  2. ※ 이제 우분투에서 실행에 필요한 명령어와 편집기 설치를 하겠습니다.
    1. apt-get update && apt-get -y install sudo
      • # sudo는 없으니 이상해서 설치합니다...
    2. cd /home/user; apt-get install vim
      • # vim 편집기를 설치합니다.
    3. vim .bashrc
      • vim 편집기에서 단축키는 [좌: h], [상: j], [하:k], [우:l] 입니다. 
      • 93 라인에서 i를 눌러 insert를 합니다.

       

    4. 93 라인에 각 서버의 별칭을 설정합니다. (변수로 받아 처리하는 방법도 있을 수 있지만 비 객체지향적 코딩을 했습니다.)
      • alias paga='cd /log/paganini/$(date "+%Y%m%d")'
      • alias mendel='cd /log/mendelssohn/$(date "+%Y%m%d")'
      • alias vival='cd /log/vivaldi/$(date "+%Y%m%d")'
      • Esc 버튼을 누르면 편집이 종료됩니다.
      • :wq #(저장하고 종료)
      • source .bashrc #bashrc에 저장한 내용을 반영
    5. 각 실행을 입력해봅니다.
      • paga
      • mendel
      • vival

93 line에 별칭 위치

아마 No Search Directory라는 문구가 확인될텐데요, 오늘 날짜의 로그로 가는 스크립트이기 때문입니다.

과거의 로그를 확인할 때는 급하지 않기 때문에 현재 에러났을 때 빨리 서버에 로그를 확인할 수 있도록 스크립트를 구현해봤습니다. 

이 밖에도 tail -f 명령어로 실시간 출력도 가능하고, error 파일 내에 error 로그를 가진 파일을 출력하는 스크립트 등 더 많은 기능도 가능합니다.

감사합니다.!

 

 

 

반응형