쿼리/응답을 기반으로 통계를 작성할 수 있도록 쿼리 로그를 구문 분석하려는 Dnsmasq 서버가 있습니다.
Dnsmasq는 두 가지 로깅 메커니즘을 제공합니다.
- 기본적으로 syslog에 기록됩니다.
- 경로가 주어지면 주어진 경로에 있는 파일에 기록됩니다.
dnsmasq가 syslog에 로그인하는 경우
dnsmasq가 전송한 각각의 새로운 라인에 대해 syslog를 "감시"하는 깔끔한 방법이 있습니까?
dnsmasq가 파일에 로깅하는 경우
fifo가 dnsmasq 로깅 에이전트에 적합한 솔루션인가요?
다음에 의해 생성된 fifo에는 몇 가지 문제가 있습니다 mkfifo
.
- dnsmasq의 죽음으로 인해 리더 프로세스가 중단되는 것을 원하지 않는다면 FD에 대한 쓰기를 유지하는 또 다른 가상 프로세스가 필요합니다. 이는 "자동화"에 어려움을 겪습니다.
- FIFO 로깅을 파괴하기 위해 리더 프로세스가 종료되는 것을 원하지 않으면 모든 것을 무시하는 또 다른 더미 리더 프로세스가 필요합니다.
- 우리는 항상 FIFO가 건강하고 사용 가능한 상태로 유지되도록 해야 합니다.
- 여전히 dnsmasq의 로그를 원한다면(아마 그럴 것입니다), 사용자 정의
/var/log/dnsmasq.log
파일을 작성하거나 dnsmasq로 위장하면서 어떻게든 syslog에 로그를 보내야 합니다.
요컨대
기본 dnsmasq 메커니즘을 손상시키거나 너무 많은 복잡성을 추가할 위험 없이 새로운 Dnsmasq 쿼리/응답에 대해 적절하게 알림을 받으려면 가장 좋은 접근 방식은 무엇입니까?
답변1
직접 롤아웃할 수도 있고, 아래와 같이 tail + awk를 결합하여 수행할 수도 있습니다.여기.
그렇지 않은 경우 syslog와 failure2ban을 함께 사용하면 문제를 해결할 수 있습니다. 복잡성이 많이 추가되지 않으며 두 구성 요소는 잘 알려져 있고 널리 사용 가능합니다.
Syslog는 파일에 대한 모든 리디렉션과 필요한 로그 파일 관리를 관리합니다. 단일 사용자가 웹을 탐색하더라도많은DNS 조회. syslog 데몬은 이를 문제 없이 관리할 수 있으며 최대 파일 크기, 특정 빈도로 파일을 업데이트하기 위한 파일 회전, 최대 로그 파일 수 등 직면하게 될 모든 실제 문제를 다룹니다.
Fail2ban은 일반적으로 로그 파일 내용을 기반으로 iptables/nftables에 IP를 추가하는 데 사용됩니다. 그러나 파일을 모니터링하고 트리거될 때 스크립트 작업을 수행하는 플랫폼으로는 잘 작동합니다. 정규식을 사용하여 로그 파일을 필터링하여 관심 있는 콘텐츠를 검색하고 정규식이 일치하면 작업을 실행합니다. 작성한 Python 스크립트를 호출하는 것을 포함하여 원하는 모든 작업을 수행하도록 할 수 있습니다. 또한 타이머가 경과한 후에 작업을 수행하는 기능도 있는데, 이는 사용 사례에 유용할 수도 있고 그렇지 않을 수도 있습니다.