저널링된 로그를 일반 텍스트 파일로 가져오기

저널링된 로그를 일반 텍스트 파일로 가져오기

나중에 파일을 가져와서 Logstash로 보낼 수 있도록 저널링된 로그를 파일에 기록하고 싶습니다. syslog-ng를 실행하고 이를 저널드의 클라이언트로 만들어 syslog 파일을 얻을 생각이었습니다. 저는 CoreOS 머신에서 Docker 컨테이너를 사용하고 있으므로 CoreOS docker 호스트에서 syslog-ng를 컨테이너로 실행하여 컨테이너를 실행하는 systemd 유닛을 생성하려고 했습니다. 나는 팔로우했다systemd에서 syslog를 얻으려면 이 페이지를 방문하세요., 그러나 syslog-ng 컨테이너를 호스트의 syslog 소켓에서 직접 읽도록 만들려고 하면(도커 볼륨으로 마운트하여) "주소가 이미 사용 중입니다"라는 메시지가 표시됩니다. 따라서 syslog-ng가 실행 중인 컨테이너인 저널링 로깅이 있지만 syslog-ng 내에서 저널링된 로그를 가져오는 방법을 모르겠습니다.

저널링된 로그를 파일로 가져오는 대체 솔루션은 를 실행하는 시스템 유닛을 실행하는 것입니다 journalctl -f --json | tee -a /var/log/systemd. 하지만 이 솔루션의 신뢰성이 확실하지 않습니다. 이것이 충분한 해결책인가?

답변1

이 질문은 약간 오래된 질문이지만 Google의 첫 번째 검색 결과 중 하나입니다. 그것과 --json 옵션은 나에게 작동하지 않는 것 같고 매뉴얼 페이지에 표시되지 않습니다.

저는 Journalctl의 매뉴얼 페이지를 보았고 --no-tail이라는 옵션이 있습니다. 이는 날짜를 다른 응용 프로그램이나 파일로 파이프할 수 있는 std로 직접 출력합니다.

제 경우에는 오늘부터 ssh 로그를 원했기 때문에 다음을 실행했습니다 journalctl -u sshd -S today --no-tail > main.log.

기술적 설명: 오늘부터 해당 장치의 모든 로그를 가져옵니다 sshd. 그런 >다음 이를 파일로 출력합니다.

귀하의 경우에는 이것이 귀하가 원하는 것이라고 생각합니다 journalctl --no-tail > test.log.

이것은 Arch Linux에서 테스트되었습니다.

관련 정보