jq로 파이핑하여 kcat 소비자 출력을 아름답게 합니다.

2540 단어 kcatjqjsonapachekafka
나는 최근에 Apache Kafka 소스 커넥터(hi #KafkaSummit!)에서 몇 가지 데모 작업을 하고 있었고 결과 Apache Kafka 주제의 변경 스트림을 표시하려고 했습니다.

내 표준 접근 방식은 터미널을 세로로 나누고 왼쪽에는 명령을 실행할 수 있는 데이터베이스 연결이 있고 오른쪽에는 kcat 의 출력이 있는 것입니다. 이 설정은 간단한 메시지에 정말 잘 작동하지만 Debezium source connector 과 함께 사용하면 단일 메시지에 푸시된 필드의 양이 화면을 보는 실시간 청중이 거의 구문 분석할 수 없게 됩니다.



위의 이미지에서 kcat 출력이 구문 강조 표시가 없는 JSON 형식이므로 거의 읽을 수 없음을 알 수 있습니다.

구조에 jq



JSON 출력을 미화하고 구문 분석할 수 있는 도구를 오랫동안jq 알고 사용하고 있었습니다. 설치 후 그대로 사용하시면 됩니다

echo '{"name":"Francesco", "preferences":["pasta","pizza","espresso"]}' | jq '.'


놀라운 JSON이 멋지게 표시됩니다.

{
  "name": "Francesco",
  "preferences": [
    "pasta",
    "pizza",
    "espresso"
  ]
}


jq와 케이캣



이제 jq 소비자 출력에 어떻게 kcat를 적용할 수 있습니까? 다음과 같은 직접 파이프를 시도했습니다.

kcat -F kcat.config -C \
    -t my_pgsource.public.players | jq 


하지만 아쉽게도 실제 데이터가 표시되지 않고 출력 댓글만 받았습니다.

% Reading configuration from file kcat.config
% Reached end of topic my_pgsource.public.players [0] at offset 3


화면에 다음과 같이 표시됨



나는 오랫동안 애를 먹었지만, -ukcat 플래그(버퍼링되지 않은 출력)라는 올바른 해결책을 알려준 친구(명성)에게 연락했습니다. -u 플래그를 추가하면 이제 미화된 JSON을 볼 수 있습니다!

좋은 웹페이지 즐겨찾기