Linux下從零開始部署和使用Jaeger

原文鏈接:https://imscc.io/posts/trace/install_jaeger_on_linux/
原文作者: 聰少

最近在折騰Jaeger,Jaeger官網都是介紹如何通過Docker部署,二進制部署文檔基本沒有(已諮詢過作者,作者說沒文檔!你參考Docker自己部署好了!!!),所以打算寫一篇Linux部署。

Jaeger

Jaeger是Uber推出的一款調用鏈追蹤系統,類似於Zipkin和Dapper,爲微服務調用追蹤而生。 其主要用於多個服務調用過程追蹤分析,圖形化服務調用軌跡,便於快速準確定位問題。

Jaeger組成

  • 前端界面展示UI
  • 數據存儲Cassandra
  • 數據查詢Query
  • 數據收集處理Collector
  • 客戶端代理Agent
  • 客戶端庫jaeger-client-*

Jaeger服務之間關係

Jaeger服務之間關係

打造所需原材料

Docker部署

CenterOS 7 安裝Docker

關於Docker部署網上到處都是,我使用的是CentOS 7,其他版本自行查找,這裏就用最簡單粗暴的方式安裝。

yum update -y
yum -y install docker
systemctl start docker

替換Docker鏡像源

由於國內下載鏡像比較慢,這裏我將Docker鏡像源替換成阿里雲。
註冊一個阿里雲用戶,訪問 https://cr.console.aliyun.com/#/accelerator 獲取專屬Docker加速器地址。
如圖:
ali_docker_mirror

針對Docker客戶端版本大於1.10.0的用戶可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["騷年您老人家的阿里鏡像加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

OK!Docker部署到此爲止,有人會問我Jaeger用二進制部署了,爲啥還需要部署Docker。這裏是一個悲傷的故事,Docker是用來部署Cassandra的。因爲Cassandra是Java實現的,部署要配置一大堆我不太瞭解的Java環境,比較麻煩,既然有Docker這種神奇何不好好利用一下呢!部署Cassandra的時候我會把存儲掛在到本地硬盤,這樣就避免了Docker服務異常關閉導致數據丟失了,所以使用Docker部署無傷大雅,這裏又有人會問爲何不用Docker部署Jaeger,這又是一件悲傷的故事!!!因爲Jaeger本身只有鏈路跟蹤,並沒有更高級的業務功能(類似異常告警),所以我們可能會針對Jaeger進行二次開發。So不如自己部署一套,好用來做研究。好了廢話不多說讓我們繼續Jaeger部署之旅吧!

Cassandra部署

Cassandra是一套開源分佈式NoSQL數據庫系統。由Facebook開發,用於儲存收件箱等簡單格式數據,集GoogleBigTable的數據模型與Amazon Dynamo的完全分佈式的架構於一身.
Cassandra是一個混合型的非關係的數據庫,類似於Google的BigTable。P2P去中心化的存儲。很多方面都可以稱之爲Dynamo 2.0。

Docker下載Cassandra

前面已經囉嗦過爲什麼試用Docker部署Cassandra了,這裏就簡單介紹如何部署.

docker search cassandra
docker pull docker.io/cassandra

Docker部署Cassandra集羣

我準備了3臺服務器

10.100.7.46
10.100.7.47
10.100.7.48

10.100.7.46這臺服務器作爲種子點

docker run --name some-cassandra -v /httx/cassandra/data:/var/lib/cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.100.7.47 -p 7000:7000 -p 9042:9042  -e CASSANDRA_SEEDS=10.100.7.46 cassandra:latest
docker run --name some-cassandra -v /httx/cassandra/data:/var/lib/cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.100.7.48 -p 7000:7000 -p 9042:9042  -e CASSANDRA_SEEDS=10.100.7.46 cassandra:latest
docker run --name some-cassandra -v /httx/cassandra/data:/var/lib/cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.100.7.48 -p 7000:7000 -p 9042:9042  -e CASSANDRA_SEEDS=10.100.7.46 cassandra:latest

/httx/cassandra/data這個是我的數據本地保存目錄,9042:9042是將客戶端鏈接地址暴露出來。簡單吧!

導入Jaeger表結構

導入Jaeger表結構,這裏不得不吐槽一下Jaeger!Jaeger二進制安裝包里根本沒有數據sql文件,而且沒有任何文檔告訴你SQL文件在哪裏找,沒安裝文檔!我表示是崩潰的,最終在源碼目錄的一個角落中找到SQL文件,路徑展示一下:

$GOPATH/src/github.com/jaegertracing/jaeger/plugin/storage/cassandra/schema/v001.cql.tmpl
格式:
cqlsh -h HOST -p PORT -f fileName
cqlsh 10.100.7.46 -f $GOPATH/src/github.com/jaegertracing/jaeger/plugin/storage/cassandra/schema/v001.cql.tmpl 

上面的命令是我搜索來的,因爲在導入之前我已經手動一條一條加進去了(>﹏<)!如果不好用的話,讀者可以直接cqlsh一條一條黏上去!!!!

Jaeger部署

ok! 現在正式進入主題:Jaeger安裝。- Jaeger二進制安裝包

tar -zxvf jaeger-1.4.1-linux-amd64.tar.gz
mv jaeger-1.4.1-linux-amd64 jaeger

Collector部署

mkdir collector
mv jaeger-collector collector/collector
nohup ./collector --cassandra.keyspace=jaeger_v1_datacenter1  --cassandra.servers=10.100.7.46,10.100.7.47,10.100.7.48 --collector.zipkin.http-port=9411 1>1.log 2>2.log &

Query部署

mkdir query
mv jaeger-query query/query
mv jaeger-ui-build/build query/
cd query
nohup ./query --cassandra.keyspace jaeger_v1_datacenter1  --cassandra.servers 10.100.7.46,10.100.7.47,10.100.7.48 --query.static-files=./build  1>1.log 2>2.log &

ok 訪問你Query的地址 htpp://queryIp:16686 就可以看到久違的jaeger的頁面了!
image

Agent部署

Agent 部署就比較簡單了,指定collector地址就OK了!

nohup ./jaeger-agent  --collector.host-port=10.100.7.46:14267   1>1.log 2>2.log &

See you!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章