[jaeger] 1、安裝和部署

基本介紹

支持OpenTracingserver端有不少,咱們總要選一個。在這裏,選用jaegerjaeger的開發較爲活躍,支持的客戶端實現也較多。因爲採用了golang開發,發行包也比較簡潔。前端

jaeger的官網是 www.jaegertracing.io/java

特色

jaeger的開發語言是`golang`
 jaeger支持OpenTracing協議,同屬於CNCF基金會 
 jaeger支持各類各樣的客戶端,包括Go、Java、Node、Python、C++等
 jaeger支持udp協議傳輸,固然也支持http
複製代碼

jaeger可以解決如下問題

分佈式事務監控
性能分析與性能優化
調用鏈,找到根源問題
服務依賴分析(需大數據分析)
複製代碼

安裝需瞭解的技術棧:

OpenTracing
Golang
ElasticSearch
Kafka (可選)
複製代碼

安裝

下載

jaeger是二進制發行包,使用wget下載便可,這裏以linux版本爲例。linux

wget -c https://github.com/jaegertracing/jaeger/releases/download/v1.11.0/jaeger-1.11.0-linux-amd64.tar.gz
複製代碼

jaeger的二進制發行包包含五個二進制文件:git

jaeger-agent
jaeger-collector
jaeger-query
jaeger-standalone
jaeger-ingester	
複製代碼

若是沒有執行權限,可使用github

chmod a+x jaeger-*
複製代碼

增長執行權限。golang

選擇存儲

trace數據總要存在一個地方。jaeger支持ESCanssandra兩種後端DB。國內用ES的多一點,咱們就以ES爲例,來介紹其安裝方式。後端

ES請先自行安裝。性能優化

因爲上面四個命令都有不少參數,因此咱們能夠建立幾個腳本,來支持jaeger的啓動。bash

start-collector.shapp

export SPAN_STORAGE_TYPE=elasticsearch
nohup ./jaeger-collector  --es.server-urls http://10.66.177.152:9200/  --log-level=debug > collector.log  2>&1 &
複製代碼

start-agent.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup  ./jaeger-agent  --collector.host-port=10.66.177.152:14267 --discovery.min-peers=1 --log-level=debug > agent.log 2>&1 &
複製代碼

start-query.sh

export SPAN_STORAGE_TYPE=elasticsearch
nohup ./jaeger-query --span-storage.type=elasticsearch --es.server-urls=http://10.66.177.152:9200/  > query.log 2>&1 &
複製代碼

部署方式

jaeger有兩種部署方式。下面一一介紹。若是你的數據量特別多,使用kafka緩衝一下也是能夠的(因此就引入了另一個組件jaeger-ingester),很少作介紹。

簡易環境

這種方式通常用在dev環境或者其餘測試環境。只須要部署一個單一節點便可。咱們的app,須要手動填寫agent的地址,這個地址通常都是固定的。

這些環境的流量很小,一個agent是足夠的。

更加簡潔的部署方式,連agent都不須要,直接向collector發送數據便可。爲了方便測試,咱們使用此方式。

生產環境

上面這種部署方式,適合生產環境。agent安裝在每一臺業務機器上。Client端的目標agent只須要填寫localhost便可。

這種方式的好處是生產環境的配置很是的簡單。即便你的機器是混合部署的,也能正常收集trace信息。

調用關係圖

jaeger的調用關係圖是使用spark任務進行計算的。項目地址爲:

https://github.com/jaegertracing/spark-dependencies
複製代碼

做爲一個可選部分,只有在計算完畢後,才能在jaeger的後臺中進行展示。

端口整理

Agent

5775 UDP協議,接收兼容zipkin的協議數據
6831 UDP協議,接收兼容jaeger的兼容協議
6832 UDP協議,接收jaeger的二進制協議
5778 HTTP協議,數據量大不建議使用
複製代碼

它們之間的傳輸協議都是基於thrift封裝的。咱們默認使用5775做爲傳輸端口。

Collector

14267 tcp agent發送jaeger.thrift格式數據
14250 tcp agent發送proto格式數據(背後gRPC)
14268 http 直接接受客戶端數據
14269 http 健康檢查
複製代碼

Query

16686 http jaeger的前端,放給用戶的接口
16687 http 健康檢查
複製代碼

至此,咱們的jaeger就安裝完畢。

End

以上,就是咱們的環境準備。有了一個server接收數據,調用鏈的主要工做就在於客戶端開發。

接下來,將從一個簡單的java程序提及,來講明OpenTracing規範的使用方式。

相關文章
相關標籤/搜索