임의의 로그 파일(예: apf_log)에서 다른 컴퓨터로 메시지를 보내는 방법은 무엇입니까?

임의의 로그 파일(예: apf_log)에서 다른 컴퓨터로 메시지를 보내는 방법은 무엇입니까?

/etc/rsyslog.d/50-default.conf에 다음 줄을 추가하면 하나의 표준 로그 파일에서 다른 서버로 로그 메시지를 보낼 수 있다는 것을 발견했습니다(저는 ubuntu 16.04를 사용하고 있습니다).

인증, 인증 개인. * @@73.147.200.188:514
시스템 로그 @@73.147.200.188:514

이제 apf_log로 동일한 작업을 수행하고 싶지만 "apf_log @@73.147.200.188:514"가 작동하지 않습니다.

나는 imfile 모듈 예제를 수십 가지 변형해 보았습니다(http://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html)에는 명령의 이전 버전과 새 버전이 모두 포함되지만 아무런 효과가 없습니다.

내가 얻은 가장 가까운 것은 실제로 imfile을 설정하지 않았음에도 불구하고 apf_log의 올바른 형식의 로그 파일 항목을 auth.log에 삽입하는 "apf_log /var/log/auth.log" 줄을 추가하는 것이었습니다. 불행하게도 auth.log 항목을 원격 서버에 직접 보낼 수도 없습니다("auth.log @@73.147.200.188:514"는 효과가 없습니다).

rsyslog의 imfile 모듈에 대한 문서에는 "이 모듈은 표준 텍스트 파일을 syslog 메시지로 변환하는 기능을 제공합니다."라고 나와 있습니다. "상태 파일"을 사용하여 새 줄이 나타나는 시기를 감지하고 이를 "rsyslog의 규칙 엔진"("syslog @@73.147.200.188:514" 및 "auth,authpriv.* /var/ log를 참조한다고 가정함)에 전달합니다. " 및 기타 규칙) /auth.log").

그러나 해당 규칙 엔진에 있는 파일의 변수 이름이 무엇인지는 알려주지 않습니다. 파일 이름, 전체 경로 및 imfile "태그" 값을 사용해 보았습니다. 또한 서버(이 경우 73.147.200.188)에서 이러한 설정을 일치시키고 /var/log/apf_log에 전체 권한이 있는지 확인했습니다(두 시스템 모두에서).

더스틴

답변1

kodi저는 Raspberry Pi 에서 Fedora 23 서버로 로그를 보내기 위해 이 작업을 수행했습니다 . imfile 및 match 규칙에 대한 기능(local0)과 심각도(info)만 지정하면 된다고 생각합니다. 파이에 구성 파일을 추가했습니다 /etc/rsyslog.d/00-pi.conf.

# try send arbitrary file to remote
$WorkDirectory /var/spool/rsyslog
$ModLoad imfile
$ModLoad imtcp
$InputFileName /home/osmc/.kodi/temp/kodi.log
$InputFileTag mytag1:
$InputFileStateFile imfilestatuskodi
$InputFileFacility local0
$InputFileSeverity info
$InputRunFileMonitor

# send all lines to server
local0.info @@server
& stop

파일은 초기에 포함됩니다 /etc/rsyslog.conf. 수신 서버에는 이미 수신 설정이 있습니다 /etc/rsyslog.d/00-receive.conf(단순화해야 함).

$ModLoad imtcp
$InputTCPServerRun 514
$template nomatch,"/var/log/nomatch-%hostname%.log"
# match on pi's ip address
if $fromhost-ip == '192.168.0.20' then {
     action(type="omfile" dynaFile="nomatch")
     stop
}

pi에서 rsyslog를 다시 시작하면 kodi.log예상대로 모든 파일 내용과 파일의 후속 업데이트가 표시됩니다. /var/log/nomatch-pi.log예상대로 pi에서 상태 파일은 /var/spool/rsyslog/imfilestatuskodi.

답변2

또한 syslog 서버가 실행 중이고 다른 서비스의 로그를 원격 syslog 서버로 보내는 방법을 알아내려고 노력 중입니다.

syslog 클라이언트에서;

1- 다음 줄을 /etc/rsyslog.conf 파일에 추가하고 기본 로그 파일을 원격 syslog 서버로 보냅니다.

*.* @@10.10.10.10:514

2- 새 파일 /etc/rsyslog.d/myservice.conf를 생성하고 이를 사용하여 /var/log/guacamole.log 레코드를 원격 syslog 서버로 전송했습니다.

고양이/etc/rsyslog.d/myservice.conf

$ModLoad imfile
$InputFileName /var/log/guacamole.log
$InputFileTag docker.guacamole:
$InputFileStateFile /tmp/guacamole_state_file
$InputFileSeverity info
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@10.10.10.10

rsyslog 서비스를 다시 시작하면 guacamole.log가 원격 syslog 서버에 채워집니다.

모듈 및 매개변수에 대한 추가 정보: https://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html

관련 정보