상자 밖에시스템 로그SystemEvents
모든 것이 Syslog 데이터베이스 내의 테이블 에 덤프됩니다 (제공된 기본 스키마를 사용하는 경우). 정규식을 사용하여 인바운드 메시지를 별도의 데이터베이스 테이블로 필터링하고 싶습니다.
나는 이것을 가지고 놀았지만 이것을 달성하는 가장 좋은 방법(또는 효율적인 방법)을 찾는 데 어려움을 겪고 있습니다.
내 rsyslog.conf에서:
$template wireless, \
"insert into RogueAPs \
(ReceivedAt, DeviceReportedTime, Facility, Priority, FromHost, Message) \
VALUES('%timegenerated%', '%timereported%', '%syslogfacility%', '%syslogpriority%', '%fromhost-ip%', '%msg%');", \
stdsql
if $msg contains 'subtype=wireless' then :ommysql:127.0.0.1,Syslog,dbusername,dbpassword;wireless
*.* :ommysql:127.0.0.1,Syslog,dbusername,dbpassword
이것이 나의 최근 시도인데 막혔습니다.
(RogueAPs 테이블은 rsyslog와 함께 제공되는 기본 SystemEvents 테이블의 복제본일 뿐입니다)
버전 정보:
shell# /usr/local/sbin/rsyslogd -v
rsyslogd 5.5.5, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 5 support: No
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
See http://www.rsyslog.com for more information.
답변1
한눈에이것튜토리얼인데 별 차이가 없네요.
하지만 보세요rsyslog의 템플릿 문서, 파라미터 설정에 따라 mysql 과 다른 것 같습니다 NO_BACKSLASH_ESCAPES
.
문서에서:
sql - format the string suitable for a SQL statement in MySQL format. This will
replace single quotes ("'") and the backslash character by their backslash-escaped
counterpart ("\'" and "\\") inside each field. Please note that in MySQL
configuration, the NO_BACKSLASH_ESCAPES mode must be turned off for this format to
work (this is the default).
stdsql - format the string suitable for a SQL statement that is to be sent to a
standards-compliant sql server. This will replace single quotes ("'") by two single
quotes ("''") inside each field. You must use stdsql together with MySQL if in MySQL
configuration the NO_BACKSLASH_ESCAPES is turned on.
답변2
불행하게도 rsyslog 문서는 일부 측면에서 매우 완전하지 않거나 이해하기 쉽지 않습니다. 나는 지난 몇 주 동안 rsyslog/MySQL/regex 관련 작업을 하면서 많은 시간을 보냈습니다.
정규식 일치를 시도하려는 로그 줄의 예, 해당 테이블의 스키마 등을 게시할 수 있습니까? 귀하가 게시한 내용이 유효한 것 같습니다. 무엇을 필터링하려고 하시나요? 기본 모드가 작동합니까?
그런데, 나는 당신이 RogueAPs라는 테이블을 사용하고 있다는 것을 눈치채지 않을 수 없었습니다. 어떤 공급업체를 사용하고 있는지는 모르지만 Meru Networks 및 BlueSocket 컨트롤러의 인증 로그 메시지에 대한 정규식 규칙이 있습니다.