UNIX / Linux 시스템의 로그 파일을 어떻게 분석합니까? 직접 또는 syslog를 통해 자체 로그 파일을 생성하는 수백 대의 서버를 실행합니다. 나는 이것을 모으고 중요한 사건을 골라내는 알맞은 해결책을 찾고 있습니다. 이 문제는 3 가지 구성 요소로 분류됩니다.
1) 메시지 전송
고전적인 방법은 syslog를 사용하여 원격 호스트에 메시지를 기록하는 것입니다. 이것은 syslog에 로그인하는 응용 프로그램에는 적합하지만 로컬 파일에 쓰는 응용 프로그램에는 유용하지 않습니다. 이를위한 솔루션에는 syslog를 사용하여 메시지를 전송하기 위해 프로그램에 연결된 FIFO에 응용 프로그램 로그를 기록하거나 로컬 파일을 grep하고 중앙 syslog 호스트로 출력을 보내는 항목을 작성하는 것이 포함될 수 있습니다. 그러나 메시지를 syslog로 가져 오기 위해 도구를 작성하는 데 어려움을 겪는다면 syslog 보다 더 많은 유연성과 신뢰성을 제공하는 Facebook의 Scribe 와 같은 것으로 대체하는 것이 더 좋을까요?
2) 메시지 집계
로그 항목은 호스트 및 서비스의 두 가지 유형 중 하나에 해당합니다. 호스트 별 메시지는 한 시스템에서 발생하는 메시지입니다. 디스크 장애 또는 의심스러운 로그인을 생각하십시오. 서비스 별 메시지는 서비스를 실행하는 대부분 또는 모든 호스트에서 발생합니다. 예를 들어, Apache가 SSI 오류를 발견 한시기를 알고 싶지만 100 대의 컴퓨터에서 동일한 오류를 원하지 않습니다. 모든 경우에 우리는 각 유형의 메시지 중 하나만보고 싶습니다. 동일한 디스크가 고장났다는 10 개의 메시지는 원하지 않으며 SSI가 손상 될 때마다 메시지를 원하지 않습니다.
이를 해결하는 한 가지 방법은 동일한 유형의 여러 메시지를 각 호스트에서 하나의 메시지로 집계하고 중앙 서버로 메시지를 보낸 다음 동일한 종류의 메시지를 하나의 전체 이벤트로 집계하는 것입니다. SER 은이 작업을 수행 할 수 있지만 사용하기가 어렵습니다. 며칠간의 헛소리를 한 후에도 나는 기본적인 집계 만 수행했으며 SER이 이벤트를 연관시키는 데 사용하는 논리를 지속적으로 찾아야했습니다. 강력하지만 까다로운 일입니다. 동료들이 가능한 한 짧은 시간 내에 픽업하여 사용할 수있는 것이 필요합니다. SER 규칙이 해당 요구 사항을 충족하지 않습니다.
3) 경고 생성
흥미로운 일이 발생하면 관리자에게 어떻게 알립니 까? 그룹받은 편지함을 우편으로 보내시겠습니까? 나지 오스에 주사?
그렇다면이 문제를 어떻게 해결하고 있습니까? 나는 접시에 답을 기대하지 않는다. 나는 세부 사항을 스스로 해결할 수는 있지만 일반적인 문제가 무엇인지에 대한 높은 수준의 토론은 좋을 것입니다. 현재 우리는 cron 작업, syslog의 혼란을 사용하고 있으며 누가 이벤트를 찾을 수 있는지 알고 있습니다. 이것은 확장 가능하거나 유지 관리 가능하거나 유연하지 않으므로 우리가해서는 안되는 많은 것들을 그리워합니다.
업데이트 : 우리는 이미 모니터링을 위해 Nagios를 사용하고 있습니다 . 이는 다운 다운 호스트 / 테스트 서비스 등에 적합하지만 로그 파일 스크랩에 덜 유용합니다. Nagios 용 로그 플러그인이 있다는 것을 알고 있지만 호스트 별 알림보다 확장 성이 뛰어나고 계층적인 것에 관심이 있습니다.