zipkin 配置翻譯


zipkin-server

Zipkin Server 是一個 Java 1.8+ 服務,打包為一個可執行的 jar。 跨度存儲和收集器是可配置的。默認情況下,存儲在內存中,啟用 HTTP 收集器(POST /api/v2/spans 端點),服務器偵聽端口 9411。 Zipkin Server 使用 Armeria 實現。 雖然它在內部使用 Spring Boot (打開新窗口)
,不應將 Zipkin Server 視為普通的 Spring Boot 應用程序。

https://github.com/openzipkin/zipkin/blob/master/zipkin-server/README.md

不支持自定義服務器

不支持通過類似於 spring boot 應用程序添加 zipkin-server 引用這種方式來構建服務。

快速啟動

最快的上手方式是通過 最新 jar 發布服務器 獲取一個獨立的可執行jar。請注意,Zipkin 服務器需要最低 JRE 8。

$ curl -sSL https://zipkin.io/quickstart.sh | bash -s
$ java -jar zipkin.jar

啟動后,瀏覽 http://your_host:9411 驗證

端點

以下端點在服務基礎url http://your_host:9411 下定義

  • / - UI
  • /config.json - UI 配置
  • /api/v2 - API
  • /health - 如果正常則返回 200
  • /info - 提供正在運行的實例的版本
  • /metrics - 包括按傳輸類型細分的收集器指標
  • /prometheus - Prometheus 抓取端點

舊版 /api/v1 API 仍然支持。后端通過數據轉換與 HTTP API 分離。這意味着您仍然可以在新后端接受舊數據,反之亦然。進入 https://zipkin.io/zipkin-api/zipkin-api.yaml Swagger UI 的探索框查看舊定義

CORS(跨域資源共享)

默認情況下,所有端點 /api/v2 都配置為允許跨域請求。

這可以通過修改 zipkin.query.allowed-origins 屬性來改變。

例如,要允許來自 http://foo.bar.com 域名下的 CORS 請求:

ZIPKIN_QUERY_ALLOWED_ORIGINS=http://foo.bar.com

更多的相關配置請看 這里

服務和跨度名稱查詢

Zipkin API 不包括返回多遠查找服務或跨度名稱的參數。為了防止負載過大,服務和跨度名稱查詢通過配置
QUERY_LOOKBACK 限制,默認為24小時(每天兩個桶:今天一個,昨天一個)

日志

默認情況下, zipkin 以 INFO 或更高級別將日志寫入控制台。所以可以通過配置 logging.level.XXX 屬性調整日志級別

例如,如果您想為所有 zipkin 類別啟用調試日志記錄,您可以像這樣啟動服務器:

$ java -jar zipkin.jar --logging.level.zipkin2=DEBUG

更多的相關配置請看 這里

高級日志配置

實際上,服務器使用 Spring Boot - Logback集成 處理日志,所以可以通過配置 --logging.exception-conversion-word=%wEx{full} 轉儲完整堆棧跟蹤而不是截斷的跟蹤。

Metrics

收集器指標被導出到路徑 /metrics 。這些和其他指標被導出到路徑 /prometheus

示例 Prometheus 配置

Here's an example /prometheus configuration, using the Prometheus
exposition [text format version 0.0.4]

這是一個示例 /prometheus 配置,使用 Prometheus exposition文本格式版本 0.0.4

  - job_name: 'zipkin'
    scrape_interval: 5s
    metrics_path: '/prometheus'
    static_configs:
      - targets: ['localhost:9411']
    metric_relabel_configs:
      # Response code count
      - source_labels: [__name__]
        regex: '^status_(\d+)_(.*)$'
        replacement: '${1}'
        target_label: status
      - source_labels: [__name__]
        regex: '^status_(\d+)_(.*)$'
        replacement: '${2}'
        target_label: path
      - source_labels: [__name__]
        regex: '^status_(\d+)_(.*)$'
        replacement: 'http_requests_total'
        target_label: __name__

