0
syslog-ng를 실행 중이며 mysql에 로그 항목을 저장하고 있습니다. 모든 것이 괜찮습니다. 문제는 추가 분석을 위해 "msg"필드를 열로 구분해야한다는 것입니다. 나는이 문자열로 변환 할 수 있습니다 방법 :syslog 메시지를 mysql insert 문으로 변환하십시오.
'[997799.060000] ACCEPT IN=br0 OUT=eth1
MAC=00:24:aa:ab:f0:d2:80:e6:51:10:e3:86:08:00
SRC=192.168.1.40 DST=74.120.224.137 LEN=64
TOS=0x00 PREC=0x00 TTL=63 ID=48537 DF PROTO=TCP
SPT=51504 DPT=443 SEQ=2289341783 ACK=0 WINDOW=65535'
모든 것이 (MySQL의 테이블에서 '텍스트'필드에 저장) 한 줄에입니다, 난 그냥 가시성을위한 휴식 추가 ... 내가 좋아하는 무언가로 그 변환해야 :
INSERT INTO web_traffic(MAC, SRC, DST, PROTO, DPT)
VALUES('00:24:aa:ab:f0:d2:80:e6:51:10:e3:86:08:00',
'192.168.1.40', '74.120.224.137', 'TCP', '443');
더 쉽게 삽입 할 수있는 다른 삽입 형식도 좋습니다. 삽입 할 테이블에 트리거를 사용할 수 있도록 mysql 내부에서이 작업을 수행하려고합니다. 당신이
INSERT INTO web_traffic (mac, src, dst, proto, dpt)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(msg, 'MAC=', -1), ' ', 1) mac,
SUBSTRING_INDEX(SUBSTRING_INDEX(msg, 'SRC=', -1), ' ', 1) src,
SUBSTRING_INDEX(SUBSTRING_INDEX(msg, 'DST=', -1), ' ', 1) dst,
SUBSTRING_INDEX(SUBSTRING_INDEX(msg, 'PROTO=', -1), ' ', 1) proto,
SUBSTRING_INDEX(SUBSTRING_INDEX(msg, 'DPT=', -1), ' ', 1) dpt
FROM syslog
결과 같은 것을 할 수
입니다. 내가 SQLFiddle에 대해 몰랐기 때문에 필요한 것, 보너스를 얻었습니다! – jangeador
수락 ... 죄송합니다, 전 단지 upvoted 전에 :) – jangeador