예를 들어, 저는 Apache 웹 서버 로그 이외의 운영 체제에서 어떤 종류의 (전문) 로그에도 노출된 적이 없습니다. 따라서 일반적인 로그인은 기본 사항 중 일부를 이해하지만 상당히 새로운 주제입니다. 현재로서는 이 주제를 완전히 이해하기 위한 투자가 꽤 상당해 보이지만, 가장 추상적인 개념보다 더 많은 것을 알 가치가 있는지조차 아직 모르겠습니다.
이러한 상황에 처한 사람에게 로깅에 대해 배우기 위해 어떤 리소스(자습서, 매뉴얼 페이지, 책)를 추천하시겠습니까?
일반 Linux 사용자는 매일/매월 어떤 로그를 읽어야 합니까? 사람이 쉽게 읽을 수 있도록 작성되었다는 가정이 맞습니까? 아니면 일반적으로 다른 도구에서 평가하고 사용합니까?
일반 *nix 사용자와 소프트웨어 개발자는 이러한 로그에 대해 무엇을 알아야 합니까?
이벤트 로드가 많은 전문적인 웹 서버를 관리하고 싶지 않다면 로그 회전에 대해 무엇을 알아야 합니까?
답변1
[이 기사는 시스템 시스템에 Journald가 널리 채택되기 몇 년 전에 작성되었으며 이에 대해서는 다루지 않습니다. 현재(2018년 말)둘 다아래에 설명된 Journald 및 (r)syslog는 Debian과 같은 배포판에서 사용됩니다. 다른 배포판에서는 rsyslog를 사용하려면 rsyslog를 설치해야 할 수도 있지만 저널드와의 통합은 매우 간단합니다. ]
우분투에 대한 로깅에 대해서는 구체적으로 논의하지 않을 것입니다. 해당 주제는 일반적으로 Linux에 대해 표준화되어 있기 때문입니다. (그리고 제가 말하는 내용의 대부분 또는 전부는 일반적으로 *nix의 모든 버전에 적용되지만 내 말을 그대로 받아들이지는 마세요. ). 또한 이 질문에 대답하는 것 외에 "로그를 읽는 방법"에 대해서는 너무 많이 이야기하지 않겠습니다.
사람이 쉽게 읽을 수 있도록 작성되었다는 가정이 맞습니까? 아니면 일반적으로 다른 도구에서 평가하고 사용합니까?
애플리케이션에 따라 다르지만 일반적으로 최소한 시스템 로그(아래 참조)에 있는 내용은 사람이 읽을 수 있어야 합니다. "나에게 의미"는 또 다른 질문입니다. 하하. 그러나 특정 목적을 위해 표준 도구(grep, awk 등)를 사용하여 더 쉽게 구문 분석할 수 있는 방식으로 구조화되어 있습니다.
아무튼 우선 자체적으로 로깅을 하는 애플리케이션과 시스템 로거를 사용하는 애플리케이션에는 차이가 있다. Apache는 기본적으로 전자를 수행하지만 후자에 대해 구성할 수도 있습니다(대부분의 사람들이 바람직하지 않다고 생각합니다). 자체 로깅을 수행하는 애플리케이션은 파일의 모든 위치를 사용하여 어떤 방식으로든 로그인할 수 있으므로 이에 대해 별로 언급할 내용이 없습니다. 시스템 로거는 흔히 로거라고 불립니다 syslog
.
시스템 로그
"Syslog"는 실제로표준이는 다음을 통해 달성됩니다.악마일반적으로시스템 로그(d는 데몬을 의미합니다!) 현재 Linux(우분투 포함)에서 사용되는 주요 syslog 데몬은 rsyslogd
많은 작업을 수행할 수 있는 Rsyslogd이지만 대부분의 배포판에서 기본적으로 구성되어 콘텐츠 를 /var/log
. /usr/share/doc/rsyslog-doc-[version]
하나 더 있지만 /usr/share/doc/rsyslog-[version]
이는 소스 패키지의 알림일 뿐입니다(예: NEWS
및 ChangeLog
). 있는 경우 HTML이지만 Stack Exchange에서는 로컬 파일 링크 삽입을 허용하지 않습니다.
file://usr/share/doc/rsyslog-doc/index.html
따라서 복사 붙여넣기를 시도해 볼 수 있습니다. 존재하지 않는 경우 설치되지 않은 별도 패키지의 일부일 수 있습니다. 패키징 시스템을 쿼리합니다(예: apt-cache search rsyslog | grep doc
).
구성은 /etc/rsyslog.conf
매뉴얼 페이지가 있는 에 있으며, man rsyslog.conf
매뉴얼 페이지는 좋은 참조를 제공하지만 소개로서 이해하기 쉽지 않을 수 있습니다. 다행스럽게도 스톡 rsyslog.conf의 기본 원칙은 많은 소개와 튜토리얼이 있는 기존 syslog.conf와 동일합니다. 이것, 예를 들어 로컬 rsyslog.conf를 볼 때 여기서 얻고자 하는 내용은 다음과 같습니다.시설그리고우선순위("우선순위"라고도 함로그 수준) 위에서 언급한 syslog 표준의 일부이기 때문입니다. rsyslog는 실제로 표준을 구현하는 커널을 통해 내용을 가져오기 때문에 표준이 중요합니다.
$
rsyslog.conf의 지시문 과 관련하여 이러한 지시문은 rsyslog에만 적용되며 선택적 문서 패키지를 설치하는 경우 해당 지시문을 찾을 수 있습니다 rsyslog_conf_global.html
.
즐거운 시간 보내세요... 애플리케이션이 시스템 로거를 어떻게 사용하는지 궁금하다면 man logger
및 를 확인하세요 man 3 syslog
.
로그 회전
로그를 회전하는 표준 방법은 logrotate
(그리고 하나도 있습니다 )이라는 man logrotate
도구를 사용하는 것입니다. logrotate를 사용하는 표준적인 방법은 다음과 같습니다.크론 데몬, 비록 이 작업을 수행할 필요는 없지만(예를 들어 매일 데스크톱을 종료하는 경향이 있다면 시작 시 한 번만 수행하는 것이 좋습니다)시스템 로그가 시작되기 전그러나 분명히 파일 시스템이 마운트된 후(rw)입니다.
logrotate에 대한 좋은 소개가 있습니다.여기. 알아채다logrotate는 syslog만을 위한 것이 아닙니다, 모든 파일에 사용할 수 있습니다. 기본 구성 파일은 이지만 /etc/logrotate.conf
구성에 "include" 지시어가 있으므로 일반적으로 대부분의 콘텐츠는 /etc/logrotate.d
디렉터리의 개별 파일에 들어갑니다(여기서 d는 데몬이 아닌 디렉터리를 나타내고 logrotate는 데몬이 아닙니다).
logrotate를 사용할 때 고려해야 할 중요한 점은 로그 파일이 "회전"될 때 애플리케이션이 어떻게 반응하는지입니다. 즉,움직이는-- 애플리케이션이 실행되는 동안. WRT (r)syslogd, 이는이 로그에 쓰기 중지(이 작업을 수행하는 데에는 보안상의 이유가 있다고 생각합니다.) 이 문제를 처리하는 일반적인 방법은 syslog에 다시 시작하고 모든 파일을 다시 열도록 지시하는 것입니다. 이것이 바로 postrotate
logrotate conf 파일에 SIGHUP을 syslog 데몬에 보내라는 지시어가 표시되는 이유입니다.