收集器

Metric 收集器按傳輸細分。以下內容被導出到 /metrics 端點:

Metric 說明
counter.zipkin_collector.messages.$transport 收到的累積消息;應該與檢測應用程序報告的消息相關
counter.zipkin_collector.messages_dropped.$transport 累積消息丟棄;原因包括客戶端斷開連接或格式錯誤的內容
counter.zipkin_collector.bytes.$transport 累積消息字節
counter.zipkin_collector.spans.$transport 累積跨度讀取;應該與檢測應用程序報告的消息相關
counter.zipkin_collector.spans_dropped.$transport 累積跨度下降;原因包括采樣或存儲故障
gauge.zipkin_collector.message_spans.$transport 消息中的最后一個跨度計數
gauge.zipkin_collector.message_bytes.$transport 消息中的最后一個字節數

配置

我們支持 ENV 變量配置,例如 STORAGE_TYPE=cassandra3 ,因為它們為管理員所熟悉,並且易於在 Docker 等運行時環境中使用

以下是 Zipkin 的頂層配置:

  • QUERY_PORT: HTTP API 和 Web UI 的監聽端口;默認為 9411
  • QUERY_ENABLED: 配置 false 禁用 '/api/v2' 端點。這也會導致 UI 不可用,因為 UI 依賴於 API。 如果您的唯一目標是限制搜索, 請配置 SEARCH_ENABLEDfalse
  • SEARCH_ENABLED: false 禁用查詢 API 中的搜索以及收集器中的任何索引或后處理以支持搜索。這不會禁用整個 UI ,因為按 ID 和依賴項查詢的跟蹤仍在運行。當您使用其他服務(例如日志)來查找跟蹤 ID 時禁用此功能。默認為 true
  • QUERY_TIMEOUT: 設置查詢請求的硬超時。接受任何持續時間字符串(例如, 100ms )。值 0 將完全禁用超時。默認為 11s
  • QUERY_LOG_LEVEL: 寫入控制台的日志級別;默認為 INFO
  • QUERY_NAMES_MAX_AGE: 控制 zipkin-server 對 UI 請求的最大響應時間。默認為 300 秒。
  • QUERY_LOOKBACK: 從 endTs 可以回溯多少毫秒查詢;默認為 24​​ 小時(每天兩個時段:今天一個,昨天一個)
  • STORAGE_TYPE: SpanStore 實現: mem, mysql, cassandra3, elasticsearch 中取一個
  • COLLECTOR_SAMPLE_RATE: 保留的記錄道百分比,默認為“始終采樣”(1.0)。
  • AUTOCOMPLETE_KEYS: 會通過 /api/v2/autocompleteTags 端點返回的跨度標簽鍵列表;標簽鍵應以逗號分隔,例如 "instance_id,user_id,env"
  • AUTOCOMPLETE_TTL: 以毫秒為單位抑制調用寫入相同的自動完成鍵/值對的時間。默認 3600000(1 小時)

配置文件覆蓋

在場景下,所有配置都由 Spring Boot 管理。這意味着屬性也可能被系統屬性或 Spring Boot 支持的任何其他替代方案覆蓋

我們使用 yaml 配置將更短或更慣用的 ENV 變量綁定到最終使用的 Spring 屬性。雖然大多數用戶應該只使用環境變量,但有些用戶可能希望使用屬性文件方法來覆蓋設置。例如,知道我們設置 spring.config.name=zipkin-server 了 ,Spring Boot 會自動在當前目錄中查找一個名為的文件 zipkin-server.properties ,並且可以通過這種方式覆蓋我們在 yaml 中設置的相同屬性。

如果您選擇使用基於屬性的配置而不是 ENV 變量,那么您就是在自定義配置。這意味着您將使用 Spring Boot 文檔堆棧溢出 解決參數配置問題,而不是提出問題或使用我們的聊天支持。我們必須提到這一點,因為 Spring 的配置通常消耗資源很大,我們必須為 Zipkin 相關任務盡可能節省資源。

