Swift
編程
Swift51.com
首頁
社區(qū)
▼
資訊
問答
分享
建議
開源代碼
Xcode下載
Swift教程
hot
登錄
注冊
當前位置:
首頁
> 分享
歡迎加入QQ討論群258996829
蘋果6袋
6
麥子學院
Php學習之應用透明鏈路追蹤工具molten詳解
發(fā)布時間:2017-08-12 14:40 回復:0 查看:2830 最后回復:2017-08-12 14:40
本文和大家分享的主要是php中應用透明鏈路追蹤工具molten相關內容,一起來看看吧,希望對大家
學習php
有所幫助。
molten
molten是應用透明鏈路追蹤工具。
molten追蹤php核心調用庫運行時信息并且按照zipkin/optracing格式輸出信息。
molten提供多種sapi, 多種采樣類型, 上報追蹤狀態(tài), 模塊控制和多種數據落地 類型等功能。
依賴于molten很容易構建基于php語言的 分布式全鏈路追蹤系統(tǒng) 目前已經運行在生產環(huán)境上千臺機器上。
目錄
安裝
以下是你需要做的安裝molten在你的系統(tǒng)上。
phpize
./configuremake && 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 examplesh run.sh
在瀏覽器中打開
http://127.0.0.1:9411/zipkin/
, 能夠看見鏈路信息。
如果你認為上述太簡單,你可以做下面的操作。
cd examplesh 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發(fā)送, 發(fā)送地址依賴 molten.sink_http_uri .
molten.output_type 輸出全部追蹤塊(span)( 1 ) 或者一行輸出一個塊( 2 )。
molten.sink_log_path 寫入文件地址。
molten.sink_http_uri 發(fā)送http地址。
molten.sink_syslog_unix_socket 發(fā)送日志到syslog udp unixdomain日志收集源中。
追蹤塊配置
molten.span_format 追蹤塊格式(span), 不同的追蹤系統(tǒng)選擇 zipkin 或者 opentracing 。
驗證
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);'
可以看到如下輸出:
[{"traceId":"%s","name":"php_curl","version":"php-4","id":"1.1","parentId":"1","timestamp":%d,"duration":%d,"annotations":[{"value":"cs","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}},{"value":"cr","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}}],"binaryAnnotations":[{"key":"http.url","value":"http:\/\/localhost:12345\/","endpoint":{"serviceName":"%s","ipv4":"%s"}},{"key":"error","value":"Failed
connect to localhost:12345; Connection
refused","endpoint":{"serviceName":"%s","ipv4":"%s"}}]},{"traceId":"%s","name":"cli","version":"php-4","id":"1","timestamp":%d,"duration":%d,"annotations":[{"value":"sr","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}},{"value":"ss","timestamp":%d,"endpoint":{"serviceName":"%s","ipv4":"%s"}}],"binaryAnnotations":[{"key":"path","value":"-","endpoint":{"serviceName":"%s","ipv4":"%s"}}]}]
功能
從上述配置中,你可以看到我們提供的功能。
攔截器
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協(xié)議控制探針的行為。
查看molten的狀態(tài), 通過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格式,字段和配置項中的含義是一致的。
{"enable":1,"samplingType":2,"samplingRate":20,"samplingRequest":100}
上報
上報模塊能夠記錄,molten并沒有采樣樣到的關鍵數據信息。
來源:Github
取消引用
您還未登錄,
請先登錄
提 問
熱門帖子
iDev 全平臺開發(fā)者大會門票免費送!限量10張!
蘋果Mac Pro垃圾桶 最低配的ME253CH
本人想買個蘋果電腦搞開發(fā),哪位大俠指點下
求助:failable initializer 'init(name:)' cannot override a non-failable initializer
為慶祝Swift發(fā)布1個月,雨燕社區(qū)正式上線。
在UITextFeild里輸入數據,這個數據怎么做加減乘除?
Swift 高仿喜馬拉雅FM
要成為自由職業(yè)者?先要學會蘋果的Swift哦
用swift實現的調用系統(tǒng)相機,相冊的DEMO
關于嵌入式引用\()
Swift 教程
最新帖子
swift_5.3可以更新了
swift如何實現左滑刪除
IBM Swift Sandbox訪問
Thread 18: Fatal error: 'try!' expression unexpectedly raised an error: Error
跟隨手勢滑動的ScrollableTextField
Swift5.0什么時候出
什么時候出5.0
PerfectTemplate 無法編譯
WWDC19 蘋果宣布全新 UI 框架 SwiftUI
水平滾動視圖Carousel
Xcode 9.4下載
?
Copyright © 2017 Swift 編程 版權所有
推動 Swift 成為最受歡迎的編程語言!
友鏈、商務合作:service??swift51.com
手機版