Linux Destro는 Centos 6.8입니다.
rsyslog.conf는 다음과 같습니다.
# cat /etc/rsyslog.conf
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
authpriv.* ?server-dc
*.info,mail.none,authpriv.none,cron.none ?server-dc
$IncludeConfig /etc/rsyslog.d/*.conf
#*.info;mail.none;authpriv.none;cron.none /var/log/messages
#*.* @elk-rsyslog:514
내가 이해하고 싶은 요점은 다음과 같습니다.
1)
$template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
enter code here
따라서 위 줄은 /scratch/rsyslog
다음과 같이 메시지 파일 뒤에 디렉터리 구조를 생성하는 Unix 원격 호스트의 모든 로그를 전달하는 rsyslog 서버의 디렉터리 경로입니다.
/scratch/rsyslog/remot1-Ser1/messages.log /scratch/rsyslog/remot1-Ser2/messages.log
따라서 이것은 잘 작동하지만 동시에 다음 형식으로 네트워크 로그를 동일한 위치에 전달하는 네트워크 장치도 거의 없습니다.
/scratch/rsyslog/Sep/messages.log /scratch/rsyslog/Oct/messages.log
/scratch/rsyslog/network
위 네트워크 로그의 경우 메시지 파일 뒤에 월 이름별로 디렉터리가 생성되므로 네트워크 로그를 별도의 폴더에 수집할 수 있도록 rsyslog에서 네트워크 로그에 대해 다른 경로를 정의하는 방법을 찾고 있습니다. 이는 이러한 로그를 Elasticsearch로 처리하고 있기 때문에 Unix 로그에 와일드카드를 사용하고 있지만 /scratch/rsyslog/*/messages.log
여기에는 wildcard()가 호출되는 네트워크 로그도 포함됩니다 *
.
그렇다면 로그가 특정 원격 호스트 또는 IP에서 나오고 rsyslog 서버의 특정 폴더로 이동해야 하는지 알 수 있는 방법이 있습니까?
2) 여기에 $template server-dc, "/scratch/rsyslog/%HOSTNAME%/messages.log"
로그인이 무엇인지 입력하세요서버DC이것은 또 다른 호스트 이름이므로 어떤 목적으로 사용됩니까? 아니면 위의 요구 사항을 고려하여 관련 있는 이름으로 변경할 수 있습니까?
3) 동일 서버DC다른 구성 매개변수에도 포함됩니다.
예상되는
시스템, 네트워크, 방화벽과 같은 로그를 별도의 다른 디렉터리로 전달하는 방법이 있는지 궁금합니다.
1 -/scratch/rsyslog/system/%HOSTNAME%/messages.log
2 - /scratch/rsyslog/network/%HOSTNAME%/messages.log
삼- /scratch/rsyslog/firewall/%HOSTNAME%/messages.log
답변1
원하는 만큼의 템플릿을 갖고 수신 메시지의 호스트 이름이나 IP 주소를 테스트할 수 있습니다. sys10 및 sysabc와 같이 "sys"로 시작하는 모든 "시스템"과 같이 호스트 이름이 잘 구조화되어 있으면 테스트 수를 줄일 수 있습니다.
예를 들어,
$template mysystems,"/scratch/rsyslog/system/%HOSTNAME%/messages.log"
$template mynets,"/scratch/rsyslog/network/%HOSTNAME%/messages.log"
$template myfirewalls,"/scratch/rsyslog/firewall/%HOSTNAME%/messages.log"
if $fromhost startswith "sys" then -?mysystems
& stop
if $fromhost startswith "net" then -?mynets
& stop
if $fromhost startswith "fw" then -?myfirewalls
& stop
이 & stop
줄은 이전 줄과 일치하는 메시지의 추가 처리를 중지합니다. 다음 명령을 사용하여 IP 주소를 테스트할 수 있습니다.
if $fromhost-ip startswith "192.168." then -?mynets
*.info,...
필터를 유지하려면 위의 내용을 수정할 수 있습니다. 예를 들면 다음과 같습니다.
if $fromhost startswith "sys" then {
*.info,mail.none,authpriv.none,cron.none -?mysystems
& stop
}
그러나 특정 항목을 기록하지 않으려면 실제로 네트워크 이쪽이 아닌 보낸 사람에서 이 필터링을 수행해야 합니다. 메시지를 보내는 것은 네트워크 대역폭을 낭비하는 것일 뿐이므로 이를 필터링하여 폐기합니다.
광범위하게 보기시스템 로그사용 중인 버전을 나타내는 설명서입니다.