UI

Zipkin 有一個 Web UI,自動包含在 exec jar 中,默認托管在端口 9411 上。

當 UI 加載時,它會從 /config.json 端點讀取默認配置。

屬性 描述
environment zipkin.ui.environment 這里的值變成右上角的標簽。非必填
defaultLookback zipkin.ui.default-lookback 查找跟蹤時回溯的默認持續時間(以毫秒為單位)。影響 UI 中的“開始時間”元素。默認為 900000(以毫秒為單位的 15 分鍾)
searchEnabled zipkin.ui.search-enabled 如果啟用了 Discover 屏幕。默認為真
queryLimit zipkin.ui.query-limit 查找 track 的默認限制。默認為 10
instrumented zipkin.ui.instrumented 此 Zipkin UI 涵蓋哪些站點,正則表達式語法案例 http:\/\/example.com\/.* ,默認 (.*) 包含所有站點
logsUrl zipkin.ui.logs-url 記錄查詢服務 url 模式。如果指定,將在跟蹤頁面上顯示一個按鈕,並將 URL 中的 {traceId} 替換為 traceId。非必填
supportUrl zipkin.ui.support-url 用戶可以請求支持的 URL。如果指定,將在側面菜單中放置指向此 URL 的鏈接,例如用於提交支持票的頁面。非必填
archivePostUrl zipkin.ui.archive-post-url 以 Zipkin v2 json 格式發布當前跟蹤的 URL。例如 https://longterm/api/v2/spans 。如果指定,一個按鈕將相應地出現在跟蹤頁面上。非必填
archiveUrl zipkin.ui.archive-url 提供歸檔跟蹤的 Web 應用程序的 URL,以“{traceId}”為模板。例如 https://longterm/zipkin/trace/{traceId} 。跟蹤成功發布到“archivePostUrl”后,確認消息中會顯示此信息.非必填
dependency.enabled zipkin.ui.dependency.enabled UI 依賴項展示是否啟用. 默認為 true
dependency.lowErrorRate zipkin.ui.dependency.low-error-rate 依賴項鏈接變黃的錯誤率閾值。默認值為 0.5 (50%) 設置為 >1 以禁用
dependency.highErrorRate zipkin.ui.dependency.high-error-rate 依賴項鏈接變紅的錯誤率閾值。默認值為 0.75 (75%) 設置為 >1 以禁用
basePath zipkin.ui.basepath 放置在 UI HTML 標簽中的路徑前綴;在反向代理后面運行時很有用。默認 /zipkin

要將屬性映射到環境變量,請將它們更改為大寫下划線格式。例如,如果使用 docker,您可以設置 ZIPKIN_UI_QUERY_LIMIT=100 相當於 $.queryLimit/config.json

跟蹤存檔

大多數生產 Zipkin 集群使用有限的 TTL 存儲跟蹤。這使得共享跟蹤有點不方便,因為它的鏈接將在幾天后過期。

"跟蹤歸檔" 功能對此有所幫助。啟動第二個 zipkin 服務器,指向一個比常規的 TTL 更長的存儲,並設置 archivePostUrl 和 archiveUrl UI 配置指向這第二個服務器。設置 archivePostUrl 后,跟蹤視圖頁面上將出現一個新的 "Archive Trace" 按鈕。

存儲

基於內存存儲

Zipkin 的 內存存儲 將所有數據保存在內存中,根據跨度限制清除舊數據。它適用於 STORAGE_TYPE 未設置或設置為 mem

  • MEM_MAX_SPANS: 超過此限制時,將首先清除最舊的記錄道(及其跨度)。默認為 500000

示例用法:

$ java -jar zipkin.jar

::: danger 警告
注意:這個存儲組件主要是為測試而開發的,也是一種在沒有外部依賴的情況下快速啟動和運行 Zipkin 服務器的方法。它對於高工作量是不可行的。也就是說,如果您遇到內存不足錯誤,請嘗試減少 MEM_MAX_SPANS 或增加堆大小 (-Xmx)。 將內存中保存的跨度數量加倍的示例:

