 |  |
|
extractor 수정하기
센서의 역할은 입력 값을 수집하는 것이고 extractor의 역할은 입력 받은 값을 개별적인 레코드로 분리하는 것이다(다음 순서에 해당하는 component, 즉 parser는 각각 레코드를 필드로 분해한다).
extractor 속성 설정하기
extractor를 편집하기 위해 Extractor를 클릭하자. 속성은 그림 6과 같다. extractor의 속성은 각 레코드를 위한 식별자와 이 식별자가 파서로 전달되는 레코드에 포함되어 있는지를 관리하는지 여부를 정의한다.
그림 6. extractor 속성
daemon.log 로그 파일 예제에서 로그의 각 줄은 별도의 이벤트다. 이 특징은 extractor가 구성을 쉽게 하도록 해준다(그림 6은 daemon.log를 위한 적절한 구성을 보여준다).
- daemon.log에 각 줄이 레코드기 때문에, Contains line breaks 체크 박스는 비어 있다. 하지만 MySQL이나 IBM DB2® 데이터베이스 로그 경우처럼, 입력이 여러 줄에 걸쳐 있다면, 이 체크 박스를 선택해야 한다.
- 여기서 Replace line breaks 체크 박스는 비어 있다. 그렇지만 로그 파일이 줄 바꿈 기호를 포함하고 있다면, 줄 바꿈 기호를 지우거나 파싱에 유용한 다른 기호로 변경하기 위해 체크 박스를 선택할 수 있다. 줄 바꿈 기호를 삭제하려면 그냥 체크 박스만을 선택하면 되며, 각 줄 바꿈 기호를 토큰으로 변경하려면 체크 박스를 선택하고, Line break symbol 필드에 식별자를 제공해야 한다. 이 식별자를 선택하기 위한 가장 좋은 방법은 로그 파일에 나오지 않는 기호를 선택하는 것이다.
-
Start pattern과 End pattern은 각 레코드의 시작과 종료를 나타내는 정규 표현식이다. 여기서는 각 줄이 레코드이며, 줄의 시작 또는
^(caret)은 레코드의 시작을 표시한다. 줄의 마지막 또는 $(dollar sign)으로 각 레코드의 마지막을 표시한다. ^와 $로 어떤 내용을 기록하지 않기 때문에 레코드 자체에 포함될 필요가 없다.
계속하기 전에 작업 내용을 저장하자.
MySQL 예제
비교를 위해, suboptimal 질의를 얻기 위해 사용되는 특별한 로그(log)인 MySQL의 slow 질의 로그로 또 다른 예제를 만들어보자. slow 질의 로그에서 각각의 입력은 최소한 세 줄을 차지한다(Listing 13).
Listing 13. MySQL의 slow 질의 로그의 일부
# Time: 030207 15:03:33
# Query_time: 13 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
SELECT l FROM un WHERE ip='209.xx.xxx.xx';
# Time: 030207 15:03:42
# Query_time: 17 Lock_time: 1 Rows_sent: 0 Rows_examined: 0
SELECT l FROM un WHERE ip='214.xx.xxx.xx';
# Time: 030207 15:03:43
# Query_time: 57 Lock_time: 0 Rows_sent: 2117 Rows_examined: 4234
SELECT c,cn,ct FROM cr,l,un WHERE ci=lt AND lf='MP' AND ui=cu;
|
slow 질의 로그를 위한 extractor는 그림 7처럼 될 것이다.
그림 7. MySQL slow 질의 로그를 위한 extractor 예제
그림 8은 extractor에 의해 성공적으로 처리된 세 개 레코드 중 두 번째를 보여준다.
그림 8. slow 질의 로그에서 추출된 레코드
더 테스트해 보기
daemon.log 어댑터를 다시 받아오면, 획득한 데이터를 확인하고, 레코드로 분리하기 위한 센서와 extractor 컴포넌트를 이제 테스트할 수 있다.
어댑터 재실행
Generic Log Adapter perspective의 하단에 있는 두 개의 패널을 보자. 그림 9와 비슷한 것을 볼 수 있을 것이다. 좌측에는 Extractor Result 패널이고, 오른쪽에 층이 나눠진 것은 Formatter Result 패널, Sensor Result 패널과 Problems 패널이다. Extractor Result 패널에는 어댑터를 제어할 수 있는 버튼이 여러 개가 있다. 그림 10은 버튼의 이름을 보여준다(또는 마우스를 천천히 각 버튼 위에 올려 놓으면 팁을 볼 수 있다).
그림 9. 컨텍스트 컴포넌트 화면 패널 영역
그림 10. 어댑터 제어 버튼
로그 파일 템플릿의 시작부터의 처리 과정을 다시 시작하기 위해 Rerun adapter를 클릭하자. 그리고 나서 첫 번째 이벤트를 처리하기 위해 Next event를 클릭하자.
- Sensor Result 패널에는 로그 파일의 첫 10~20번 행을 보여줄 것이다.
- Extractor Result 패널은 로그 파일의 첫 번째 줄인
Mar 2 06:27:35 db popa3d[7964]: Session from 71.65.224.25를 보여준다.
- Problems 패널은 비어 있을 것이다. 하지만 어댑터를 실행할 때마다 이 패널을 지속적으로 주의 깊게 관찰해야 한다. 필수적인 CBE 속성값을 빼 먹었다거나, 부정확한 정규 표현식을 지정했거나, 지원되지 않는 값을 사용한 경우, 이 패널에 그 내용이 지목될 것이다.
- Formatter Result 패널은 파서가 아직 정의되지 않았기 때문에 언급하기가 부적절하다. 하지만, 여기서는 현재 레코드를 위한 최초 XML CBE를 보여준다.
Listing 14. 현재 레코드를 위한 최초 XML CBE
<CommonBaseEvent
creationTime="replace with our message text"
globalInstanceId="A1DAABE6C7876D20E8E9E8C475042F1B"
version="1.0.1">
</CommonBaseEvent>
|
위에서 보는 것처럼 파서, 추가적인 요소와 속성을 정의했다면, 자동으로 이 XML에 추가된다.
extractor가 다음 레코드를 처리하기 위해서는 Next event를 다시 클릭하면 된다. 마지막 레코드로 가장 빠르게 넘어가기 위해서는(센서에서 지금까지 수집한 입력 중에서) Show last event를 클릭하면 된다.
|  |