추가 읽기

추가 읽기

systemd-journald가 syslog 프로토콜의 새로운 구현인지 아니면 rsyslog, syslog-ng와 같은 syslog 구현을 사용하는지 알고 싶습니다.

구글링을 해봤지만 설득력 있는 내용을 찾지 못했습니다.

답변1

합의에 관한 한, systemd-journald...

  • ...은(는) 이름의 스트림 소켓에 대한 리스너입니다 /run/systemd/journal/stdout. systemd는 서비스의 원시 표준 출력 및 오류(기본값 또는 StandardOutput=journal/ 를 사용한 명시적 StandardError=journal)를 이 소켓에 연결합니다. 따라서 개행 문자로 끝나는 가변 길이 자유 형식 레코드에 대한 프로토콜을 허용합니다.
  • /run/systemd/journal/dev-log… 는 에서 심볼릭 링크된 이라는 데이터그램 소켓의 수신기입니다 /dev/log. syslog()애플리케이션에 연결된 GNU C 라이브러리의 라이브러리 기능이 사용하는 프로토콜을 수신합니다 .
  • ...라는 이름의 데이터그램 소켓을 수신하면서 다른 서비스의 클라이언트가 되어 보십시오 /run/systemd/journal/syslog. 이는 또한 syslog()GNU C 라이브러리의 라이브러리 함수가 사용하는 프로토콜을 허용합니다( systemd-journald실제로 다른 라이브러리와 다른 함수를 사용하여 이를 말하기는 하지만).
  • ... 이라는 문자 장치의 판독기입니다 /dev/kmsg. 이는 가변 길이, 대부분 자유 형식, 개행 종료 레코드용 프로토콜인 Linux 커널에서 사용하는 프로토콜을 허용합니다.
  • ...라는 이름의 데이터그램 소켓에 대한 수신기입니다 /run/systemd/journal/socket. 이는 응용 프로그램이 해당 소켓과 함께 일부 프로토콜을 사용하는 라이브러리에 대해 연결되는 GNU C 라이브러리의 상황과 유사합니다. 단, 함수는 sd_journal_sendv()응용 프로그램이 연결하는 시스템 C 라이브러리에 있고 해당 프로토콜은 표준화되지 않습니다. 각 데이터그램의 키=값 쌍 배열과 선택적으로 사람이 읽을 수 있는 파일 설명자를 포함하는 시스템 전용 프로토콜입니다.

GNU C 라이브러리의 함수는 syslog()RFC 5424나 RFC 3164가 아닌 프로토콜을 사용하지만 실제로는 자체 표준입니다. NIL 값으로 선택적 필드를 지정하기 위한 올바른 수의 공백과 대시가 없기 때문에 RFC 5424가 아닙니다. PROCID대신 필드가 있으므로 RFC 3164가 아닙니다 HOSTNAME.

몇 년 전만 해도 시스템 운영 체제는 다음과 같았습니다.

  • systemd-journald위의 모든 작업을 수행합니다(일부는규약) GNU C 라이브러리 및 systemd C 라이브러리의 서버가 되어 해당 프로토콜을 사용하여 통신합니다.
  • 선택적 syslog, rsyslog 또는 syslog-ng 프로그램은 무언가가 소켓에 메시지를 보내고 xinetd소켓을 열린 파일 설명자 또는 열고 수신하도록 구성된 직접 서비스(rsyslog와 동일) 모듈로 수신하려고 할 때 호출됩니다. ; GNU C 라이브러리 프로토콜을 말합니다.inetd/run/systemd/journal/syslog/run/systemd/journal/syslogimuxsock
  • 선택적 syslog, rsyslog, syslog-ng 또는 udp-syslog-read 서비스는 RFC 5426 트래픽을 수신합니다.

현재 시스템 운영 체제에는 다음이 포함됩니다.

  • systemd-journald위의 모든 작업을 다시 수행하고 GNU C 라이브러리와 systemd C 라이브러리가 통신하는 서버가 됩니다.
  • 소켓을 통하지 않고 직접 서비스로 호출되는 선택적 rsyslog 프로그램은 해당 imjournal모듈을 사용하여 시스템 로그 파일에서 직접 읽습니다.
  • 선택적 syslog, rsyslog, syslog-ng 또는 udp-syslog-read 서비스는 RFC 5426 트래픽을 수신합니다.

추가 읽기

관련 정보