kafka-streams 앱이 실행 중이고 Kafka가 갑자기 다운되면 앱이 "대기"모드로 들어가고 경고 로그를 보내는 소비자와 생산자 스레드는 연결할 수 없으며 Kafka가 돌아 오면 모든 것이 (이론적으로) 이동해야합니다. 정상으로 돌아갑니다. 이 상황에 대한 경고를 받으려고하는데이를 포착하고 로그 / 메트릭을 보낼 위치를 찾을 수 없습니다. 다음을 시도했습니다.
streams.setUncaughtExceptionHandler
그러나 이것은 여기에 해당되지 않는 예외에서만 발생합니다.ProductionExceptionHandler
하고 변경 default.production.exception.handler
합니다. 다시 말하지만 setUncaughtExceptionHandler
여기에 예외가 발생하지 않으므로 실제로 아무 일도 일어나지 않습니다.Kafka에는 브로커가 다운되었는지 듣고 확인할 수있는 자체 메트릭이 있습니다. 그러나 Kafka 브로커가 정상이고 내 kafka-streams 앱이 연결할 수없는 상황이있을 수 있습니다 (예 : 잘못된 인증 구성 또는 vpn / vpc 문제).
이러한 문제를 파악하고 기록 /보고하려면 어떻게해야합니까?
최신 정보
kafka를 사용할 수없는 경우 소비자 / 생산자 로그를 참조하십시오.
2020-08-24 21:41:32,055 [my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1] WARN o.apache.kafka.clients.NetworkClient - [] [Consumer clientId=my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1-consumer, groupId=my-kafka-streams-app] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
2020-08-24 21:41:32,186 [kafka-admin-client-thread | my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-admin] WARN o.apache.kafka.clients.NetworkClient - [] [AdminClient clientId=my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-admin] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
2020-08-24 21:41:32,250 [kafka-producer-network-thread | my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1-producer] WARN o.apache.kafka.clients.NetworkClient - [] [Producer clientId=my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1-producer] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
이 경우는 프로그래밍 방식으로 감지하기가 쉽지 않습니다. 문제는 클라이언트가 Kafka Streams에 자신의 상태를 실제로 노출하지 않기 때문에 Kafka Streams는 연결 해제에 대해 실제로 알지 못한다는 것입니다. DISCONNECT
상태 추가를 제안하는 KIP가 있지만 구현하기가 쉽지 않습니다 ( https://cwiki.apache.org/confluence/display/KAFKA/KIP-457%3A+Add+DISCONNECTED+status+to+Kafka+ 참조). 스트림 ).
언급 한 예외 핸들러는 예외가 발생하지 않기 때문에이 상황에 도움이되지 않습니다 (적어도 Kafka Streams 코드베이스 내에서는 아님).
시도 할 수있는 것은 소비자 지연 또는 일부 Kafka Streams 메트릭 (예 : 처리 속도)을 모니터링하는 것입니다. 충분한 프록시를 제공 할 수 있습니다. CF https://docs.confluent.io/current/streams/monitoring.html
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다