將內存中保存的跨度數量加倍的示例:

$ MEM_MAX_SPANS=1000000 java -Xmx1G -jar zipkin.jar

:::

Cassandra 存儲

Zipkin 的 Cassandra 存儲組件支持 3.11.3+ 版本

::: tip Cassandra 相關配置

STORAGE_TYPE 設置為 cassandra3 時,以下配置生效:

CASSANDRA_KEYSPACE: 要使用的鍵空間,默認為: "zipkin2"
CASSANDRA_CONTACT_POINTS: 以逗號分隔的主機地址列表配置 Cassandra 集群。還可以使用 host:port 指定自定義端口。默認為本地主機上的 9042 端口。
CASSANDRA_LOCAL_DC: 將被視為負載平衡的 local 數據中心的名稱。默認為 datacenter1
CASSANDRA_ENSURE_SCHEMA: 確保 cassandra 使用最新模式。如果啟用則嘗試執行以 cassandra-schema-cql3 的前綴的腳本. 默認為 true
CASSANDRA_USERNAME:Cassandra 認證賬號
CASSANDRA_PASSWORD: Cassandra 認證密碼,如果認真失敗會拋出錯誤,未設置默認值。
CASSANDRA_USE_SSL: 需要 javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword, 默認為 false.

以下是可能不涉及所有用戶的調整參數:

  • CASSANDRA_MAX_CONNECTIONS: 每個數據中心本地主機的最大池連接數。默認為8
  • CASSANDRA_INDEX_CACHE_MAX: 要緩存的最大跟蹤索引元數據項。零禁用緩存。默認值為100000。
  • CASSANDRA_INDEX_CACHE_TTL: 緩存跟蹤的索引元數據需要多少秒。默認值為60。
  • CASSANDRA_INDEX_FETCH_MULTIPLIER: 要獲取的索引行比用戶提供的查詢限制多多少。默認為3。
    :::

使用 Cassandra 和請求日志記錄的示例用法(TRACE 顯示查詢值):

$ STORAGE_TYPE=cassandra3 java -jar zipkin.jar \
--logging.level.com.datastax.oss.driver.internal.core.tracker.RequestLogger=DEBUG

Elasticsearch 存儲

Zipkin 的 Elasticsearch 存儲組件支持 5-7.x 版本

::: tip Elasticsearch 相關配置
STORAGE_TYPE 設置為 elasticsearch 時,以下配置生效:

  • ES_HOSTS: 以逗號分隔的 elasticsearch 連接 url 列表,默認值為: "http://localhost:9200"
  • ES_PIPELINE: 指示為跨距編制索引之前使用的攝取管道,無默認值
  • ES_TIMEOUT: 配置 Elasticsearch API 的連接、讀寫超時時間,默認值為 10000 (10秒)
  • ES_INDEX: 生成每日索引名稱時要使用的索引前綴,默認值為: zipkin.
  • ES_DATE_SEPARATOR: 生成每日索引名稱時要使用的日期分隔符,默認值為: '-' .
  • ES_INDEX_SHARDS: 索引分片數。每個碎片及其副本分配給群集中的一台機器。增加碎片的數量集群中的機器將提高讀寫性能。無法更改現有索引的碎片數量,但可以更改新的每日索引。默認為 5
  • ES_INDEX_REPLICAS: 索引碎片副本數。相對條件下數值越大讀性能越好,寫性能越差。默認值為 1 。設置為 0 意味着機器故障很大可能會導致數據丟失。
  • ES_ENSURE_TEMPLATES: 缺失時安裝Zipkin索引模板。將此設置為 false ,當索引模板與預期不匹配時,會導致數據損壞。如果如果將其設置為 true ,則會自動處理數據故障或遷移問題,而不是依靠人工手動來解決。默認為true
  • ES_USERNAME and ES_PASSWORD: Elasticsearch基本身份驗證,默認為空字符串。當X-Pack安全(以前稱為Shield)就位時使用。
  • ES_CREDENTIALS_FILE: ES 認證憑據文件位置, 包含以下屬性,該文件優先級大於 ES_USERNAME 與 ES_PASSWORD 配置
    • zipkin.storage.elasticsearch.username:用戶名
    • zipkin.storage.elasticsearch.password:密碼
  • ES_CREDENTIALS_REFRESH_INTERVAL: 定期刷新 ES_CREDENTIALS_FILE 文件周期(單位:秒),默認值為:1
  • ES_HTTP_LOGGING: 設置后,配置 Elasticsearch API 的 HTTP 日志記錄,包含:Options are BASIC, HEADERS, BODY
  • ES_SSL_NO_VERIFY: 如果為true,則禁用服務器密鑰證書鏈的驗證。這不適合生產。默認為false。
  • ES_TEMPLATE_PRIORITY: 可組合索引模板的優先級值。這僅適用於ES 7.8或更高版本。必須設置為0才能使用可組合模板

