## Zipkin跟蹤
Zipkin跟蹤演示使用Zipkin作為跟蹤服務端,提供跟蹤Envoy請求記錄展示的功能。這個沙箱與上面描述的前端代理架構非常類似,但有一點不同:在響應返回之前,`service1`對`service2`進行API調用。這三個容器將被部署在名為`envoymesh`的虛擬網絡中。
所有的請求都經過前端Envoy進行路由,該Envoy充當位于`envoymesh`網絡邊緣的反向代理。端口`80`通過docker compose映射到端口`8000`(請參閱[/examples/zipkin-tracing/docker-compose.yml](https://github.com/envoyproxy/envoy/blob/master//examples/zipkin-tracing/docker-compose.yml))。請注意,所有Envoy都配置請求跟蹤收集(例如,[/examples/zipkin-tracing/front-envoy-zipkin.json](https://github.com/envoyproxy/envoy/blob/master//examples/zipkin-tracing/front-envoy-zipkin.json)中的`http_connection_manager/config/tracing`設置),并將Zipkin設置為跟蹤所生成的spans收集器,將發送到Zipkin群集(在[/examples/zipkin-tracing/front-envoy-zipkin.json](https://github.com/envoyproxy/envoy/blob/master//examples/zipkin-tracing/front-envoy-zipkin.json)中跟蹤驅動程序設置)。
在將請求路由到相應的Envoy服務或應用程序之前,Envoy將負責為跟蹤生成適當的spans(父/子/span上下文共享)。在高級別,每個span記錄上行API調用的延遲以及將span與其他相關span(例如跟蹤ID)關聯所需的信息。
從Envoy跟蹤的最重要的特點是,它會將調用軌跡發送到Zipkin服務群集。但是,為了充分利用跟蹤,應用程序必須傳播Envoy生成的跟蹤頭,同時調用其他服務。在我們提供的沙箱中,`service1`充當了簡單`flask`應用程序(請參閱[/examples/front-proxy/service.py](https://github.com/envoyproxy/envoy/blob/master//examples/front-proxy/service.py)中的跟蹤函數)跟蹤傳播頭,同時對`service2`進行遠程調用。
### 運行沙箱
以下文檔將按照上圖中所述組織的envoy集群的進行設置和運行。
**第1步:構建沙箱**
若構建這個沙箱示例,并啟動示例應用程序,請運行以下命令:
```
$ pwd
envoy/examples/zipkin-tracing
$ docker-compose up --build -d
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------
zipkintracing_service1_1 /bin/sh -c /usr/local/bin/ ... Up 80/tcp
zipkintracing_service2_1 /bin/sh -c /usr/local/bin/ ... Up 80/tcp
zipkintracing_front-envoy_1 /bin/sh -c /usr/local/bin/ ... Up 0.0.0.0:8000->80/tcp, 0.0.0.0:8001->8001/tcp
```
**第2步:產生一些請求負載**
您現在可以通過前端Envoy向`service1`發送一個請求,如下所示:
```
$ curl -v $(docker-machine ip default):8000/trace/1
* Trying 192.168.99.100...
* Connected to 192.168.99.100 (192.168.99.100) port 8000 (#0)
> GET /trace/1 HTTP/1.1
> Host: 192.168.99.100:8000
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
< content-type: text/html; charset=utf-8
< content-length: 89
< x-envoy-upstream-service-time: 1
< server: envoy
< date: Fri, 26 Aug 2016 19:39:19 GMT
< x-envoy-protocol-version: HTTP/1.1
<
Hello from behind Envoy (service 1)! hostname: f26027f1ce28 resolvedhostname: 172.19.0.6
* Connection #0 to host 192.168.99.100 left intact
```
**第3步:通過Zipkin UI查看跟蹤記錄**
使用您的瀏覽器打開`http://192.168.99.100:9411`。你應該看到Zipkin儀表板。 如果這個IP地址不正確,可以通過運行`$ docker-machine ip default`找到正確的地址。將服務設置為“前端代理”,并將開始時間設置為測試的前幾分鐘(如:第2步),然后按回車。你應該看到來自前端代理的跟蹤記錄。單擊一個跟蹤記錄,就可以查看從前端代理到`service1`到`service2`的請求所經過的路徑,以及每個調用所產生的延遲。
## 返回
- [上一級](../Sandboxes.md)
- [首頁目錄](../../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?