로그는 언제, 누가, 어디에 수집하는가

로그는 소프트웨어를 실행한 후에 나타나는 경과 정보를 출력한 것이다. 즉, 프로그램이 실행되었을 때 사전에 정해진 출력 위치(예를 들면 파일)에 프로그램의 처리 정보를 기록한 것이다.

일반적인 유닉스(Unix) 계열 애플리케이션 대부분은 파일명과 같은 형태로 로그 출력 위치를 지정할 수 있으며, 위치를 미리 지정해 두면 애플리케이션이 실행되었을 때 설정 정보를 읽어서 지정해 둔 로그 출력 위치에 로그를 출력한다.

아래에 웹 서버로 유명한 아파치(Apache)에서 로그를 출력하는 주요 흐름을 나타냈다.

  1. OS에서 아파치를 실행한다.
  2. 아파치는 실행 시점에 설정 파일의 정보를 읽는다. 여기에서 로그 출력 위치를 확인한다.
  3. 로그 출력 위치에 아파치가 실행되었을 때의 로그 정보를 출력한다.
  4. 아파치가 완전히 실행되어 웹 사이트에 액세스할 수 있다. 사용자가 이 웹 사이트에 액세스한다고 가정한다.
  5. 사용자가 웹 사이트에 액세스하면 아파치는 이를 감지하여 사용자가 요청한 페이지 응답을 하고, 동시에 날짜 정보(언제), 사용자 정보(누가), 요청받은 페이지 정보(무엇을 했는지)를 로그 정보로 출력한다.

syslog는 로그의 기본이다

유닉스 계열 OS(리눅스 포함)에서 로그는 syslog가 기본이다. syslog는 대표적인 메일(Simple Mail Transger Protocol, SMTP) 서버 애플리케이션인 센드메일(sendmail)의 로그 애플리케이션으로 개발되었다. 즉, 처음에는 단순히 메일 서버 전용 로거(logger) 프로그램이었다. 이것이 편리하다고 느낌 개발자들이 다른 애플리케이션(예를 들면 FTP 서버)에도 syslog 애플리케이션을 포함하여 로그 정보를 출력하였고 어느새 표준이 되었다. 이렇게 표준이 된 syslog를 RFC 3164로 체계적으로 정리한 것이 syslog 프로토콜이다.

syslog의 기본 기능 1 - 로그 쓰기

첫 번째 기능은 로그를 쓰는 기능이다. 바꿔 말하면 로그 출력을 관리하는 기능이다. 예를 들어, 로그 출력 위치가 파일이면 로그를 파일에 써서 그 로그 파일을 관리하는 기능을 한다.

메일 서버나 FTP 서버는 따로 로그 파일에 로그를 쓰거나 로그 파일을 관리할 필요가 없으므로 그만큼 시간을 절약할 수 있다. 다만, 반드시 syslog가 설치되어 있는 건 아니므로 일반적인 애플리케이션은 자체적인 로그 정보 출력 · 관리 기능을 갖추고 있다. 물론 대부분의 애플리케이션은 syslog로 출력하는 기능도 갖추고 있다.

syslog의 기본 기능 2- 로그 수집