:::

使用示例:

簡單連接 ES :

$ STORAGE_TYPE=elasticsearch ES_HOSTS=http://myhost:9200 java -jar zipkin.jar

記錄 ES http 請求日志:

$ STORAGE_TYPE=elasticsearch ES_HTTP_LOGGING=BASIC java -jar zipkin.jar

使用自定義密鑰庫或信任庫 (SSL)

如果您的 Elasticsearch 端點自定義 SSL 配置(例如自簽名)證書,您可以使用以下任何 JSSE 屬性子集 連接。

  • javax.net.ssl.keyStore
  • javax.net.ssl.keyStorePassword
  • javax.net.ssl.keyStoreType
  • javax.net.ssl.trustStore
  • javax.net.ssl.trustStorePassword
  • javax.net.ssl.trustStoreType

使用示例:

$ JAVA_OPTS='-Djavax.net.ssl.keyStore=keystore.p12 -Djavax.net.ssl.keyStorePassword=keypassword -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.trustStore=truststore.p12 -Djavax.net.ssl.trustStorePassword=trustpassword -Djavax.net.ssl.trustStoreType=PKCS12'
$ STORAGE_TYPE=elasticsearch java $JAVA_OPTS -jar zipkin.jar

在該場景下,這些映射到屬性 prefixed zipkin.storage.elasticsearch.ssl.,這會影響用於連接到 Elasticsearch 的 Armeria 客戶端。

上述屬性允許最常見的 SSL 開箱即用的設置。如果您需要更多定制,請提交 issue

自動創建索引

當需要的時候 Zipkin 自動創建 ES 索引。 Elasticsearch 默認 允許 自動創建索引, 你可以在集群中驗證這個設置: action.auto_create_index: false.

MySQL 存儲

Zipkin 的 MySQL 存儲組件支持 5.7 版本
STORAGE_TYPE 設置為 mysql 時,以下屬性生效:

  • MYSQL_DB: MySQL 使用數據庫,默認為 "zipkin".
  • MYSQL_USER and MYSQL_PASS: MySQL 認證信息, 默認值為空.
  • MYSQL_HOST: 默認值為 localhost
  • MYSQL_TCP_PORT: 默認值為 3306
  • MYSQL_MAX_CONNECTIONS: MySQL 最大連接數, defaults to 10
  • MYSQL_USE_SSL: 需要 javax.net.ssl.trustStore and javax.net.ssl.trustStorePassword, 默認為 false.

注意:不建議將此模塊用於生產用途。使用前,需要進行以下環境配置:

# Barracuda supports compression (In AWS RDS, this must be assigned in a parameter group)
$ mysql -uroot -e "SET GLOBAL innodb_file_format=Barracuda"
# This command should work even in RDS, and return "Barracuda"
$ mysql -uroot -e "show global variables like 'innodb_file_format'"

