mysql鏈路追蹤工具 Molten

2021-10-20 23:34:33 字數 3502 閱讀 7656

軟體簡介

molten 是應用透明鏈路追蹤工具。

molten 追蹤php核心呼叫庫執行時資訊並且按照zipkin/optracing格式輸出資訊。

molten 提供多種sapi, 多種取樣型別, 上報追蹤狀態, 模組控制和多種資料落地 型別等功能。

依賴於molten

很容易構建基於php語言的分布式全鏈路追蹤系統

目前已經執行在生產環境上千臺機器上。

安裝以下是你需要做的安裝molten在你的系統上。

phpize

./configure

make && make install

make install 複製 molten.so 到確切的位置,

但是你還需要開啟模組在php配置中,編輯你自己的php.ini或者新增molten.ini在/etc/php5/conf.d,

並且新增如下內容:extension=molten.so。

在./configure 階段, 你也可以新增 --enable-zipkin-header=yes 支援zipkin b3 header。

快速開始

cd example

sh run.sh

在瀏覽器中開啟 能夠看見鏈路資訊。

如果你認為上述太簡單,你可以做下面的操作。

cd example

sh complex.sh

怎麼樣,是不是很酷。

注意 如果沒有看到詳細資訊,那麼endtime選項中新增1小時。

配置基礎配置

molten.enable 1開啟0關閉, 預設 1。

molten.service_name 設定應用服務名, 預設default。

molten.tracing_cli 1追蹤cli模式下資訊, 0關閉, 預設0。

取樣配置

molten.sampling_type 型別型別, 1取樣率控制, 2通過每分鐘request數, 預設是1。

molten.sampling_request 取樣型別是請求數取樣,每分鐘的取樣請求數, 預設是10。

molten.sampling_rate_base 取樣型別是取樣率時,每個請求的取樣機率, 預設是256。

控制模組配置

molten.notify_uri 通知管理中心的uri。

上報模組配置

上報模組使用和資料模組相同的輸出型別。

molten.report_interval 資料模組呼叫間隔, 預設 60。

molten.report_limit 資料上報請求上限, 預設 100。

資料模組

molten.sink_type 資料落地型別, 1 寫入檔案, 檔案位址依賴molten.sink_log_path, 2

寫入到標準輸出, 3 寫入到syslog中, 4 通過curl傳送, 傳送位址依賴 molten.sink_http_uri.

molten.output_type 輸出全部追蹤塊(span)(1) 或者一行輸出乙個塊(2)。

molten.sink_log_path 寫入檔案位址。

molten.sink_http_uri 傳送http位址。

molten.sink_syslog_unix_socket 傳送日誌到syslog udp unixdomain日誌收集源中。

追蹤塊配置

molten.span_format 追蹤塊格式(span), 不同的追蹤系統選擇zipkin 或者 zipkin_v2或者

opentracing。

函式molten_span_format() 獲取當前追蹤系統span格式, 返回zipkin或者opentracing字串。

molten_get_traceid() 獲取當前上下文的traceiid,返回16進製制的字串。

molten_set_traceid($trace_id) 設定當前上下文的額traceiid, 無返回。

驗證php -d extension=molten.so -d molten.enable=1 -d molten.sink_type=2 -d molten.tracing_cli=1 -d molten.sampling_rate=1 -r '$c=curl_init("http://localhost:12345");curl_exec($c);'

可以看到如下輸出:

[},}],"binaryannotations":[},}]},},}],"binaryannotations":[}]}]

功能從上述配置中,你可以看到我們提供的功能。

***molten 攔截 curl,pdo,mysqli,redis,mongodb,memcached擴充套件,構建執行時追蹤資訊. 支援全鏈路追蹤功能,

molten 替換了curl_exec,curl_setopt,curl_setopt_array函式, 並且在請求中新增了鏈路頭(x-w-traceid,

x-w-spanid and so on)。

定製化的鏈路格式, 支援兩個流行格式(zipkin 和 opentracing)。

取樣兩種不同的取樣方式並且能夠通過控制模組進行修改。

資料落地

molten當前支援3種資料落地方式,標準輸出,檔案,http。並且能夠選擇輸出的位置。

控制使用http協議控制探針的行為。

檢視molten的狀態, 通過get方法請求http://domain/molten/status。

輸出內容如下,已經適配了prometheus格式。

# help molten_request_all number of all request.

# type molten_request_all counter

molten_request_all %d

# help molten_request_capture number of request be capture.

# type molten_request_capture counter

molten_request_capture %d

# help molten_sampling_type the type of sampling.

# type molten_sampling_type gauge

molten_sampling_type %d

# help molten_sampling_rate the rate of sampling.

# type molten_sampling_rate gauge

molten_sampling_rate %d

# help molten_sampling_request the request be capture one min.

# type molten_sampling_request gauge

molten_sampling_request %d

修改molten取樣方式, 使用post方法請求http://domain/molten/status。

資料是json格式,欄位和配置項中的含義是一致的。

上報上報模組能夠記錄,molten並沒有採樣樣到的關鍵資料資訊。

go 鏈路追蹤 go micro 鏈路追蹤

本片介紹go micro中使用jaeger作為鏈路追蹤的使用 jaeger相關知識請見官方文件,這裡使用docker啟動gaeger,作為測試使用 啟動jaeger docker run d p 6831 6831 udp p 16686 16686 jaegertracing all in one...

鏈路追蹤 一文讀懂鏈路追蹤

原文 在微服務橫行的時代,服務化思維逐漸成為了程式設計師的基本思維模式,但是,由於絕大部分專案只是一味地增加服務,並沒有對其妥善管理,當介面出現問題時,很難從錯綜複雜的服務呼叫網路中找到問題根源,從而錯失了止損的 時機。而鏈路追蹤的出現正是為了解決這種問題,它可以在複雜的服務呼叫中定位問題,還可以在...

鏈路追蹤 鏈路追蹤技術的應用及實踐

分布式架構的興起推動了一些新技術的發展。其中鏈路追蹤技術以其在apm領域的優異表現,成為了分布式架構中不可或缺的一部分。在本文中,我們將談談它的一些經典應用場景,以及筆者所在的團隊如何利用鏈路追蹤技術提公升團隊的研發效能。如圖所示,在微服務體系中,乙個請求往往需要多個服務協作處理。凡事有利必有弊,這...