spring cloud 분산 로그 링크 추적
저희 가 마이크로 서비스 간 에 호출 할 때 오류 가 발생 할 수 있 지만 어떤 서비스의 문제 인지 모 르 겠 습 니 다.이 럴 때 로그 링크 를 통 해 어떤 서비스 가 잘못 되 었 는 지 추적 할 수 있 습 니 다.
그것 은 또 하나의 장점 이 있다.우리 가 기업 에서 모든 사람 이 하나의 서 비 스 를 책임 질 수 있다.우 리 는 로 그 를 통 해 자신 이 맡 은 서비스 가 틀 리 지 않 는 다 는 것 을 검사 할 수 있다.다른 서 비 스 를 호출 할 때 오류 가 발생 하면 자신의 서비스 가 잘못 되 지 않 았 다 고 판단 하고 책임 이 자신의 것 이 아니 라 는 것 을 알 수 있다.
마이크로 서비스 간 의 호출 을 바탕 으로 모 르 는 파트너 가 있 으 면 먼저 제 블 로 그 를 참고 하 십시오spring cloud 에서 마이크로 서비스 간 호출 및 eureka 의 자기 보호 메커니즘
우선,procject-solr 와 procject-shopping-mall 에 설정 을 추가 합 니 다.
procject-solr 의 application.yml:
logging:
path: D:\work\logs\project-solr #
level:
com.gaofei: info #
procject-shopping-mall 의 application.yml:
logging:
path: D:\work\logs\project-shopping-mall #
level:
com.gaofei: info #
여러분 은 제 두 서비스 에 저 장 된 로그 저장 경로 가 다르다 는 것 을 알 수 있 습 니 다.이렇게 하면 구분 하기 쉽 습 니 다.procject-solr 의 constroller 에서:
@RestController// Constroller
public class SolrSearchConstroller {
public static Logger logger=LoggerFactory.getLogger(SolrSearchConstroller.class);
@RequestMapping("/SolrSearch")
public String SolrSearch(){
logger.info("Solr ");
return " Solr";
}
}
procject-shopping-mall 에 있 는 constroller:
@Controller
public class PageController {
public static Logger logger=LoggerFactory.getLogger(PageController.class);
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/toIndex")
public String toIndex(Model model){
logger.info(" ");
String msg=restTemplate.getForEntity("http://project-solr/SolrSearch",String.class).getBody();//project-solr
logger.info(" ");
model.addAttribute("msg",msg);
return "/index";
}
}
다음 실행:여기 서 logs 뒤의 디 렉 터 리 가 없 으 면 자동 으로 생 성 됩 니 다.
로그 파일 두 개 를 누 르 십시오:
여 기 는 내 가 세 번 을 새로 고 쳤 기 때문에 세 번 실 행 했 고 두 로그 에 도 세 번 대응 했다.
만약 그 중의 한 신문 이 틀 렸 다 면 곧 답 을 찾 을 수 있 고 어느 로그 에서 잘못 보 고 했 는 지 알 면 어떤 서비스 가 잘못 보 고 했 는 지 알 수 있다.
그러면 문제 가 생 겼 습 니 다.만약 에 우리 가 개발 중 에 하루 에 n 번 을 실행 할 수 있다 면 그 중에서 어떤 운행 이 잘못 되 었 을 때 우 리 는 n 번 호출 할 때 해당 하 는 서 비 스 를 찾 아야 합 니 다.그러면 어떻게 해 야 합 니까?우 리 는 일일이 대응 하여 찾 을 수 없습니다.
이 럴 때 우 리 는 링크 추적 을 할 수 있 습 니 다.대응 하 는 서버 build.gradle 에 Spring Cloud Sleuth 의존 만 하면 됩 니 다.
//
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-sleuth'
여기 서 저 는 두 개의 서비스 procject-solr 와 procject-shopping-mall 만 사 용 했 기 때문에 이 두 개의 서비스 build.gradle 에 추가 합 니 다.다음 실행,저 장 된 로 그 를 엽 니 다:
여기 서 n 번 새로 고침 을 실 행 했 습 니 다.그러면 어떻게 다른 서비스 에서 해당 하 는 호출 을 찾 을 수 있 습 니까?여러분,빨간색 블록 중의 링크 가 해당 하 는 서비스 인지 자세히 보 세 요.
제 가 아무 거나 가 져 가서 찾 아 볼 게 요.
검색 을 통 해 알 수 있 듯 이 해당 하 는 링크 를 찾 을 수 있다.그러면 매번 운행 할 때마다 하나의 링크 가 나타 나 고 해당 서비스의 조작 이 성공 적 으로 실행 되 었 는 지 찾 을 수 있다.그러면 이것 이 바로 링크 추적 이다.
다음 편 은 분포 식 서비스 통합 zipkin 의 링크 추적 을 쓸 것 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.