이전 항목: 기본 SQL 문 노멀라이저다음 항목: 문제 해결 및 팁


사용자 지정 SQL 문 노멀라이저

SQL 에이전트를 사용하면 사용자 지정 정규화를 수행하기 위해 확장을 추가할 수 있습니다. 이렇게 하려면 SQL 에이전트에서 구현된 정규화 체계가 들어 있는 DLL 파일을 생성하십시오.

SQL 문 노멀라이저 확장을 적용하려면

  1. 확장 DLL 파일을 만듭니다.

    SQL 노멀라이저 확장 파일의 진입점 클래스는 com.wily.introscope.agent.trace.ISqlNormalizer 인터페이스를 구현해야 합니다.

    DLL 확장 파일을 만들려면 SQL 노멀라이저 확장에 필요한 특정 키가 들어 있는 매니페스트 파일을 만들어야 합니다. 매니페스트 파일을 만드는 방법은 아래의 2단계에서 설명합니다. 그러나 확장이 작동하기 위해서는 다른 일반 키도 필요합니다. 이러한 키는 확장 파일을 구성하는 데 사용하는 유형입니다. 생성하는 확장 파일은 예를 들어 Backends(백엔드)|{backendName}|SQL|{sqlType}|{actualSQLStatement} 노드 아래의 메트릭과 같은 데이터베이스 SQL 문 텍스트 정규화와 관련됩니다. {actualSQLStatement}는 SQL 노멀라이저에 의해 정규화됩니다.

  2. 생성된 확장의 매니페스트에 다음 키를 추가합니다.
    com-wily-Extension-Plugins-List:testNormalizer1
    

    참고: 이 키의 값은 원하는 대로 지정할 수 있습니다. 이 예에서는 testNormalizer1이 사용됩니다. 이 키에 지정한 값을 다음 키에도 사용합니다.

    com-wily-Extension-Plugin-testNormalizer1-Type: sqlnormalizer
    com-wily-Extension-Plugin-testNormalizer1-Version: 1
    com-wily-Extension-Plugin-testNormalizer1-Name: normalizer1
    

    참고: 위의 키에는 normalizer1과 같이 고유한 노멀라이저 이름이 포함되어야 합니다.

    com-wily-Extension-Plugin-testNormalizer1-Entry-Point-Class: <Thefully-qualified classname of your implementation of ISQLNormalizer>
    
  3. 생성한 확장 파일을 <Agent_Home>\wily\ext 디렉터리에 둡니다.
  4. IntroscopeAgent.profile에서 다음 속성을 찾아 설정합니다.
    introscope.agent.sqlagent.normalizer.extension
    

    생성한 확장의 매니페스트 파일에서 이 속성을 com-wily-Extension-Plugin-{plugin}-Name으로 설정합니다. 이 속성 값은 대/소문자를 구분하지 않습니다. 예:

    introscope.agent.sqlagent.normalizer.extension=normalizer1
    

    참고: 이 속성은 핫 속성입니다. 확장 이름을 변경하면 확장이 다시 등록됩니다.

  5. 필요한 경우 IntroscopeAgent.profile에서 다음 속성을 추가하여 오류 스로틀 수를 설정할 수 있습니다.
    introscope.agent.sqlagent.normalizer.extension.errorCount
    

    오류 및 예외에 대한 자세한 내용은 예외를 참조하십시오.

    참고: 사용자 지정 노멀라이저 확장에서 발생한 오류가 오류 제한 수를 초과하면 확장이 사용할 수 없게 설정됩니다.

  6. IntroscopeAgent.profile을 저장합니다.
  7. 응용 프로그램을 다시 시작합니다.

예외

사용자가 만든 확장이 한 쿼리에 대해 예외를 throw하는 경우 기본 SQL 문 노멀라이저는 해당 쿼리에 대해 기본 정규화 체계를 사용합니다. 이 경우 로그에 확장에서 예외가 throw되었다는 오류 메시지가 기록되고 스택 추적 정보를 포함하는 디버그 메시지가 기록됩니다. 하지만 이와 같은 예외가 5번 throw되면 기본 SQL 문 노멀라이저가 사용자가 만든 확장이 사용되지 않도록 설정하고 노멀라이저가 변경될 때까지 이후의 쿼리에서 해당 확장을 사용하려는 시도를 중단시킵니다.

Null 또는 비어 있는 문자열

사용자가 만든 확장이 쿼리에 대해 null 문자열이나 비어 있는 문자열을 반환한 경우 StatementNormalizer는 해당 쿼리에 대해 기본 정규화 체계를 사용하고 확장이 null 값을 반환했음을 나타내는 정보 메시지를 로그에 기록합니다. 하지만 그와 같은 null 또는 비어 있는 문자열이 5번 반환된 후에는 StatementNormalizer가 메시지 기록을 중지하고 확장을 계속 사용하려고 시도합니다.