Openflow Connector for Kinesis 문제 해결

참고

이 커넥터에는 `Snowflake Connector 약관<https://www.snowflake.com/legal/snowflake-connector-terms/>`_이 적용됩니다.

이 항목에서는 |Kinesis|와 관련된 일반적인 문제를 해결하는 방법을 설명합니다.

일반적인 문제

메시지가 수집되지 않음

증상

Kinesis JSON Source 프로세스 그룹의 ConsumeKinesis 프로세서가 실행 중이지만 데이터가 생성되지 않고 오류 게시판이 내보내지지 않습니다.

원인

Openflow UI에 전파되지 않은 기본 AWS KCL 라이브러리에서 오류가 발생했을 수 있습니다.

해결책

:ref:`KCL 로그<label-kinesis-checking-kcl-logs>`를 확인하여 기본 오류를 식별합니다.

FlowFile 큐가 가득 참

증상

FlowFile 큐가 채워지고 커넥터가 데이터를 충분히 빠르게 처리하지 않습니다.

원인

다운스트림 프로세서는 수신 데이터 속도를 따라잡을 수 없습니다. 가장 느린 프로세서는 Streaming Destination 프로세스 그룹의 PutSnowpipeStreaming 유형 중 ``Put Data To Snowflake``일 가능성이 높습니다.

해결책

프로세서의 동시 작업 수를 조정합니다. 동시 작업을 통해 프로세서는 여러 스레드를 동시에 실행할 수 있으므로 대량 시나리오의 처리량이 향상됩니다.

프로세서의 동시 작업을 조정하려면 다음 작업을 수행하십시오.

  1. Openflow 캔버스에서 프로세서를 마우스 오른쪽 버튼으로 클릭합니다.

  2. 컨텍스트 메뉴에서 Configure 를 선택합니다.

  3. Scheduling 탭으로 이동합니다.

  4. Concurrent tasks 필드에 원하는 동시 작업 수를 입력합니다.

  5. Apply 를 선택하여 구성을 저장합니다.

특정 사용 사례에 따라 올바른 값이 다를 수 있지만, Snowflake에서 권장하는 작업 수 값은 다음과 같습니다.

  • 소규모 런타임의 경우 1~2

  • 중간 크기 런타임의 2~4

  • 대규모 런타임의 경우 6~8

작업 수를 변경한 후 프로세서를 관찰하여 작업 수를 늘리면 처리량이 향상되는지 확인합니다.

KCL 로그 확인

커넥터는 후드 아래의 `AWSKinesis Client Library(KCL) v3<https://docs.aws.amazon.com/streams/latest/dev/kcl.html>`_을 사용합니다. KCL의 오류가 항상 Openflow UI에 전파되는 것은 아니므로 문제 해결을 위해 KCL 로그를 확인해야 할 수 있습니다.

KCL로그는 :doc:`구성된 이벤트 테이블</user-guide/data-integration/openflow/monitor>`에 저장됩니다. 다음 쿼리로 검색할 수 있습니다.

SELECT
    timestamp,
    runtime_key,
    resource_attributes,
    log,
    log:formattedMessage,
FROM (
    SELECT
        timestamp,
        resource_attributes,
        resource_attributes:"openflow.dataplane.id" AS deployment_id,
        resource_attributes:"k8s.namespace.name" AS runtime_key,
        resource_attributes:"k8s.pod.name" AS runtime_pod,
        TRY_PARSE_JSON(value) AS log,
    FROM <event_table>
    WHERE TRUE
        AND timestamp > DATEADD(minute, -30, SYSDATE())
        AND record_type = 'LOG'
        AND runtime_key = 'runtime-<runtime_name>'
        AND resource_attributes:"k8s.container.name" ILIKE '%-server'
)
WHERE TRUE
    AND log:loggerName LIKE 'software.amazon.kinesis.%'
    AND log:level IN ('WARN', 'ERROR')
ORDER BY timestamp DESC
;
Copy

<event_table> with a configured event table name and ``<runtime_name>``을 런타임 이름으로 바꿉니다.

일반적인 KCL 오류

이 섹션에서는 KCL 로그에 표시될 수 있는 일반적인 오류 및 이를 해결하는 방법에 대해 설명합니다.

오류: 사용자에게 권한이 부여되지 않음

오류 메시지

User: **** is not authorized to perform: kinesis:RegisterStreamConsumer on
resource: arn:aws:kinesis:us-east-2:***:stream/*** because no identity-based
policy allows the kinesis:RegisterStreamConsumer action (Service: Kinesis,
Status Code: 400, Request ID: ***, Extended Request ID: ***)
(SDK Attempt Count: 1)
Copy

원인

구성된 AWS 사용자에게 Kinesis 스트림에 액세스하는 데 필요한 권한이 없습니다.

해결책

AWS 사용자가 KCL 컨슈머 애플리케이션<https://docs.aws.amazon.com/streams/latest/dev/kcl-iam-permissions.html>`_에 필요한 `IAM 권한에 지정된 권한으로 구성되어 있는지 확인합니다.

오류: UnknownHostException

오류 메시지

java.net.UnknownHostException: dynamodb.eu-west-1.amazonaws.com
Copy

원인

런타임에서 Snowflake 배포를 사용하는 경우 네트워크 규칙이 잘못 구성되었을 가능성이 큽니다.

해결책

필수 AWS 도메인이 네트워크 규칙의 허용 목록에 있는지 확인합니다. 필수 도메인 목록은 Openflow - Snowflake Deployment 설정: Openflow 커넥터에 허용되는 도메인 구성하기 섹션을 참조하세요.

오류: 샤드를 찾을 수 없음

오류 메시지

java.lang.IllegalStateException: No shards found when attempting to
validate complete hash range.
Copy

원인

이 오류는 Kinesis 스트림이 존재하지 않거나 AWS 리전이 잘못 지정된 경우에 발생합니다.

해결책

  1. KCL 로그에서 다음과 같은 메시지를 확인합니다.

    Got ResourceNotFoundException when fetching shard list for stream-name.
    Stream no longer exists.
    
    Copy
  2. 스트림 이름이 정확하며 스트림이 AWS에 존재하는지 확인합니다.

  3. AWS 리전이 커넥터 구성에 올바르게 지정되었는지 확인합니다.