rbunlog와 Ubuntu 16.04에 저널링의 관계


18

나는 바닐라 우분투 16.04 서버를 실행 중이며 로깅이 기본적으로 설정되는 방식에 대해 머리를 감싸려고합니다. 난 둘 것을 알 수 있습니다 journaldrsyslog실행 설치되어 있지만, 로그 메시지가 처리되는 방법 나에게 모든 명확에서이 아니다.

대부분의 메시지는 in /var/log/syslog과 via 모두에 표시되는 것처럼 보이지만 둘 journalctl중 하나 /etc/systemd/journald.conf(기본적으로 모두 기본적으로 주석 처리됨) /etc/rsyslog.conf또는 에서 전달을위한 명시 적 구성을 볼 수 없습니다 /etc/rsyslog.d/50-default.conf. 공식 문서 또는 우분투에서 두 가지가 어떻게 설정되어 있는지 설명하는 블로그 게시물을 찾으려고했지만 아무것도 찾지 못했습니다.

혼란을 더하기 위해 logger -p local1.info Test호스트에서 실행 /var/log/syslog했으며 메시지가에 표시되는 동안 아무것도 기록 되지 않았습니다 journalctl.

내 질문은 :

  1. 저널 및 rsyslog는 Ubuntu 16.04에서 정확히 어떻게 작동합니까 (기본)?
  2. loggersyslog가 아닌 저널에서 보낸 메시지가 어떻게 표시 됩니까?

업데이트 : logger예상대로 실수로 작동하지 않는 것이 밝혀 졌으므로 주요 질문과 관련이 없습니다.

답변:


12

기본적으로 rsyslog"imuxsock"모듈을 사용하고, 모듈이 제공 :

로컬 Unix 소켓을 통해 syslog 메시지를 수락하는 기능 가장 중요한 것은 syslog (3) 호출이 syslog 메시지를 rsyslogd [1]에 전달하는 메커니즘 입니다.

rsyslog"imjournal"이라는 모듈을 사용하여 systemd-journal에서 구조화 된 로그 메시지를 가져올 수 있습니다 [2] .

다음과 같이로드 할 수 있습니다 :

module(load="imjournal") 

에:

/etc/rsyslog.conf

반면 "systemd-journald"는 모든 데이터 자체를 캡처합니다.

man systemd-journald

systemd-journald는 로깅 데이터를 수집하고 저장하는 시스템 서비스입니다. 다양한 소스에서 수신 한 로깅 정보를 기반으로 구조화 된 인덱스 저널을 작성하고 유지 보수합니다.

   ·   Kernel log messages, via kmsg
   ·   Simple system log messages, via the libc syslog(3) call
   ·   Structured system log messages via the native Journal API, 
       see sd_journal_print(4)
   ·   Standard output and standard error of system services
   ·   Audit records, via the audit subsystem

를 사용 rsyslogd하여 시스템 로그에 계속 액세스하는 동안 비활성화 할 수 있습니다 journalctl.

$ sudo systemctl mask rsyslogd
$ sudo systemctl stop syslog.socket
$ sudo systemctl stop rsyslog.service
$ systemctl is-active rsyslog.service 
inactive
$ logger -p mail.info Helllooo
$ journalctl

예를 들어 centos는 "imuxsock"모듈을 사용하여 opensuse에 rsyslog"syslog"가없는 동안 모든 "systemd-journald"데이터를 캡처 합니다.


메시지가 끝나지 않은 이유를 알려면 /var/log/syslog이 파일을 확인해야합니다.

less /etc/rsyslog.d/50-default.conf

를 찾고 *.info, 저장 될 위치를 확인하십시오 messages. 같은 다른 파일 일 수 있습니다 .

나를 위해 journalctl그리고 모두에 표시됩니다 syslog.


logger -p .info hello유효하지 않습니다. 시설 이름을 지정하지 않았습니다.
luv.preet

답변을 업데이트 ....
Ravexina

편집에서 언급했듯이 logger작동하지 않는 것이 내 잘못이므로 이제 수정되었습니다 (어쨌든 팁 감사합니다). 두 위치에 로그가 표시 imuxsock되는 경우 참고 사항 이 핵심 인 것 같습니다. rsyslog와 저널링 모두 로컬 syslog 메시지를 수신하는 것 같습니다. 따라서 해당 항목이 두 개의 별도 로그에 저장됩니다.
motns 2016 년

나는 우분투에서 위의 내용을 따랐으며 이제 로거에서 로그를 얻지 못했습니다. -참가작 없음-어떤 아이디어?
Hackeron

좋은 대답입니다. 내가 누락 된 것은 rsyslog가 비활성화되어있을 때 저널이 syslog 소켓을 여는 방법 (또는 그렇지 않은 경우 syslog 메시지를 얻는 방법)에 대한 메모입니까? 또는 저널의 일부 수동 구성이 필요합니까?
Matthijs Kooijman

4

Systemd는 시스템 부팅시 서비스를 시작하는 데 사용되는 초기화 시스템입니다. Journald는 systemd에서 시작한 서비스에 대한 로그를 작성합니다. 저널링을 systemd와 통합하면 가장 빠른 부팅 프로세스 메시지도 저널링 할 수 있습니다.

Rsyslog는 로그 처리를 위해 특별히 제작 된 데몬으로 저널링과 관련이 없습니다. 여러 가지 방법으로 로그를 가져와 여러 가지 방법으로 출력 할 수 있습니다. 저널링 된 로그 메시지도 기본적으로 사용하도록 설정되어 있지 않습니다. 이를 위해서는 /etc/rsyslog.conf 파일에 작성해야합니다.

$ModLoad imjournal # im -> input module
OR
load(type="imjournal")

이제 저널링 된 로그도 허용합니다. 그러나 /etc/rsyslog.conf 파일을 변경해서는 안됩니다.

/etc/rsyslog.conf 파일의 끝에는 다음과 같은 줄이 있습니다.

$IncludeConfig /etc/rsyslog.d/*.conf

이는 rsyslog 로딩 중에 /etc/rsyslog.d/ 폴더에 .conf가있는 모든 파일이 포함되어야 함을 의미합니다. 따라서 모든 사용자 정의 구성은 다음 파일에 있어야합니다.

/etc/rsyslog.d/journald.conf 파일을 만들고 아래 스 니펫을 붙여 넣는 것이 좋습니다.

다음은 imjournal의 rsyslog 공식 페이지 스 니펫입니다.

module(load="imjournal" PersistStateInterval="100"
   StateFile="/path/to/file") #load imjournal module
module(load="mmjsonparse") #load mmjsonparse module for structured logs

template(name="CEETemplate" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag% @cee: %$!all-json%\n" ) #template for messages

action(type="mmjsonparse")
action(type="omfile" file="/var/log/ceelog" template="CEETemplate")

1 행-저널링 된 로그를 승인하기 위해 임시 모듈을로드합니다.

2-mmjsonparse 모듈이 로그 구문 분석에 사용됩니다.

3-템플릿에서 설명 된 형식으로 구성됩니다.

4-mmjsonparse 모듈을 사용하여 해당 로그를 구문 분석합니다.

5-omfile (출력 모듈 파일-파일로 출력) 모듈을 사용하여 지정된 템플리트에 제공된 구조에 따라 해당 로그를 파일, 즉 / var / log / ceelog로 보냅니다.

필요에 따라 구성을 변경하십시오.


설명에 감사드립니다.하지만 @Ravexina의 대답은 rsyslog의 진행 상황을 이해 하고 기본적으로 추가 구성없이 저널링하는 데 도움이된다고 생각합니다 .
motns 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.