# install the schema and indexes
# sql 文件獲取:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql
$ mysql -uroot -e "create database if not exists zipkin"
$ mysql -uroot -Dzipkin < zipkin-storage/mysql-v1/src/main/resources/mysql.sql

或者,您可以 MYSQL_JDBC_URL 自己使用並指定完整的 JDBC url。請注意,使用上述單獨設置構建的 URL 還將包含以下參數: ?autoReconnect=true&useSSL=false&useUnicode=yes&characterEncoding=UTF-8

示例用法:

$ STORAGE_TYPE=mysql MYSQL_USER=root java -jar zipkin.jar

Throttled 存儲 (實驗性)

這些設置可用於幫助調整 Zipkin 將數據刷新到另一個底層 StorageComponent (例如 Elasticsearch)的速率:

  • STORAGE_THROTTLE_ENABLED: Enables throttling
  • STORAGE_THROTTLE_MIN_CONCURRENCY: Minimum number of Threads to use for writing to storage.
  • STORAGE_THROTTLE_MAX_CONCURRENCY: Maximum number of Threads to use for writing to storage.
  • STORAGE_THROTTLE_MAX_QUEUE_SIZE: How many messages to buffer while all Threads are writing data before abandoning a message (0 = no buffering).

由於此功能是實驗性的,因此不建議在生產環境中運行此功能。

收集器

HTTP 收集器

HTTP 收集器默認啟用。 他支持 POST /api/v1/spans and POST /api/v2/spans.
HTTP 收集器默支持以下配置:

環境變量 屬性 描述
COLLECTOR_HTTP_ENABLED zipkin.collector.http.enabled false 禁用 HTTP 收集器。默認為 true

Scribe (Legacy) Collector

支持 Scribe 的收集器在 COLLECTOR_SCRIBE_ENABLED=true 時啟用. 不鼓勵新站點使用此收集器,因為 Scribe 是一種存檔技術。

環境變量 屬性 描述
COLLECTOR_PORT zipkin.collector.scribe.port 監聽 thrift RPC scribe 請求的端口。默認為 9410
SCRIBE_CATEGORY zipkin.collector.scribe.category 類別 zipkin 將從中消耗。默認為 zipkin

ActiveMQ 收集器

Zipkin 的 ActiveMQ 收集器組件支持 v5.x 版本,當配置 ACTIVEMQ_URL 值時啟用,支持以下屬性配置

環境變量 屬性 描述
COLLECTOR_ACTIVEMQ_ENABLED zipkin.collector.activemq.enabled false 禁用 ActiveMQ 收集器。默認為 true.
ACTIVEMQ_URL zipkin.collector.activemq.url Connection URL 連接設置, 例如 tcp://localhost:61616failover:(tcp://localhost:61616,tcp://remotehost:61616)
ACTIVEMQ_QUEUE zipkin.collector.activemq.queue 從中收集消息的隊列名稱。 默認為 zipkin
ACTIVEMQ_CLIENT_ID_PREFIX zipkin.collector.activemq.client-id-prefix 隊列使用者的客戶端ID前綴。默認為 zipkin
ACTIVEMQ_CONCURRENCY zipkin.collector.activemq.concurrency 並發消費數量。 默認為 1
ACTIVEMQ_USERNAME zipkin.collector.activemq.username ActiveMQ 連接用戶名
ACTIVEMQ_PASSWORD zipkin.collector.activemq.password ActiveMQ 連接密碼

示例用法:

$ ACTIVEMQ_URL=tcp://localhost:61616 java -jar zipkin.jar

Kafka 收集器

Zipkin 的 Kafka 收集器組件支持 v0.10+ 版本,當配置 KAFKA_BOOTSTRAP_SERVERS 值時啟用,支持以下屬性配置

關於 kafka 的新消費者配置請看 這里.

