部署
另請參閱
主要的 Jaeger 後端元件以 Docker 映像的形式發佈在Docker Hub 和Quay
上面列出的鏡像是主要發布版本。大多數組件都有額外發布的映像
${component}-debug
映像包含 Delve 除錯器${component}-snapshot
映像是從每個提交的主分支頂端發布的,允許測試未發布的版本${component}-debug-snapshot
包含 Delve 除錯器的快照映像
有用於使用以下項目執行 Jaeger 的協調範本
- Kubernetes: github.com/jaegertracing/jaeger-kubernetes ,
- OpenShift: github.com/jaegertracing/jaeger-openshift 。
組態選項
Jaeger 二進位檔可以使用多種方式配置(依優先順序遞減排列)
- 命令列引數,
- 環境變數,
- JSON、TOML、YAML、HCL 或 Java 屬性格式的組態檔。
若要查看完整選項清單,請使用 help
命令執行二進位檔,或參閱 CLI 旗標頁面以取得更多資訊。只有在 *選取儲存類型時*,才會列出特定於特定儲存後端的選項。例如,若要查看具有 Cassandra 儲存的收集器中的所有可用選項
$ docker run --rm \
-e SPAN_STORAGE_TYPE=cassandra \
jaegertracing/jaeger-collector:1.62.0 \
help
為了透過環境變數提供組態參數,請尋找個別的命令列選項,並將其名稱轉換為 UPPER_SNAKE_CASE,例如
命令列選項 | 環境變數 |
---|---|
--cassandra.connections-per-host | CASSANDRA_CONNECTIONS_PER_HOST |
--metrics-backend | METRICS_BACKEND |
All-in-one
Jaeger all-in-one 是一種特殊的發行版本,它將三個 Jaeger 組件,代理程式 、收集器 和 查詢服務/UI,組合在單一二進位檔或容器映像中。它適用於單節點部署,其中您的追蹤量很小,足以由單一執行個體處理。依預設,all-in-one 會以 memory
儲存開始,這表示它會在重新啟動時遺失所有資料。所有其他 span 儲存後端 也可以與 all-in-one 搭配使用,但 memory
和 badger
是 all-in-one 專有的,因為它們無法在執行個體之間共用。
All-in-one 會接聽與它所包含的組件相同的埠(如下所述),但管理埠除外。
埠 | 通訊協定 | 功能 |
---|---|---|
14269 | HTTP | 管理埠:位於 / 的健康狀態檢查和位於 /metrics 的度量 |
## make sure to expose only the ports you use in your deployment scenario!
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14250:14250 \
-p 14268:14268 \
-p 14269:14269 \
-p 4317:4317 \
-p 4318:4318 \
-p 9411:9411 \
jaegertracing/all-in-one:1.62.0
您可以瀏覽至 https://127.0.0.1:16686
來存取 Jaeger UI。
代理程式
jaeger-agent 設計為透過 UDP 接收 Thrift 格式的追蹤資料,並在本機的每個主機上執行,作為主機代理程式/精靈或應用程式 sidecar。jaeger-agent 會公開下列埠
埠 | 通訊協定 | 功能 |
---|---|---|
6831 | UDP | 接受大多數目前 Jaeger 用戶端使用的 compact Thrift 通訊協定中的 jaeger.thrift 。 |
6832 | UDP | 接受 Node.js Jaeger 用戶端使用的 binary Thrift 通訊協定中的 jaeger.thrift (因為 thriftrw npm 套件不支援 compact 通訊協定)。 |
5778 | HTTP | 提供 SDK 組態,即位於 /sampling 的取樣策略(請參閱 遠端取樣)。 |
5775 | UDP | 接受 compact Thrift 通訊協定中的 zipkin.thrift (已棄用;僅由非常舊的 Jaeger 用戶端使用,約在 2016 年)。 |
14271 | HTTP | 管理埠:位於 / 的健康狀態檢查和位於 /metrics 的度量。 |
它可以直接在主機上或透過 Docker 執行,如下所示
## make sure to expose only the ports you use in your deployment scenario!
docker run \
--rm \
-p6831:6831/udp \
-p6832:6832/udp \
-p5778:5778/tcp \
-p5775:5775/udp \
jaegertracing/jaeger-agent:1.62.0
探索系統整合
jaeger-agent 可以點對點連線到單一 jaeger-collector 位址,該位址可以由另一個基礎結構元件(例如 DNS)跨多個 jaeger-collector 進行負載平衡。也可以使用 jaeger-collector 位址的靜態清單來配置 jaeger-agent。
在 Docker 上,可以使用如下的命令
docker run \
--rm \
-p5775:5775/udp \
-p6831:6831/udp \
-p6832:6832/udp \
-p5778:5778/tcp \
jaegertracing/jaeger-agent:1.62.0 \
--reporter.grpc.host-port=jaeger-collector.jaeger-infra.svc:14250
使用 gRPC 時,您有數個負載平衡和名稱解析選項
- 單一連線且無負載平衡。如果您指定單一
host:port
,這會是預設值。(範例:--reporter.grpc.host-port=jaeger-collector.jaeger-infra.svc:14250
) - 主機名稱的靜態清單和循環配置資源負載平衡。這是您使用逗號分隔的位址清單所取得的。(範例:
reporter.grpc.host-port=jaeger-collector1:14250,jaeger-collector2:14250,jaeger-collector3:14250
) - 動態 DNS 解析和循環式負載平衡。若要取得此行為,請在位址前加上
dns:///
,gRPC 將嘗試使用 SRV 記錄(用於外部負載平衡 )、TXT 記錄(用於服務設定 )和 A 記錄來解析主機名稱。請參閱gRPC 名稱解析文件 和 dns_resolver.go 實作 以取得更多資訊。(範例:--reporter.grpc.host-port=dns:///jaeger-collector.jaeger-infra.svc:14250
)
代理程式層級標籤
Jaeger 支援代理程式層級標籤,這些標籤可以新增到通過 jaeger-agent 的所有 span 的程序標籤中。此功能透過命令列旗標 --agent.tags=key1=value1,key2=value2,...,keyn=valuen
支援。標籤也可以透過環境旗標設定,例如 - --agent.tags=key=${envFlag:defaultValue}
- 如果未設定,標籤值將設定為 envFlag
環境金鑰的值和 defaultValue
。
收集器
jaeger-collector 是無狀態的,因此可以平行執行多個 jaeger-collector 執行個體。jaeger-collector 幾乎不需要任何組態,除了儲存位置(例如 --cassandra.keyspace
和 --cassandra.servers
選項)或 Elasticsearch 叢集的位置(透過 --es.server-urls
),具體取決於指定的儲存類型。請參閱CLI 旗標以取得所有命令列選項。
在預設設定中,jaeger-collector 會公開下列埠
埠 | 通訊協定 | 端點 | 功能 |
---|---|---|---|
4317 | gRPC | 不適用 | 接受 OpenTelemetry OTLP 格式 (Protobuf) 的追蹤。 |
4318 | HTTP | /v1/traces | 接受 OpenTelemetry OTLP 格式 (Protobuf 和 JSON) 的追蹤。 |
14268 | HTTP | /api/sampling | 提供取樣原則(請參閱遠端取樣)。 |
/api/traces | 接受使用 binary thrift 協定的 jaeger.thrift 格式的 span (POST )。 | ||
14269 | HTTP | / | 管理埠:健康檢查 (GET )。 |
/metrics | Prometheus 樣式度量 (GET )。 | ||
9411 | HTTP | /api/v1/spans 和 /api/v2/spans | 接受 Thrift、JSON 和 Proto 格式的 Zipkin span(預設停用)。 |
14250 | gRPC | 不適用 | 由 jaeger-agent 使用,以 model.proto Protobuf 格式傳送 span。 |
Ingester
jaeger-ingester 是一項服務,可從 Kafka 主題讀取 span 資料,並將其寫入另一個儲存後端(Elasticsearch 或 Cassandra)。
埠 | 通訊協定 | 功能 |
---|---|---|
14270 | HTTP | 管理埠:位於 / 的健康狀態檢查和位於 /metrics 的度量 |
若要檢視所有公開的組態選項,請執行下列命令
docker run \
-e SPAN_STORAGE_TYPE=cassandra \
jaegertracing/jaeger-ingester:1.62.0
--help
查詢服務與 UI
jaeger-query 提供 API 端點和 React/Javascript UI。此服務是無狀態的,通常會在負載平衡器(例如 NGINX )後方執行。
在預設設定中,jaeger-query 服務會公開下列埠
埠 | 通訊協定 | 功能 |
---|---|---|
16685 | gRPC | Protobuf/gRPC QueryService |
16686 | HTTP | /api/* 端點和位於 / 的 Jaeger UI |
16687 | HTTP | 管理埠:位於 / 的健康狀態檢查和位於 /metrics 的度量 |
最小部署範例 (Elasticsearch 後端)
docker run -d --rm \
-p 16685:16685 \
-p 16686:16686 \
-p 16687:16687 \
-e SPAN_STORAGE_TYPE=elasticsearch \
-e ES_SERVER_URLS=http://<ES_SERVER_IP>:<ES_SERVER_PORT> \
jaegertracing/jaeger-query:1.62.0
時鐘偏差調整
Jaeger 後端會合併通常在不同主機上執行的應用程式的追蹤資料。主機上的硬體時鐘通常會發生相對漂移,稱為時鐘偏差效應 。時鐘偏差可能會讓追蹤難以理解,例如,當伺服器 span 的開始時間可能早於用戶端 span 時,這是不可能的。jaeger-query 服務實作了時鐘偏差調整演算法(程式碼 )來修正時鐘漂移,使用有關 span 之間因果關係的知識。所有調整過的 span 在 UI 中都會顯示警告,其中提供套用至其時間戳記的確切時鐘偏差 delta。
有時,這些調整本身會使追蹤難以理解。例如,當在父 span 的範圍內重新定位伺服器 span 時,Jaeger 不知道請求和回應延遲之間的確切關係,因此它會假設它們相等,並將子 span 放置在父 span 的中間(請參閱問題 #961 )。
jaeger-query 服務支援組態旗標 --query.max-clock-skew-adjustment
,以控制允許的時鐘偏差調整量。將此參數設定為零 (0s
) 會完全停用時鐘偏差調整。此設定適用於從指定查詢服務擷取的所有追蹤。有一個開放的工單 #197 ,以支援直接在 UI 中切換調整的開關。
UI 基底路徑
所有 jaeger-query HTTP 路徑的基本路徑可以設定為非根值,例如 /jaeger
會導致所有 UI URL 都以 /jaeger
開頭。當在反向代理後方執行 jaeger-query 時,這會很有用。
基本路徑可以透過 --query.base-path
命令列參數或 QUERY_BASE_PATH
環境變數進行設定。
UI 自訂與嵌入
請參閱專用的前端/UI 頁面。
遠端儲存 (元件)
jaeger-remote-storage 實作了 遠端儲存 gRPC API 並將其代理到其中一個常規的 Jaeger 後端。當我們想要執行 Jaeger 元件的完整部署時(例如,分離的收集器和查詢服務),但使用單節點的儲存後端(如記憶體儲存或 Badger)時,它會很有用。如果沒有遠端儲存,單節點後端只能與 all-in-one 一起使用,因為它們無法在多個進程之間共享。
在預設設定下,此服務會監聽下列連接埠
埠 | 通訊協定 | 功能 |
---|---|---|
17271 | gRPC | 遠端儲存 API |
17270 | HTTP | 管理埠:位於 / 的健康狀態檢查和位於 /metrics 的度量 |
Span 儲存後端
Jaeger 需要永久的儲存後端。Cassandra 和 Elasticsearch/OpenSearch 是主要支援的分散式儲存後端。其他後端在這裡討論 。
儲存類型可以透過 SPAN_STORAGE_TYPE
環境變數傳遞。有效值為 cassandra
、elasticsearch
、kafka
(僅作為緩衝區)、badger
和 memory
。
從 1.6.0 版本開始,可以同時使用多個儲存類型,方法是將有效的類型以逗號分隔的清單提供給 SPAN_STORAGE_TYPE
環境變數。請務必注意,所有列出的儲存類型都用於寫入,但只有清單中的第一個類型會用於讀取和封存。
對於大規模的生產部署,Jaeger 團隊建議使用 OpenSearch 後端而不是 Cassandra。
記憶體
記憶體內儲存不適用於生產工作負載。它旨在作為快速入門的簡單解決方案,一旦進程退出,資料就會遺失。
預設情況下,記憶體中儲存的追蹤數量沒有限制,但可以透過 --memory.max-traces
傳遞整數值來建立限制。
Badger - 本機儲存
- 自 Jaeger v1.9 起
Badger 是一個嵌入式的本機儲存,僅適用於 all-in-one 發行版。預設情況下,它會使用暫存檔案系統作為臨時儲存。可以使用 --badger.ephemeral=false
選項覆寫此行為。
docker run \
-e SPAN_STORAGE_TYPE=badger \
-e BADGER_EPHEMERAL=false \
-e BADGER_DIRECTORY_VALUE=/badger/data \
-e BADGER_DIRECTORY_KEY=/badger/key \
-v <storage_dir_on_host>:/badger \
-p 16686:16686 \
jaegertracing/all-in-one:1.62.0
Cassandra
- 支援的版本:4.x、5.x
部署 Cassandra 本身不在我們的文件範圍內。一個良好的文件來源是 Apache Cassandra 文件 。
設定
最小設定
docker run \
-e SPAN_STORAGE_TYPE=cassandra \
-e CASSANDRA_SERVERS=<...> \
jaegertracing/jaeger-collector:1.62.0
注意:允許在 CASSANDRA_SERVERS
中使用空白字元。例如:為了更好的可讀性,伺服器可以作為 `CASSANDRA_SERVERS=“1.2.3.4, 5.6.7.8”` 傳遞。
所有選項
若要檢視完整設定選項清單,您可以執行下列命令
docker run \
-e SPAN_STORAGE_TYPE=cassandra \
jaegertracing/jaeger-collector:1.62.0 \
--help
Schema 指令碼
提供了一個指令碼,用於使用 Cassandra 的互動式 Shell cqlsh
初始化 Cassandra keyspace 和 schema
MODE=test sh ./plugin/storage/cassandra/schema/create.sh | cqlsh
或使用已發佈的 Docker 映像檔 (請確保提供正確的 IP 位址)
docker run \
-e CQLSH_HOST={server IP address} \
jaegertracing/jaeger-cassandra-schema:1.62.0
對於生產部署,請將 MODE=prod DATACENTER={datacenter}
引數傳遞給指令碼,其中 {datacenter}
是 Cassandra 設定/網路拓撲中使用的名稱。
指令碼也允許覆寫 TTL、keyspace 名稱、複製因子等等。執行不帶引數的指令碼,以檢視完整辨識的參數清單。
注意:請參閱 README 以取得有關 Cassandra schema 管理的更多詳細資訊。
TLS 支援
只要您已正確設定 Cassandra 叢集,Jaeger 就支援 TLS 用戶端到節點連線。在例如使用 cqlsh
驗證之後,您可以像這樣設定收集器和查詢
docker run \
-e CASSANDRA_SERVERS=<...> \
-e CASSANDRA_TLS=true \
-e CASSANDRA_TLS_SERVER_NAME="CN-in-certificate" \
-e CASSANDRA_TLS_KEY=<path to client key file> \
-e CASSANDRA_TLS_CERT=<path to client cert file> \
-e CASSANDRA_TLS_CA=<path to your CA cert file> \
jaegertracing/jaeger-collector:1.62.0
Schema 工具也支援 TLS。您需要建立一個自訂的 cqlshrc 檔案,如下所示
# Creating schema in a cassandra cluster requiring client TLS certificates.
#
# Create a volume for the schema docker container containing four files:
# cqlshrc: this file
# ca-cert: the cert authority for your keys
# client-key: the keyfile for your client
# client-cert: the cert file matching client-key
#
# if there is any sort of DNS mismatch and you want to ignore server validation
# issues, then uncomment validate = false below.
#
# When running the container, map this volume to /root/.cassandra and set the
# environment variable CQLSH_SSL=--ssl
[ssl]
certfile = ~/.cassandra/ca-cert
userkey = ~/.cassandra/client-key
usercert = ~/.cassandra/client-cert
# validate = false
相容的後端
- ScyllaDB 可以作為 Cassandra 的替代品使用,因為它使用相同的資料模型和查詢語言。
Elasticsearch
- 自 Jaeger v0.6.0 起支援
- 支援的 ES 版本:7.x、8.x (自 Jaeger v1.52.0 起)
Elasticsearch 版本會從根/ping 端點自動擷取。根據此版本,Jaeger 會使用相容的索引對應和 Elasticsearch REST API。可以透過 --es.version=
旗標明確提供版本。
Elasticsearch 除了安裝並執行 Elasticsearch 之外,不需要其他初始化步驟。一旦它開始執行,請將正確的組態值傳遞給 jaeger-collector 和 jaeger-query。
設定
最小設定
docker run \
-e SPAN_STORAGE_TYPE=elasticsearch \
-e ES_SERVER_URLS=<...> \
jaegertracing/jaeger-collector:1.62.0
所有選項
若要檢視完整設定選項清單,您可以執行下列命令
docker run \
-e SPAN_STORAGE_TYPE=elasticsearch \
jaegertracing/jaeger-collector:1.62.0 \
--help
Elasticsearch 索引的分片和複本
分片和複本是需要特別注意的組態值,因為這是於索引建立時決定的。 這篇文章 提供了更多關於如何選擇分片數量以進行最佳化的資訊。
Elasticsearch 輪換
Elasticsearch 輪換 是一種索引管理策略,可最佳化分配給索引的資源使用。例如,不包含任何資料的索引仍然會分配分片,反之,單一索引可能包含比其他索引多得多的資料。Jaeger 預設將資料儲存在每日索引中,這可能無法最佳化資源利用。可以透過 --es.use-aliases=true
啟用輪換功能。
輪換可讓您根據以下一個或多個條件設定何時輪換至新的索引
max_age
- 索引的最大存留時間。它使用 時間單位 :d
、h
、m
。max_docs
- 索引中的最大文件數。max_size
- 主要分片的預估最大大小(自 Elasticsearch 6.x 開始)。它使用 位元組大小單位tb
、gb
、mb
。
輪換索引管理策略比使用預設的每日索引更複雜,並且需要一個初始化作業來準備儲存空間,以及兩個 cron 作業來管理索引。
若要深入了解 Jaeger 中的輪換索引管理,請參閱此文章 。
如需自動輪換,請參閱Elasticsearch ILM 支援。
初始化
下列命令透過建立索引別名、索引和索引範本,為輪換部署準備 Elasticsearch
docker run -it --rm --net=host jaegertracing/jaeger-es-rollover:latest init https://127.0.0.1:9200 # <1>
如果您需要初始化封存儲存空間,請新增 -e ARCHIVE=true
。
初始化後,可以使用 --es.use-aliases=true
部署 Jaeger。
輪換至新的索引
下一步是定期執行輪換 API,它會根據提供的條件將寫入別名輪換至新的索引。此命令還會將新的索引新增至讀取別名,以使新資料可供搜尋。
docker run -it --rm --net=host -e CONDITIONS='{"max_age": "2d"}' jaegertracing/jaeger-es-rollover:latest rollover https://127.0.0.1:9200 # <1>
<1> 如果目前寫入索引的存留時間超過 2 天,則此命令會將別名輪換至新的索引。如需更多條件,請參閱 Elasticsearch 文件 。
下一步是從讀取別名中移除舊索引。這表示舊資料將無法用於搜尋。這模擬了預設每日索引部署中使用的 --es.max-span-age
旗標的行為。此步驟可能是選用的,而且舊索引可以簡單地在下一步中由索引清理器移除。
docker run -it --rm --net=host -e UNIT=days -e UNIT_COUNT=7 jaegertracing/jaeger-es-rollover:latest lookback https://127.0.0.1:9200 # <1>
<1> 從讀取別名中移除存留時間超過 7 天的索引。
移除舊資料
可以使用 jaeger-es-index-cleaner
移除歷史資料,這也用於每日索引。
docker run -it --rm --net=host -e ROLLOVER=true jaegertracing/jaeger-es-index-cleaner:latest 14 https://127.0.0.1:9200 # <1>
<1> 移除存留時間超過 14 天的索引。
Elasticsearch ILM 支援
在 版本 v1.22.0 中新增的實驗性功能。
支援的 Elasticsearch 版本:7.x
例如
- 依大小(位元組或文件數)或存留時間輪換至新的索引、封存先前的索引
- 刪除過時的索引以強制執行資料保留標準
啟用 ILM 支援
在 elasticsearch 中建立一個名為 jaeger-ilm-policy 的 ILM 原則。
例如,下列原則會在「active」索引超過 1 分鐘時輪換,並刪除存留時間超過 2 分鐘的索引。
curl -X PUT https://127.0.0.1:9200/_ilm/policy/jaeger-ilm-policy \ -H 'Content-Type: application/json; charset=utf-8' \ --data-binary @- << EOF { "policy": { "phases": { "hot": { "min_age": "0ms", "actions": { "rollover": { "max_age": "1m" }, "set_priority": { "priority": 100 } } }, "delete": { "min_age": "2m", "actions": { "delete": {} } } } } } EOF
執行帶有
ES_USE_ILM=true
的 elasticsearch 初始化工具docker run -it --rm --net=host -e ES_USE_ILM=true jaegertracing/jaeger-es-rollover:latest init https://127.0.0.1:9200 # <1>
<1> 如果您需要初始化封存儲存空間,請新增
-e ARCHIVE=true
。使用 ILM 支援進行初始化時,請確保預先在 Elasticsearch 中建立了一個名為
jaeger-ilm-policy
的 ILM 原則(請參閱上一個步驟),否則將顯示以下錯誤訊息「Elasticsearch 中不存在 ILM 原則 jaeger-ilm-policy。請建立它並重新執行初始化」
初始化後,使用
--es.use-ilm=true
和--es.use-aliases=true
部署 Jaeger。
升級 Elasticsearch 版本
Elasticsearch 定義了線路和索引相容性版本。索引相容性定義了節點可以讀取資料的最低版本。例如,Elasticsearch 8 可以讀取由 Elasticsearch 7 建立的索引,但即使它們使用相同的索引對應,它也無法讀取由 Elasticsearch 6 建立的索引。因此,從 Elasticsearch 7 升級到 8 不需要任何資料移轉。但是,從 Elasticsearch 6 升級到 8 必須透過 Elasticsearch 7 完成,並等待移除或明確地重新索引 ES 6.x 建立的索引。
請參閱 Elasticsearch 文件 ,以了解線路和索引相容性版本。一般而言,此資訊可以從 root/ping REST 端點取得。
重新索引
當從 Elasticsearch 6 升級到 8(通過 Elasticsearch 7)時,可以使用手動重新索引,而無需等待 Elasticsearch 6 建立的索引被移除。
將所有 span 索引重新索引到帶有
-1
後綴的新索引。curl -ivX POST -H "Content-Type: application/json" https://127.0.0.1:9200/_reindex -d @reindex.json { "source": { "index": "jaeger-span-*" }, "dest": { "index": "jaeger-span" }, "script": { "lang": "painless", "source": "ctx._index = 'jaeger-span-' + (ctx._index.substring('jaeger-span-'.length(), ctx._index.length())) + '-1'" } }
刪除具有舊映射的索引。
curl -ivX DELETE -H "Content-Type: application/json" https://127.0.0.1:9200/jaeger-span-\*,-\*-1
建立不帶
-1
後綴的索引。curl -ivX POST -H "Content-Type: application/json" https://127.0.0.1:9200/_reindex -d @reindex.json { "source": { "index": "jaeger-span-*" }, "dest": { "index": "jaeger-span" }, "script": { "lang": "painless", "source": "ctx._index = 'jaeger-span-' + (ctx._index.substring('jaeger-span-'.length(), ctx._index.length() - 2))" } }
移除帶後綴的索引。
curl -ivX DELETE -H "Content-Type: application/json" https://127.0.0.1:9200/jaeger-span-\*-1
針對其他 Jaeger 索引,類似地執行上述指令。
可能存在更有效的遷移程序。請與社群分享任何發現。
Kafka
- 自 Jaeger 1.6.0 版本起支援
- 支援的 Kafka 版本:0.9+
Kafka 可以作為收集器和實際儲存之間的中介緩衝區。jaeger-collector 配置了 SPAN_STORAGE_TYPE=kafka
,使其將所有收到的 spans 寫入 Kafka 主題。 jaeger-ingester 用於從 Kafka 讀取並將 spans 儲存到另一個儲存後端(Elasticsearch 或 Cassandra)。
寫入 Kafka 對於建立後處理資料管線特別有用。
設定
最小設定
docker run \
-e SPAN_STORAGE_TYPE=kafka \
-e KAFKA_PRODUCER_BROKERS=<...> \
-e KAFKA_TOPIC=<...> \
jaegertracing/jaeger-collector:1.62.0
所有選項
若要檢視完整設定選項清單,您可以執行下列命令
docker run \
-e SPAN_STORAGE_TYPE=kafka \
jaegertracing/jaeger-collector:1.62.0 \
--help
主題 & 分區
除非您的 Kafka 叢集設定為自動建立主題,否則您需要提前建立它。您可以參考 Kafka 快速入門文件 來了解如何建立。
您可以在 官方文件 中找到有關主題和分區的更多資訊。這篇文章 提供了有關如何選擇分區數量的更多詳細資訊。
遠端儲存
Jaeger 支援基於 gRPC 的 遠端儲存 API ,允許使用專案不直接支援的自訂儲存後端來擴展 Jaeger 生態系統。這些儲存後端可以部署為遠端 gRPC 伺服器(自 Jaeger v1.30 起)。從 v1.58 開始,將不再支援作為 sidecar 外掛程式的較舊部署模式。
要將遠端儲存作為 Jaeger 儲存後端使用,請使用 grpc
作為儲存類型並指定遠端 gRPC 伺服器位址。有關更多資訊,請參閱 jaeger/plugin/storage/grpc 。
範例
docker run \
-e SPAN_STORAGE_TYPE=grpc \
-e GRPC_STORAGE_SERVER=<...> \
jaegertracing/all-in-one:1.62.0
已知的遠端儲存後端
指標儲存後端
Jaeger Query 能夠從儲存後端查詢匯總的 R.E.D 指標,並在 監控標籤 上視覺化這些指標。應該強調的是,所設定的指標儲存類型僅用於讀取,因此僅適用於 Jaeger Query 元件(以及包含 Jaeger Query 的 All In One)。
儲存類型可以通過 METRICS_STORAGE_TYPE
環境變數傳遞。有效值為:prometheus
。
Prometheus
Jaeger Query 支援任何與 PromQL 相容的後端。Julius Volz 在以下網址編譯了這些後端的列表:https://promlabs.com/blog/2020/11/26/an-update-on-promql-compatibility-across-vendors
設定
最小設定
docker run \
-e METRICS_STORAGE_TYPE=prometheus \
jaegertracing/jaeger-query:1.62.0
所有選項
若要檢視完整設定選項清單,您可以執行下列命令
docker run \
-e METRICS_STORAGE_TYPE=prometheus \
jaegertracing/jaeger-query:1.62.0 \
--help
TLS 支援
只要您已正確 設定您的 Prometheus 伺服器 ,Jaeger 就支援 TLS 用戶端到 Prometheus 伺服器的連線。您可以像這樣設定 jaeger-query
docker run \
-e METRICS_STORAGE_TYPE=prometheus \
-e PROMETHEUS_SERVER_URL=<...> \
-e PROMETHEUS_TLS_ENABLED=true \
-e PROMETHEUS_TLS_CA=<path to your CA cert file> \
jaegertracing/jaeger-query:1.62.0
用於服務相依性的匯總任務
生產部署需要一個外部程序來匯總資料並建立服務之間的相依性連結。專案 spark-dependencies 是一個 Spark 任務,它會推導出相依性連結並將其直接寫入儲存中。