Cross-language distributed tracking System Jaeger usage Introduction and Case "PHP hprose Go"

Source: Internet
Author: User
Tags cassandra docker run
This is a creation in Article, where the information may have evolved or changed.

Text: Cross-language distributed tracking System Jaeger usage Introduction and Case "PHP hprose Go"

Objective

With the development of the company, business continues to increase, the module is constantly split, the system between the business calls become more complex, on the location of the line fault caused great difficulties. The entire call chain is opaque, as if the system was blindfolded with a piece of crape, and when the line encounters a fault, the entire technical department falls into a painful whirlpool. At this time distributed tracking system came into being, such as the opening of Crape, let the sun into the dark.

Distributed System call procedure

Opentracing protocol

Opentracing is a set of distributed tracking Protocol, platform, language-independent, unified interface, easy to develop access to different distributed tracking system.

Easy to understand opentracing

A complete opentracing call chain containing Trace + span + infinite Pole classification

    • Trace: The Trace object, a trace represents a service or process in the system execution process, such as: Test.com,redis,mysql and other execution process. A trace consists of multiple spans
    • Span: Records information about the trace during execution, such as query SQL, requested HTTP address, RPC call, start, end, interval, and so on.
    • Infinite Pole classification: The use of infinite-pole classification between services and services, through the HTTP header or request address to the lowest layer, so that the entire call chain together.

Related documents

    • Official documents
    • Opentracing Semantic Specification (Chinese version)
    • Opentracing Semantic Conventions
    • Opentracing document Chinese version (translation) Wu Yu

Distributed Tracking System Jaeger

Jaeger is a set of distributed tracking systems developed by Uber that has been used on a large scale in Uber. and joined CNCF Open source organization in 2017-9-13. The Jaeger can be used to visualize the entire chain of calls throughout a distributed system, thus finding and solving problems well:

Role

    • Information dissemination under distributed environment
    • Distributed transaction Monitoring
    • Show cross-process call chain
    • Performance optimization
    • Positioning problems

Characteristics

    • Using UDP to transmit data, compared to HTTP, the advantage is that you do not have to worry about the Jaeger service outage or network transmission problems affecting the normal business. The disadvantage is the loss of packets, affecting the entire call chain.
    • Data is serialized via thrift, compared to JSON
Interface Thrift/byte Json/byte Save
Interface 1 987 2396 About 1.5 times times
Interface 2 1212 2916 About 1.4 times times
Interface 3 12830 18893 Approx. 40%
Interface 4 17158 22465 Approx. 24%
Interface 5 11025 14282 Approx. 23%

It can be seen that thrift relative JSON has reduced a lot of space. The size of the data that we collect on our corporate interface is focused on 10~20k, so using thrift will be more advantageous.

    • Acquisition strategy

Jaeger Official offers a variety of acquisition strategies, users can choose to use as needed

    1. Constsampler, full-volume collection
    2. Probabilisticsampler, probabilistic acquisition, one of the default million parts
    3. Ratelimitingsampler, speed limit acquisition, can only collect a certain amount of data per second
    4. Remotelycontrolledsampler, a dynamic acquisition strategy, adjusts the acquisition strategy according to the current system's traffic volume
    • Client
    1. Go
    2. Java
    3. Node
    4. Python
    5. Php

The Go,java,node,python client is officially available, and other clients are still open, and the PHP client develops "welcome start" for the individual.

Deployment

Quick Deploy------All in one Docker image

All-in-one is an official uber-packaged image that can be deployed directly, but only for test environments and not for online use because it puts data into memory.

docker run -d -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p5775:5775/udp -p6831:6831/udp -p6832:6832/udp \  -p5778:5778 -p16686:16686 -p14268:14268 -p9411:9411 jaegertracing/all-in-one:latest

http://localhost:16686 can be used to view Jaeger backstage in the browser

Official examples of use, need go environment

go get github.com/uber/jaegercd $GOPATH/src/github.com/uber/jaegermake install_examplescd examples/hotrodgo run ./main.go all

http://localhost:8080 Browser Open View

Cassandra + Docker deployment, stand-alone mode

Docker RUN-ITD \
--name=cassandra-p9042:9042 \
-v/data/cassandra:/var/lib/cassandra \
Cassandra

Entering a container to create a table space

According to the official script organized a statement jaeger_tables, enter Cassandra, execute the statement can create the required table.

Keyspaces:jaeger_v1_dc

Run Jaeger-query

Docker RUN-ITD--network=bridge \
--name=jaeger-query \
-p16686:16686 \
Jaegertracing/jaeger-query \
/go/bin/query-linux \
--span-storage.type=cassandra \
--CASSANDRA.KEYSPACE=JAEGER_V1_DC \
--cassandra.servers={{Cassandra}}:9042 \
--query.static-files=/go/jaeger-ui/

Run Jaeger-collector

Docker RUN-ITD--network=bridge \
--name=jaeger-collector \
-p14267:14267 \
-p14268:14268 \
-p9411:9411 \
Jaegertracing/jaeger-collector \
/go/bin/collector-linux \
--span-storage.type=cassandra \
--CASSANDRA.KEYSPACE=JAEGER_V1_DC \
--cassandra.servers={{Cassandra}}:9042

Run Jaeger-agent

Docker run \
-ITD--network=bridge \
--name=jaeger-agent \
-P5775:5775/UDP \
-P6831:6831/UDP \
-P6832:6832/UDP \
-P5778:5778/TCP \
Jaegertracing/jaeger-agent \
/go/bin/agent-linux--collector.host-port={{Jaeger-collector}}:14267

Cross-language invocation cases

    • Php
    • Hprose
    • Go "Beego"

Beego

    • Install Beego
go get github.com/astaxie/beego
    • Download Trace_example
git clone git@github.com:jukylin/trace_example.gitcd  trace_examplebee run trace_example

Php

    • Install jaeger-php
    • Run hprose.php
cd vendor/jukylin/jaeger-php/examplephp Hprose.php

Trace Result View

Ps

    • Uber-distributed tracking technology re-engineering
    • Jaeger is still in development, and officials want support from the community.
    • Jaeger and Jaeger-php, operating in the company's test environment for 1 months, were released on line in 2017-10-18.
    • By choosing a good acquisition strategy, the log data can grow explosively.
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.