Zipkin

install zipkin using docker

docker pull openzipkin/zipkin
docker run -d -p 9411:9411 openzipkin/zipkin
Open http://localhost:9411/zipkin/

Note:
To run pipkin without docker and log into elasticsearch
java -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://127.0.0.1:9200 -jar zipkin.jar

Apply zipkin in project

  • Add Zipkin Client as a dependency into project
  • Add Sleuth as a dependency into project
  • Add the following properties:
    spring.zipkin.baseUrl=http://95.177.160.100:9411 spring.sleuth.sampler.probability=1.0 spring.zipkin.enabled=true

Apply logstash for logging

  • add the following dependencies into pom file
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>
  • create logback-spring.xml in resources
  • add the following configuration for it
<configuration debug="true" scan="true" scanPeriod="30 seconds">
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>95.177.160.100:5044</destination>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <mdc/>
                <context/>
                <version/>
                <logLevel/>
                <loggerName/>
                <message/>
                <pattern>
                    <pattern>
                        {
                            "appName": "cs-activities"
                        }
                    </pattern>
                </pattern>
                <threadName/>
                <stackTrace/>
            </providers>
        </encoder>
    </appender>
   <!-- <root level="info" additivity="false">
        <appender-ref ref="SAVE-TO-FILE" />
    </root> -->
    <!-- ##Handling logs according to Profile used## -->
    <springProfile name="local">
        <logger name="sa.com.stc.cs.blinkplus" level="INFO" additivity="false">
            <appender-ref ref="CONSOLE"/>
        </logger>
    </springProfile>
    <springProfile name="dev,test">
        <root level="INFO" additivity="false"></root>
        <logger name="sa.com.stc.cs.blinkplus" level="INFO" additivity="false">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="logstash"/>
        </logger>
    </springProfile>
    <springProfile name="prod">
        <logger name="sa.com.stc.cs.blinkplus" level="INFO" additivity="false">
            <appender-ref ref="CONSOLE"/>
        	<appender-ref ref="logstash"/>
        </logger>
    </springProfile>
</configuration>