9.4. ds-logpipe.py

명명된 파이프 로그 스크립트는 디렉터리 서버 로그 파일(액세스, 오류 및 감사)을 명명된 파이프로 바꿀 수 있습니다. 해당 파이프는 특정 패턴과 일치하는 행 작성 또는 특정 이벤트 유형의 작성과 같은 출력으로 보내기 전에 로그 데이터를 처리할 수 있는 다른 스크립트에 연결할 수 있습니다.

명명된 파이프 스크립트를 사용하면 유연성이 향상됩니다.

  • 성능 저하 없이 지난 몇 백 개 또는 수천 개의 로그 메시지만 로그를 생성하기 위해 문제를 진단하기 위해 오류 로그 수준을 설정할 수 있습니다.
  • 메시지는 관심의 특정 이벤트만 유지하기 위해 필터링될 수 있습니다. 예를 들어, 명명된 파이프 스크립트는 액세스 로그에 실패한 BIND 시도만 기록할 수 있으며 기타 이벤트는 삭제됩니다.
  • 스크립트는 사용자 항목 추가 또는 삭제 또는 특정 오류가 발생하는 경우와 같은 이벤트가 발생할 때 알림을 보내는 데 사용할 수 있습니다.

구문 및 명령줄 옵션에 대한 자세한 내용은 ds-logpipe.py(1) 도움말 페이지를 참조하십시오.

예제

명명된 파이프 로깅에 대한 서버를 구성하는 절차는 7.5절. “로그 파일을 이름 지정된 파이프로 교체” 에서 확인할 수 있습니다.

명명된 파이프 로그 스크립트의 가장 기본적인 사용은 명명된 파이프만 가리킵니다.

예 9.12. 기본 이름 지정된 파이프 로그 스크립트

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe
참고

스크립트가 종료되거나 SIGTERM 또는 Ctrl+C를 통해 종료되므로 스크립트가 오류 로그의 마지막 1000줄을 표준 출력에 덤프합니다.

스크립트를 백그라운드에서 실행할 수 있으며 대화형으로 출력을 모니터링할 수 있습니다. 이 경우 명령을 kill -1% 1 을 사용하여 버퍼의 마지막 1000줄을 stdout에 덤프하도록 스크립트에 지시하고 백그라운드에서 계속 실행할 수 있습니다.

예 9.13. 배경에서 Named Pipe Log Script 실행

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe &

스크립트가 종료되거나 종료되거나 중단될 때 최근 1000행을 덤프하고 출력을 자동으로 파일로 저장하려면 스크립트 출력을 사용자 정의 파일로 리디렉션합니다.

예 9.14. Named Pipe Log Script에서 출력 저장

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe > /etc/dirsrv/myerrors.log 2>&1

이름이 지정된 파이프 스크립트는 Directory Server 프로세스에서 자동으로 시작하고 중지하도록 구성할 수 있습니다. 이 경우 스크립트가 실행될 때 스크립트의 PID를 쓸 서버의 PID 파일의 이름이 -s 인수로 필요합니다. 서버의 PID는 서버 PID 파일을 가리키거나 실제 프로세스 ID 번호를 제공하여 참조할 수 있습니다(서버 프로세스가 이미 실행 중인 경우).

예 9.15. Serve PID 지정

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe --serverpidfile /var/run/dirsrv/slapd-example.pid

명명된 파이프에서 로그 데이터를 읽고 여기에 대해 일부 작업을 수행하려면 플러그인을 호출할 수 있습니다.

예 9.16. 관련 플러그인으로 명명된 파이프 로그 스크립트

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe --plugin=/usr/share/dirsrv/data/logregex.py logregex.regex="warning"

예 9.16. “관련 플러그인으로 명명된 파이프 로그 스크립트” 에서 문자열 경고 가 포함된 로그 줄만 내부 버퍼에 저장되고 스크립트가 종료되면 출력됩니다.

스크립트 인수를 사용하여 플러그인을 전달하지 않으면 스크립트는 1000개의 로그 행(기본적으로)을 버퍼하고 종료 시 이를 출력합니다. 스크립트와 함께 제공되는 두 개의 플러그인이 있습니다.

  • logregex.py 는 지정된 정규 표현식과 일치하는 로그 행만 유지합니다. 플러그인 인수에는 사용할 문자열 또는 정규식을 지정하는 logregex.regex=패턴이 있습니다. 모두 AND 문으로 취급되는 logregex.regex 인수가 여러 개 있을 수 있습니다. 오류 로그 줄은 지정된 모든 인수와 일치해야 합니다. 일치하는 로그 행이 레코드(OR)가 될 수 있도록 하려면 문자열 또는 식 간에 파이프(|)와 함께 단일 logregex.regex 인수를 사용합니다. 정규식 및 해당 구문에 대한 자세한 내용은 pcre 또는 Python 정규식 설명서를 참조하십시오.
  • failedbinds.py 로그가 실패한 BIND 시도만 기록하므로 이 플러그인은 액세스 로그에만 사용됩니다. 이 옵션은 failedbinds.logfile=/path/to/access.log 를 사용합니다. 이는 실제 로그 메시지가 작성된 파일입니다. 이 플러그인은 많은 처리를 수행하는 복잡한 플러그인의 예입니다. 다른 유형의 액세스 로그 처리 수행에 적합한 위치입니다.