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