變量 New Consumer Config 描述
COLLECTOR_KAFKA_ENABLED N/A false 禁用 Kafka 收集器。默認為 true.
KAFKA_BOOTSTRAP_SERVERS bootstrap.servers 以逗號分隔的連接配置列表, 例如: 127.0.0.1:9092。無默認值
KAFKA_GROUP_ID group.id 此進程所代表的消費組。默認為 zipkin
KAFKA_TOPIC N/A kafka 消費者 topic 配置。默認為 zipkin
KAFKA_STREAMS N/A topic 消費線程數。默認為 1

示例用法:

$ KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092 java -jar zipkin.jar

其他的 kafka 消費者屬性配置

您可能需要設置其他 Kafka 消費者屬性,除了由收集器定義的具有顯式屬性的那些。在這種情況下,您需要在該屬性名稱前面加上前綴 zipkin.collector.kafka.overrides 並將其作為系統屬性參數傳遞。
例如,要覆蓋 auto.offset.reset 屬性, 你需要設置一個名為 zipkin.collector.kafka.overrides.auto.offset.reset 的屬性:

$ KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092 \
    java -Dzipkin.collector.kafka.overrides.auto.offset.reset=latest -jar zipkin.jar

詳細示例

針對在 Docker 中運行的 Kafka 的示例:

$ export KAFKA_BOOTSTRAP_SERVERS=$(docker-machine ip `docker-machine active`)
# 后台運行 kafka
$ docker run -d -p 9092:9092 \
    --env ADVERTISED_HOST=$KAFKA_BOOTSTRAP_SERVERS \
    --env AUTO_CREATE_TOPICS=true \
    spotify/kafka
# 通過 $KAFKA_BOOTSTRAP_SERVERS 環境變臉啟動 zipkin 服務
$ java -jar zipkin.jar

多個 bootstrap servers 配置:

$ KAFKA_BOOTSTRAP_SERVERS=broker1.local:9092,broker2.local:9092 \
    java -jar zipkin.jar

備用 topic 名稱配置:

$ KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092 \
    java -Dzipkin.collector.kafka.topic=zapkin,zipken -jar zipkin.jar

將 bootstrap servers 指定為系統屬性,而不是環境變量:

$ java -Dzipkin.collector.kafka.bootstrap-servers=127.0.0.1:9092 \
    -jar zipkin.jar

RabbitMQ 收集器

當設置 addressesuri 的時候, RabbitMQ 收集器 會啟動

示例用法:

$ RABBIT_ADDRESSES=localhost java -jar zipkin.jar

gRPC 收集器 (實驗性)

您可以通過設置 COLLECTOR_GRPC_ENABLED=true 啟用 gRPC 收集器端點。 zipkin.proto3.SpanService/Report 端點會和普通 http 服務一樣運行。

示例用法:

$ COLLECTOR_GRPC_ENABLED=true java -jar zipkin.jar

由於此服務是實驗性的,因此不建議在生產環境中運行此服務。

自我追蹤

存在自我跟蹤以幫助解決 zipkin 服務器的性能問題。在生產部署應該將自我跟蹤的應將采樣率從 1.0 (100%) 降低到更小的速率,例如 0.001(0.1% 或千分之一)。

當配置 zipkin.self-tracing.enabled=true, Zipkin 將自動啟動對服務 "zipkin-server" 的 API 的調用進行自我追蹤

變量 屬性 描述
SELF_TRACING_ENABLED zipkin.self-tracing.enabled 設置為 true 以啟用自我跟蹤。默認為 false
SELF_TRACING_SAMPLE_RATE zipkin.self-tracing.sample-rate 要保留的自我跟蹤的百分比,默認為始終采樣 (1.0)。
SELF_TRACING_FLUSH_INTERVAL zipkin.self-tracing.flush-interval 將自跟蹤數據刷新到存儲的時間間隔(以秒為單位)。默認為 1

128 位跟蹤 ID

