歡迎加入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
您還未登錄,請先登錄

熱門帖子

最新帖子

?