Giter Site home page Giter Site logo

bhattchaitanya / java-elasticsearch-client Goto Github PK

View Code? Open in Web Editor NEW

This project forked from opentracing-contrib/java-elasticsearch-client

0.0 1.0 0.0 160 KB

OpenTracing Instrumentation for Elasticsearch Client

License: Apache License 2.0

Java 92.89% Shell 7.11%

java-elasticsearch-client's Introduction

Build Status Coverage Status Released Version Apache-2.0 license

OpenTracing Elasticsearch Client Instrumentation

OpenTracing instrumentation for Elasticsearch clients.

Installation

Maven

pom.xml

Elasticsearch 5

<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-elasticsearch5-client</artifactId>
    <version>VERSION</version>
</dependency>

Elasticsearch 6

<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-elasticsearch6-client</artifactId>
    <version>VERSION</version>
</dependency>

Elasticsearch 7

<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-elasticsearch7-client</artifactId>
    <version>VERSION</version>
</dependency>

Usage

// Instantiate tracer
Tracer tracer = ...

// Optionally register tracer with GlobalTracer
GlobalTracer.register(tracer);

// Build TransportClient with TracingPreBuiltTransportClient
TransportClient transportClient = new TracingPreBuiltTransportClient(settings)
                .addTransportAddress(...));

// Build RestClient adding TracingHttpClientConfigCallback
 RestClient restClient = RestClient.builder(
                new HttpHost(...))
                .setHttpClientConfigCallback(new TracingHttpClientConfigCallback(tracer))
                .build();

Custom Span Names with the TracingHttpClientConfigCallback

This driver includes support for customizing the spans created using the TracingHttpClientConfigCallback. You can use the predefined ones listed further below, or write your own in the form of a Function object.

// Create a Function for the TracingHttpClientConfigCallback that operates on
// the HttpRequest and returns a String that will be used as the Span name.
Function<HttpRequest, String> customSpanNameProvider =
  (request) -> request.getRequestLine().getMethod().toLowerCase();

// Build RestClient adding TracingHttpClientConfigCallback
 RestClient restClient = RestClient.builder(
                new HttpHost(...))
                .setHttpClientConfigCallback(new TracingHttpClientConfigCallback(tracer, customSpanNameProvider))
                .build();
 
 // Spans created by the restClient will now have the request's lowercase method name as the span name.
 // "POST" -> "post"

Predefined Span Name Providers

The following Functions are already included in the ClientSpanNameProvider class, with REQUEST_METHOD_NAME being the default should no other span name provider be provided.

  • REQUEST_METHOD_NAME: Returns the HTTP method of the request.
    • GET /twitter/tweet/1?routing=user1 -> "GET"
  • PREFIXED_REQUEST_METHOD_NAME(String prefix): Returns a String concatenation of prefix and the HTTP method of the request.
    • GET /twitter/tweet/1?routing=user1 -> prefix + "GET"
  • REQUEST_TARGET_NAME: Returns the Elasticsearch target of the request, i.e. the index and resource it's operating on. IDs and other numbers not part of names will be replaced with a "?" to avoid overly granular names.
    • GET /twitter/tweet/1?routing=user1 -> "/twitter/tweet/?"
  • PREFIXED_REQUEST_TARGET_NAME(String prefix): Returns a String concatenation of prefix and the Elasticsearch target of the request. IDs and other numbers not part of names will be replaced with a "?" to avoid overly granular names.
    • GET /twitter/tweet/1?routing=user1 -> prefix + "/twitter/tweet/?"
  • REQUEST_METHOD_TARGET_NAME: Returns a String concatenation of the HTTP method of the request and the Elasticsearch target of the request. IDs and other numbers not part of names will be replaced with a "?" to avoid overly granular names.
    • GET /twitter/tweet/1?routing=user1 -> "GET /twitter/tweet/?"
  • PREFIXED_REQUEST_METHOD_TARGET_NAME(String prefix): Returns a String concatenation of prefix, the HTTP method of the request, and the Elasticsearch target of the request. IDs and other numbers not part of names will be replaced with a "?" to avoid overly granular names.
    • GET /twitter/tweet/1?routing=user1 -> prefix + "GET /twitter/tweet/?"

License

Apache 2.0 License.

java-elasticsearch-client's People

Contributors

bhs avatar jordanjlopez avatar malafeev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.