Zipkin 支持 64 位和 128 位跟蹤標識符,通常序列化為 16 或 32 個字符的十六進制字符串。默認情況下,向 zipkin 報告的具有相同跟蹤 ID 的跨度將被考慮在同一跟蹤中。

例如, 463ac35c9f6413ad48485a3953bb6124 是 128 位的跟蹤 ID,而 48485a3953bb6124 是 64 位的。

注意:跟蹤中的跨度(或父)ID 是 64 位的,無論其跟蹤 ID 的長度或值如何

從 64 位遷移到 128 位跟蹤 ID

除非您在所有應用程序都支持時僅發出 128 位跟蹤,否則將應用程序從 64 位跟蹤 ID 更新到 128 位跟蹤 ID 的過程會導致混合狀態。這種混合狀態通過設置 STRICT_TRACE_ID=false 來緩解。如下所述,遷移完成后,刪除 STRICT_TRACE_ID=false 設置,或者將其設置為 true

以下是一些跟蹤ID,它們可以幫助您了解此設置過程中發生的情況。

  • Trace ID A: 463ac35c9f6413ad48485a3953bb6124
  • Trace ID B: 48485a3953bb6124
  • Trace ID C: 463ac35c9f6413adf1a48a8cff464e0e
  • Trace ID D: 463ac35c9f6413ad

在 64 位環境中,跟蹤 ID 看起來像上面的 B 或 D。當應用程序升級到 128 位檢測並決定創建 128 位跟蹤時,其跟蹤 ID 將類似於上面的 A 或 C。

尚不支持 128 位的應用程序通常只保留跟蹤 ID 最右邊的 16 個字符。發生這種情況時,同一跟蹤可能會報告為跟蹤 ID A 或跟蹤 ID B。

默認情況下,Zipkin 會認為這些是不同的跟蹤 ID,因為它們是不同的字符串。在從 64 位到 128 位跟蹤 ID 的轉換過程中,跨度將出現在兩個 ID 之間。例如,它可能以跟蹤 ID A 開始,但下一躍點可能會將其截斷為跟蹤 ID B。這會使系統無法用於執行升級的應用程序。

解決此問題的一種方法是在所有應用程序都支持之前不使用 128 位跟蹤 ID。這以協調為代價防止了混合情況。另一種方法是設置 STRICT_TRACE_ID=false

當設置 STRICT_TRACE_ID=false ,在對跟蹤進行分組或檢索時,只考慮 32 個字符的跟蹤 ID 中最右邊的 16 個。此設置應僅在從 64 位跟蹤 ID 轉換到 128 位跟蹤 ID 時應用,並在轉換完成后刪除。

請查看 https://github.com/openzipkin/b3-propagation/issues/6 了解 128 位跟蹤標識符上已知開源庫的狀態。

查看源碼 zipkin2.storage.StorageComponent.Builder 了解更多信息

TLS/SSL

如果需要,可以使 Zipkin-server 與 TLS 一起運行:

# assuming you generate the key like this
keytool -genkeypair -alias mysite -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore zipkin.p12 -validity 3650

java -jar zipkin.jar --armeria.ssl.key-store=zipkin.p12 --armeria.ssl.key-store-type=PKCS12 --armeria.ssl.key-store-password=123123 --armeria.ssl.key-alias=mysite  --armeria.ssl.enabled=true --armeria.ports[0].port=9411 --armeria.ports[0].protocols[0]=https

運行在 Docker 中

zipkin-server 的發布版本以 openzipkin/zipkin 發布在 Docker Hub 。點擊 docker-zipkin 查看詳情

本地構建

要從源碼構建和運行服務器,請輸入以下內容

# Build the server and also make its dependencies
$ ./mvnw -T1C -q --batch-mode -DskipTests --also-make -pl zipkin-server clean package
# Run the server
$ java -jar ./zipkin-server/target/zipkin-server-*exec.jar
# or Run the slim server
$ java -jar ./zipkin-server/target/zipkin-server-*slim.jar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM