Elasticsearch의 데이터 분석은 zipkin 서비스의 api를 통해 쿼리할 수 없습니다.

장면 :

zipkin 링크 로그는 일반적으로 elasticsearch에서 링크 데이터를 생성하는데, es를 통해 데이터를 조회할 때 traceId 데이터가 존재하지만 zipkin api를 호출하여 현재 날짜 데이터 이전의 데이터를 조회할 수 없습니다.

 오늘의 데이터는 es에 존재합니다

 

 전날의 데이터도 es에 존재

 

위의 내용은 zipkin이 정상적으로 es에 데이터를 쓰는 것이 정상임을 보여줍니다.

질문 1: 왜 다음과 같이 zipkin 인터페이스를 호출하여 하루 전에 데이터를 쿼리할 수 없습니까?

여기서 gisq_request_id=fe88132e-1190-4e36-b0b2-286bceb39df1은 그날 이전의 ID입니다. 

 참고: lookback 매개변수는 zipkin에서 api에 의해 전달되는 매개변수입니다. 기본 쿼리는 현재 데이터 조회입니다. 기본값은 86400000입니다. 이전 데이터를 쿼리하려면 86400000*nday가 필요합니다. 여기서 내가 쿼리하는 것은 지난 10일 데이터

여기서 gisq_request_id=973fa4e7-91e2-4d30-82dd-ad6770144897은 오늘의 ID입니다.

 이것은 매우 이상합니다. 데이터가 elasticsearch에 존재하는데 zipkin의 api를 호출하여 쿼리할 수 없는 이유는 무엇입니까? ? ? ? ?

문제 분석:

   zipkin의 API 호출 예외 인덱스 정보

 

zipkin의 API 호출 일반 인덱스 정보

데이터 생성 구조 분석

비정상적인 상황에서 데이터에 의해 생성된 구조는 매핑 템플릿 매핑에서 이 필드가 제외되지 않기 때문에 _q 필드를 포함합니다.

 

 일반 데이터 지우기에서는 매핑 템플릿 매핑에서 이 필드가 제외되기 때문에 _source 아래에 _q 필드가 없습니다.

또한 zipkin/api/v2/traces?annotationQuery=gisq_request_id=fe88132e-1190-4e36-b0b2-286bceb39df1&lookback=864000000&limit=100 이 비정상적으로 호출되면 백엔드에서 널 포인터를 보고합니다.
프롬프트는 json 구문 분석이 실패했다는 것입니다.

문제 원인:

zipkin 인덱스 템플릿이 다른 사람에 의해 이동되었을 수 있습니다.

es 명령을 통해 인덱스 템플릿을 삭제하는 것일 수 있습니다.

그래픽 인터페이스를 통해 현재 zipkin 색인이 삭제되고 색인 데이터가 코드에서 다시 생성될 수도 있습니다.

장면 재현:

zipkin을 통해 인덱스를 생성한 후 그래픽 인터페이스를 통해 오늘의 인덱스 데이터를 삭제합니다.

삭제 후 재생성된 인덱스의 샤드는 0이 되며, 삭제 전 생성된 인덱스는 기본적으로 5개의 샤드를 가집니다.

추천

출처blog.csdn.net/qq_38423256/article/details/128900936