특정 rsyslog 입력 일치에 대해 mysql 스토리지를 설정하는 방법은 무엇입니까?

특정 rsyslog 입력 일치에 대해 mysql 스토리지를 설정하는 방법은 무엇입니까?

나는 Heroku에서 rsyslog Linux(ubuntu) 서버로 다양한 로그를 배출하고 있으며 내 로그 기록 작업 측면에서 씹을 수 있는 것보다 조금 더 많은 로그를 작성하기 시작했습니다.

표준 syslog 파일이 제공하는 것보다 더 유연한 세부 정보와 더 유연한 액세스를 기반으로 시간을 드릴백할 수 있어야 합니다.

mysql에 로깅하는 것이 올바른 접근 방식일 수 있다고 생각합니다. 그러나 식별된 로그 항목을 기반으로 특정 로그 항목만 테이블로 가져오도록 설정하려면 어떻게 해야 합니까? 예를 들어 특정 Heroku 앱 인스턴스의 각 로그 항목을 식별하는 긴 16진수 문자열이 표시됩니다. 나는 그것들을 mysql 소켓으로 파이프하는 것과 모든 rsyslog 입력을 mysql로 ​​파이프할 수 있다고 가정합니다...

이와 같은 설정 과정을 안내해 줄 수 있는 리소스로 안내해 주시거나 도움이 될 수 있는 몇 가지 세부 정보를 제공해 주실 수 있나요? 저는 15년 이상의 Unix 경험을 갖고 있으므로 이전에 다양한 서버를 하나로 풀링하는 측면에서 syslog 데몬을 사용하여 엄청난 양의 작업을 수행한 적이 없었기 때문에 올바른 방향으로 약간의 조언이 필요할 뿐입니다.

또한 개발자가 이와 같은 로그 배열을 통해 드릴링을 보다 편리하게 만들 수 있는 로그 검토 도구에 관심이 있습니다.

답변1

나는 이것에 따라 뭔가가 작동해야한다고 생각합니다. 먼저, rsyslog conf 파일에 아래 줄이 있는지 확인하여 MySQL 출력 모듈이 로드되도록 하세요.

$ModLoad ommysql

그런 다음 원하는 항목을 다음과 같이 필터링하세요.

:msg, contains, "Heroku"     :ommysql:dbserver,dbname,dbuser,dbpass;heroku-template

다음으로 데이터에 대한 템플릿을 생성해야 rsyslog가 데이터베이스에 삽입할 내용과 방법을 알 수 있습니다. 다음은 날짜와 메시지만 기록하고 date및 두 개의 열만 있는 테이블을 제외하고 예제 템플릿입니다 message.

$template heroku-template, "INSERT INTO herokulog(date,message) VALUES ('%timestamp','%msg')\r\n", SQL

이와 같은 것이 작동해야합니다. 이것은 내 머리 꼭대기에 있었고 전혀 테스트되지 않았지만 아이디어를 얻을 수 있습니다. 훨씬 더 자세한 정보는 에서 확인할 수 있습니다.rsyslog 웹 사이트, 예를 들어사용 가능한 템플릿 매개변수 값당신이 관심을 가질 수도 있습니다.

답변2

syslog를 grep 명령으로 파이프하여 필요한 줄을 추출한 다음 awk 스크립트로 연결하여 올바른 형식의 csv 파일을 생성한 다음 생성된 csv 파일을 " LOAD DATA IN FILE "을 사용하여 mysql로 ​​가져옵니다.

phpsyslog-ng 프로젝트를 확인할 수도 있습니다.http://www.gdd.net/index.php/PHP-Syslog-NG

관련 정보