ஸ்பிரிங் பூட் 3.4 இல் தனிப்பயன் தலைப்பு தடயங்களைக் கையாளுதல்
ஸ்பிரிங் பூட் 3.4 இணையச் சேவையானது இரண்டு வாடிக்கையாளர்களுடன் தடையின்றி வேலை செய்வதைக் கற்பனை செய்து பாருங்கள். முதல் கிளையன்ட் ஸ்பிரிங் பூட் 3+ ஐப் பயன்படுத்துகிறது, இது ட்ரேஸ் ப்ராபகேஷனை ஒரு தென்றலாக மாற்றுகிறது. எந்த கூடுதல் முயற்சியும் இல்லாமல், நீங்கள் அழகான இறுதியில் இருந்து இறுதி வரை தொடர்ச்சியைப் பெறுவீர்கள் 🪄. பதிவுகள் மாயமானது போல் சுத்தமாகவும் இணைக்கப்பட்டதாகவும் தோன்றும்.
இருப்பினும், கிளையன்ட் இரண்டு செயல்பாட்டுக்கு வரும்போது விஷயங்கள் ஒரு திருப்பத்தை எடுக்கும். நிலையான ட்ரேசிங் தலைப்புகளுக்குப் பதிலாக, அவர்கள் `ot-custom-traceid` மற்றும் `ot-custom-spanid` போன்ற தனிப்பயன் தலைப்புகளை அனுப்புகிறார்கள். இந்த தனிப்பயன் தலைப்புகள் சரியான சுவடு தகவலைக் கொண்டிருக்கும் போது, ஸ்பிரிங் பூட் இந்த தடயங்களை பரப்புவதில் தோல்வியடைந்தது. விளைவு? கிளையன்ட் ட்ரேஸ்களை சர்வர் பக்க பதிவுகளுடன் இணைக்கும் திறனை இழக்கிறீர்கள்.
இது ஒரு கவனிப்பு இடைவெளியை உருவாக்குகிறது. கிளையண்ட் ஒருவருக்கு, சேவைகள் முழுவதும் கோரிக்கையின் முழுப் பாதையையும் நீங்கள் பார்க்கிறீர்கள். கிளையன்ட் இரண்டிற்கு, நீங்கள் சர்வர் பக்க பதிவுகளை மட்டுமே பார்க்கிறீர்கள், முக்கியமான கிளையன்ட் ட்ரேஸ் காணவில்லை. இது பாதி புதிரைப் பார்ப்பது போன்றது—ஏதோ காணவில்லை என்று உங்களுக்குத் தெரியும், ஆனால் துண்டுகளை ஒன்றாக இணைக்க முடியாது. 😓
இந்தக் கட்டுரையில், ஸ்பிரிங் க்ளவுட் ஸ்லூத்தை நம்பாமல் , ஸ்பிரிங் பூட் 3.4 சுற்றுச்சூழல் அமைப்புக்கு உண்மையாக இருந்து, இந்தச் சிக்கலை எவ்வாறு தீர்ப்பது என்பதை ஆராய்வோம். முடிவில், தனிப்பயன் தலைப்புகளில் இருந்து தடயங்களை எவ்வாறு பரப்புவது மற்றும் தொடர்வது என்பதை நீங்கள் அறிவீர்கள், இது உங்கள் கணினி முழுவதும் தடையற்ற கவனிப்பை உறுதி செய்யும்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
MDC.put | இந்தக் கட்டளையானது மேப் செய்யப்பட்ட கண்டறியும் சூழல் (MDC) க்கு விசை-மதிப்பு ஜோடிகளைச் சேர்க்கிறது, இது தனிப்பயன் டிரேஸ் ஐடிகளை பதிவுகளில் சேர்க்க அனுமதிக்கிறது. எடுத்துக்காட்டாக, MDC.put("traceId", "12345"). |
MDC.clear | கோரிக்கைகளுக்கு இடையே மாசுபடுவதைத் தவிர்க்க, கோரிக்கை செயலாக்கப்பட்ட பிறகு MDC இலிருந்து அனைத்து உள்ளீடுகளையும் அழிக்கிறது. எடுத்துக்காட்டாக, MDC.clear(). |
OncePerRequestFilter | ஒரு HTTP கோரிக்கைக்கு ஒருமுறை மட்டுமே வடிகட்டி லாஜிக் செயல்படுத்தப்படுவதை உறுதி செய்யும் ஸ்பிரிங் பூட் ஃபில்டர், தலைப்புகளைக் கண்டறிய ஏற்றது. எடுத்துக்காட்டு: பொது வகுப்பு CustomTraceFilter ஆனது OncePerRequestFilter ஐ நீட்டிக்கிறது. |
filterChain.doFilter | பிற வடிப்பான்கள் மூலம் கோரிக்கை தொடர்வதை உறுதிசெய்து, சங்கிலியின் அடுத்த வடிப்பானிற்குச் செல்லும். எடுத்துக்காட்டாக, filterChain.doFilter(கோரிக்கை, பதில்). |
RestTemplate.getInterceptors() | ரெஸ்ட் டெம்ப்ளேட் நிகழ்விற்கான இடைமறிப்பாளர்களின் பட்டியலை மீட்டெடுக்கிறது, தனிப்பயன் இடைமறிப்பாளர்களைச் சேர்க்க அனுமதிக்கிறது. எடுத்துக்காட்டு: restTemplate.getInterceptors().add(புதிய CustomInterceptor()). |
ClientHttpRequestInterceptor | வெளிச்செல்லும் HTTP கோரிக்கைகளை இடைமறித்து தனிப்பயன் தலைப்புகளைச் சேர்ப்பதற்கான இடைமுகம். எடுத்துக்காட்டாக, ட்ரேஸ் ஐடிகளைச் செருக ClientHttpRequestInterceptor ஐ செயல்படுத்துதல். |
HttpServletRequest.getHeader | உள்வரும் கோரிக்கையிலிருந்து குறிப்பிட்ட HTTP தலைப்பின் மதிப்பைப் பிரித்தெடுக்கிறது. எடுத்துக்காட்டு: request.getHeader("ot-custom-traceid"). |
FilterRegistrationBean | ஸ்பிரிங் பூட் பயன்பாட்டில் தனிப்பயன் வடிப்பான்களைப் பதிவு செய்கிறது. எடுத்துக்காட்டாக: registrationBean.setFilter(புதிய CustomTraceFilter()). |
MockMvc.perform | ஸ்பிரிங் பூட் பயன்பாடுகளுக்கான யூனிட் சோதனைகளில் HTTP கோரிக்கைகளை உருவகப்படுத்துகிறது. எடுத்துக்காட்டு: mockMvc.perform(get("/test-endpoint").header("ot-custom-traceid", "12345")). |
ClientHttpRequestExecution.execute | வழங்கப்பட்ட கோரிக்கை அமைப்பு மற்றும் தலைப்புகளுடன் இடைமறித்த HTTP கோரிக்கையை செயல்படுத்துகிறது. உதாரணம்: execution.execute(கோரிக்கை, உடல்). |
ஸ்பிரிங் பூட்டில் தனிப்பயன் தலைப்பு டிரேஸ் பரவல்
இந்த சிக்கலை தீர்க்கும் முக்கிய கூறுகளில் ஒன்று CustomTraceFilter ஆகும். இந்த வடிகட்டி நீட்டிக்கிறது OnePerRequestFilter வகுப்பு, ஒவ்வொரு HTTP கோரிக்கைக்கும் ஒருமுறை மட்டுமே ட்ரேஸ் ஹெடர் லாஜிக் இயங்குவதை உறுதி செய்கிறது. உலகளாவிய அளவில் கோரிக்கைகள் அல்லது பதில்களை மாற்றியமைக்கும் போது ஸ்பிரிங் பூட்டில் உள்ள வடிப்பான்கள் நம்பமுடியாத அளவிற்கு பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டாக, கிளையன்ட் டிரேசிங் தகவலை அனுப்பினால் ot-custom-traceid அல்லது ஒட்-கஸ்டம்-ஸ்பானிட் தனிப்பயன் தலைப்புகளில், இந்த வடிப்பான் கோரிக்கையை இடைமறித்து, இந்த தலைப்புகளைப் பிரித்தெடுத்து, அவற்றை மேப் செய்யப்பட்ட கண்டறியும் சூழலில் (MDC) பரப்புகிறது. MDC இல் ட்ரேஸ் ஐடிகளைச் சேர்ப்பதன் மூலம், கோரிக்கை செயலாக்கத்தின் போது உருவாக்கப்பட்ட பதிவுகளில் இந்த அடையாளங்காட்டிகள் தெரியும் என்பதை உறுதிசெய்கிறோம்.
SLF4J மற்றும் Logback போன்ற பதிவு கட்டமைப்புகளில் MDC ஒரு முக்கியமான பகுதியாகும். தனிப்பயன் டிரேஸ் ஐடிகள் போன்ற தற்போதைய தொடருக்கான சூழல் சார்ந்த தகவல்களைச் சேமிக்க இது அனுமதிக்கிறது. போன்ற கட்டளைகளைப் பயன்படுத்துதல் MDC.புட் மற்றும் MDC.clear, லாக்கிங் சிஸ்டம் ட்ரேஸ் விவரங்களை உள்ளடக்கியது மற்றும் ஒரே நேரத்தில் கோரிக்கைகளுக்கு இடையே மாசுபடுவதைத் தவிர்க்கிறது. எடுத்துக்காட்டாக, Client Two ஆனது `ot-custom-traceid' ஐ `8f7ebd8a73f9a8f50e6a00a87a20952a` என அனுப்பினால், இந்த ஐடி MDC இல் சேமிக்கப்பட்டு, அனைத்து கீழ்நிலைப் பதிவுகளிலும் சேர்க்கப்பட்டு, நிலையான தடயப் பாதையை உருவாக்கும்.
மறுபுறம், வெளிச்செல்லும் HTTP கோரிக்கைகளுக்கு, RestTemplate இன்டர்செப்டர் இன்றியமையாத பங்கு வகிக்கிறது. செயல்படுத்துவதன் மூலம் ClientHttpRequestInterceptor, வெளிச்செல்லும் கோரிக்கைகளுக்கு அதே ட்ரேஸ் ஹெடர்களை (`ot-custom-traceid` மற்றும் `ot-custom-spanid`) இணைக்கலாம். பயன்பாடு மற்ற மைக்ரோ சர்வீஸ்களை அழைக்கும் போது, சுவடு தொடர்ச்சி பராமரிக்கப்படுவதை இது உறுதி செய்கிறது. உதாரணமாக, சேவையகம் டிரேஸ் ஐடி `8f7ebd8a73f9a8f50e6a00a87a20952a` உடன் கோரிக்கையைச் செயல்படுத்தும் போது, அது இந்த ஐடியை வெளிச்செல்லும் தலைப்புகளுடன் இணைக்கிறது, எனவே கீழ்நிலை சேவைகள் தடயத்தை தடையின்றி அடையாளம் கண்டு பரப்ப முடியும்.
இறுதியாக, MockMvc உடன் எழுதப்பட்ட அலகு சோதனைகள் HTTP கோரிக்கைகளை உருவகப்படுத்துதல் மற்றும் தலைப்பு பரவலைச் சரிபார்ப்பதன் மூலம் முழு அமைப்பையும் சரிபார்க்கிறது. நிஜ-உலகப் பயன்பாடுகளில், ட்ரேஸ் ஹெடர்கள் சரியாகக் கையாளப்படுவதை உறுதிசெய்ய சோதனை முக்கியமானது. எடுத்துக்காட்டாக, தனிப்பயன் தலைப்புகளுடன் GET கோரிக்கையை அனுப்புவதன் மூலமும், பதில் அல்லது பதிவுகளை ஆய்வு செய்வதன் மூலமும், வடிகட்டி மற்றும் இடைமறிப்பான் எதிர்பார்த்தபடி செயல்படுகின்றன என்பதை உறுதிப்படுத்தலாம். இந்த விரிவான அணுகுமுறை, ஸ்பிரிங் கிளவுட் ஸ்லூத் போன்ற பாரம்பரிய சார்புகளை நம்பாமல் சவாலை தீர்க்கிறது. இறுதியில், வடிப்பான்கள், இடைமறிப்பான்கள் மற்றும் MDC ஆகியவற்றின் கலவையானது வாடிக்கையாளர்கள் தனிப்பயன் தலைப்புகளைப் பயன்படுத்தும்போது கூட டிரேஸ் தொடர்ச்சியை உறுதிசெய்கிறது. 🌟
ஸ்பிரிங் பூட் 3.4 இல் தனிப்பயன் டிரேசிங் தலைப்புகளை பரப்புதல்
ஸ்பிரிங் பூட் 3.4 மற்றும் மைக்ரோமீட்டருடன் ஜாவாவைப் பயன்படுத்தி பின்தளச் செயலாக்கம்
// Solution 1: Extract and Propagate Custom Trace Headers Manually
// Import necessary Spring Boot and Micrometer libraries
import org.slf4j.MDC;
import org.springframework.http.HttpHeaders;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CustomTraceFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws IOException {
String traceId = request.getHeader("ot-custom-traceid");
String spanId = request.getHeader("ot-custom-spanid");
try {
if (traceId != null) {
MDC.put("traceId", traceId); // Add traceId to Mapped Diagnostic Context
}
if (spanId != null) {
MDC.put("spanId", spanId);
}
filterChain.doFilter(request, response); // Continue request processing
} finally {
MDC.clear(); // Ensure MDC is cleared after processing
}
}
}
// Register the filter in your configuration class
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<CustomTraceFilter> traceFilter() {
FilterRegistrationBean<CustomTraceFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new CustomTraceFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
தனிப்பயன் டிரேஸ் ஹெடர் பரவலுக்கான அலகு சோதனை
ட்ரேஸ் ஹெடர் பரவலைச் சரிபார்க்க JUnit மற்றும் MockMvc உடன் சோதனை
// Import necessary libraries
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest
public class CustomTraceFilterTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testCustomTraceHeaders() throws Exception {
mockMvc.perform(get("/test-endpoint")
.header("ot-custom-traceid", "12345")
.header("ot-custom-spanid", "67890"))
.andExpect(status().isOk());
}
}
RestTemplate ஐப் பயன்படுத்தி HTTP கோரிக்கைகளில் தனிப்பயன் தலைப்புகளைப் பரப்புதல்
வெளிச்செல்லும் கோரிக்கைகளில் தனிப்பயன் தலைப்புகளைச் சேர்க்க RestTemplate இன்டர்செப்டர்களைப் பயன்படுத்துதல்
// Import necessary libraries
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
public class CustomHeaderInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
HttpHeaders headers = request.getHeaders();
headers.add("ot-custom-traceid", "12345");
headers.add("ot-custom-spanid", "67890");
return execution.execute(request, body);
}
}
// Register the interceptor with RestTemplate
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getInterceptors().add(new CustomHeaderInterceptor());
return restTemplate;
}
}
ஸ்பிரிங் பூட் 3.4 இல் OpenTelemetry மூலம் தனிப்பயன் தலைப்புச் சுவடுகளைக் கையாளுதல்
ஸ்பிரிங் பூட் 3.4 உடன் பணிபுரியும் போது, தனிப்பயன் தலைப்புகளில் இருந்து தடயங்களை பரப்புவதற்கான மற்றொரு சக்திவாய்ந்த அணுகுமுறை ஒருங்கிணைப்பு ஆகும் OpenTelemetry. OpenTelemetry, ஒரு திறந்த மூல கண்காணிப்பு கட்டமைப்பானது, கருவி, சேகரிக்க மற்றும் தடயங்களை தடையின்றி ஏற்றுமதி செய்ய உதவுகிறது. இது போன்ற தனிப்பயன் தலைப்புகள் உட்பட, சுவடு சூழலைப் பிரித்தெடுக்க மற்றும் உட்செலுத்துவதற்கான வழிமுறைகளை வழங்குகிறது ot-custom-traceid மற்றும் ஒட்-கஸ்டம்-ஸ்பானிட், உங்கள் விண்ணப்பத்தில். OpenTelemetry இன் TextMapPropagatorஐ மேம்படுத்துவதன் மூலம், தரமற்ற வாடிக்கையாளர்களுக்கும் உங்கள் கவனிப்பு அமைப்புக்கும் இடையே உள்ள இடைவெளியை நீங்கள் குறைக்கலாம்.
ஸ்பிரிங் பூட் 3.4 இல் OpenTelemetry ஐப் பயன்படுத்த, தனிப்பயன் தலைப்புகளில் இருந்து ட்ரேசிங் தகவலைப் பிரித்தெடுத்து, தற்போதைய சுவடு சூழலுடன் இணைக்க தனிப்பயன் பிரச்சாரம் செயல்படுத்தப்படும். எடுத்துக்காட்டாக, உங்கள் சேவையகம் கிளையண்ட் டூவிடமிருந்து உள்வரும் கோரிக்கையைப் பெறும்போது, OpenTelemetry தனிப்பயன் தலைப்புகளைப் பாகுபடுத்தி அசல் சுவடு சூழலை மறுகட்டமைக்க முடியும். இது கீழ்நிலை சேவைகள் ஒரே ட்ரேஸ் ஐடிகளைப் பார்ப்பதை உறுதிசெய்கிறது. Spring Cloud Sleuth போன்ற பழைய தீர்வுகளைப் போலல்லாமல், OpenTelemetry இலகுரக மற்றும் நவீன கவனிப்புத் தரங்களுடன் சீரமைக்கிறது.
மைக்ரோமீட்டர் உடன் OpenTelemetry இன் ப்ராபகேட்டரை இணைப்பதன் மூலம், உங்கள் அளவீடுகளை வளப்படுத்தலாம் மற்றும் ட்ரேஸ் தகவலுடன் பதிவு செய்யலாம். உங்கள் கவனிப்பு கருவியில் வாடிக்கையாளர் ஒன்று மற்றும் கிளையண்ட் டூ ஆகிய இரண்டிலிருந்தும் வரும் கோரிக்கைகளுக்கான தடயங்கள் தடையின்றி இருப்பதை கற்பனை செய்து பாருங்கள். OpenTelemetry தானாகவே Prometheus, Zipkin அல்லது Jaeger உடனான ஒருங்கிணைப்பை ஆதரிக்கிறது, இது டிரேஸ் காட்சிப்படுத்தலை மையப்படுத்த உங்களை அனுமதிக்கிறது. இந்த அணுகுமுறை தனிப்பயன் தலைப்புகள் சம்பந்தப்பட்டிருந்தாலும், எந்த சுவடு தரவுகளும் இழக்கப்படுவதில்லை, மேலும் பிழைத்திருத்தம் கணிசமாக எளிதாகிறது. 🚀
ஸ்பிரிங் பூட்டில் தனிப்பயன் தடயங்களைப் பரப்புவது பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- ஸ்பிரிங் பூட்டில் தனிப்பயன் டிரேஸ் தலைப்புகளை கைமுறையாக பிரித்தெடுப்பது எப்படி?
- நீங்கள் request.getHeader("தனிப்பயன்-தலைப்பு")ஐப் பயன்படுத்தி ஒரு குறிப்பிட்ட தலைப்பை கைமுறையாகப் பெறலாம் மற்றும் MDC.put("traceId", value) ஐப் பயன்படுத்தி MDC இல் சேர்க்கலாம்.
- தனிப்பயன் டிரேஸ் பிரச்சாரத்திற்கு OpenTelemetry ஐப் பயன்படுத்துவதன் நன்மை என்ன?
- OpenTelemetry மைக்ரோ சர்வீஸ் முழுவதும் தனிப்பயன் தலைப்புகள் உட்பட தடயங்களைப் பரப்புவதற்கான நவீன, விற்பனையாளர்-நடுநிலை அணுகுமுறையை வழங்குகிறது.
- ஸ்பிரிங் பூட்டில் ரெஸ்ட் டெம்ப்ளேட் மூலம் தனிப்பயன் தலைப்புகளைப் பரப்ப முடியுமா?
- ஆம், ClientHttpRequestInterceptorஐ செயல்படுத்துவதன் மூலம், வெளிச்செல்லும் கோரிக்கைகளுக்கு traceid மற்றும் spanid போன்ற தனிப்பயன் தலைப்புகளை இணைக்கலாம்.
- உலக அளவில் தலைப்புகளைப் பிடிக்க வடிப்பானை எவ்வாறு பதிவு செய்வது?
- OncePerRequestFilter நீட்டிக்கும் வடிப்பானை உருவாக்கி, எல்லா முடிவுப்புள்ளிகளுக்கும் தலைப்புகளைப் பிடிக்க FilterRegistrationBean ஐப் பயன்படுத்தி பதிவு செய்யலாம்.
- ஸ்பிரிங் பூட்டில் இருந்து தடயங்களைக் காட்சிப்படுத்த நான் என்ன கருவிகளைப் பயன்படுத்தலாம்?
- Zipkin, Jaeger, மற்றும் Prometheus போன்ற கருவிகள் ஸ்பிரிங் பூட் மற்றும் ஓபன் டெலிமெட்ரியுடன் ஒருங்கிணைத்து எண்ட்-டு-எண்ட் ட்ரேஸ்களைக் காட்சிப்படுத்தலாம்.
தடையற்ற சுவடு தொடர்ச்சியை உறுதி செய்தல்
நவீன அமைப்புகளில், தனிப்பயன் சுவடு தலைப்புகளைக் கையாள்வது நம்பகமான கவனிப்புக்கு முக்கியமானதாகும். வடிப்பான்கள் மற்றும் இடைமறிப்பான்களைப் பயன்படுத்துவதன் மூலம், கிளையன்ட் வழங்கிய டிரேசிங் தகவலை நீங்கள் கைப்பற்றலாம் மற்றும் உங்கள் சேவைகள் முழுவதும் அதைச் சரியாகப் பரப்பலாம். இது துண்டு துண்டான பதிவுகள் மற்றும் காணாமல் போன தடயங்களைத் தவிர்க்கிறது. 🔍
ஸ்பிரிங் பூட் 3.4, மைக்ரோமீட்டர் அல்லது ஓபன் டெலிமெட்ரியுடன் இணைந்து, Spring Cloud Sleuth போன்ற பழைய கருவிகளை நம்பாமல் வலுவான தீர்வுகளை அனுமதிக்கிறது. Client One இன் நிலையான தலைப்புகள் அல்லது Client Two இன் தனிப்பயன் தலைப்புகளை நீங்கள் கையாள்வது எதுவாக இருந்தாலும், இந்த நுட்பங்களைச் செயல்படுத்துவது சுவடு இடைவெளிகளைத் திறமையாகக் குறைக்கிறது. 🚀
ஆதாரங்கள் மற்றும் குறிப்புகள்
- ஸ்பிரிங் பூட் அதிகாரப்பூர்வ ஆவணம்: டிராசிங் சூழல்களின் பரப்புதல். ஸ்பிரிங் பூட் ஆவணப்படுத்தல்
- ஜாவா டெவலப்பர்களுக்கான ஓபன் டெலிமெட்ரி: டிரேஸ் பிராபகேஷனுக்கான வழிகாட்டி. ஓபன் டெலிமெட்ரி ஜாவா
- மைக்ரோமீட்டர் கண்காணிப்பு ஆவணப்படுத்தல்: தனிப்பயன் டிரேஸ் தலைப்புகளை ஒருங்கிணைத்தல். மைக்ரோமீட்டர் கவனிப்பு
- SLF4J லாக்கிங் API: மேப் செய்யப்பட்ட கண்டறிதல் சூழல் (MDC) கேஸ்களைப் பயன்படுத்தவும். SLF4J கையேடு