您好,登錄后才能下訂單哦!
<h2 id="molten">Molten 功能簡介以及使用指南</h2>
<p>Molten項目地址:https://github.com/chuan-yun/Molten</p>
<h3 id="">簡介</h3>
<p>現(xiàn)今隨著應用間調用的復雜化,php 開發(fā)者們在復雜調用鏈路追蹤上并沒有特別好的工具和方法, 流行的php問題定位工具譬如phptrace,xhprof等并不會針對于遠程調用進行重點分析,比較適合單機應用。當php分布式系統(tǒng)需要明確組件調用關系的時候,這些工具很難發(fā)揮作用。 </p>
<p>在這里我們拋出google在2010年提出的概念<code>dapper-大規(guī)模分布式應用追蹤系統(tǒng)</code>,其中提出的分布式追蹤系統(tǒng)的構想已經被一些公司或組織所實現(xiàn),譬如<code>zipkin</code> 、<code>opentracing</code>。但是遺憾的是,現(xiàn)今沒有比較讓人認可應用透明php追蹤方式。</p>
<p>chuan-yun組織實現(xiàn)的php擴展<a >Molten</a>已經解決了這個問題,它部署簡單、應用透明、配置項豐富、兼容zipkin和opentracing標準、能夠追蹤眾多基礎組件,并且通過修改http請求header實現(xiàn)了應用透明的鏈路串聯(lián)。</p>
<h3 id="-1">快速開始</h3>
<p>我們能夠用molten追蹤php應用http、redis、mysql、memcached、mongodb等組件的調用信息。</p>
<p>請看項目簡介中“QuickStart”部分,安裝完molten擴展之后, 只需要兩個步驟就可以看到追蹤的鏈路信息。 </p>
<p>cd example && sh run.sh:</p>
<p>在瀏覽器中打開http://127.0.0.1:9411/zipkin/ 就可以看到鏈路信息。腳本中使用了curl請求一個不存在的http地址,已經在圖中標紅:</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118550.jpg" alt="p_w_picpath" /></p>
<p>也就是說我們部署完molten,配置好zipkin server 就能夠搭建一個簡單的全鏈路追蹤系統(tǒng),方便易用。</p>
<p>下圖是我們<a >chuanyun</a>系統(tǒng)的截圖,其中memcache, redis,mysql的調用一覽無余,并且不需要用戶修改任何業(yè)務代碼。</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118553.jpg" alt="p_w_picpath" /></p>
<p>連接的數(shù)據庫信息也是一覽無余:</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118560.jpg" alt="p_w_picpath" /></p>
<p>上述示例太?。吭蹅冋故疽粋€復雜的鏈路追蹤。</p>
<p>示例中啟動了3個server,t1<em>server和t2</em>server都去請求base_server 這些http 請求構建成了一個完整的鏈路信息,構建了一個php全鏈路系統(tǒng)就是這么就簡單??!</p>
<p>Cd example && sh complex.sh:</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118574.jpg" alt="p_w_picpath" /></p>
<p>其中http的詳細信息也會體現(xiàn)出來:</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118581.jpg" alt="p_w_picpath" /></p>
<p>chuan-yun系統(tǒng)通過Molten,最終能夠構建出一個應用、接口間的拓撲關系:</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118587.jpg" alt="p_w_picpath" /></p>
<p>研發(fā)們的同學們再也不用為調用關系發(fā)愁了,我們可以監(jiān)控到你想要的?。?!</p>
<p>以上功能是不是很cool, Molten能夠幫助你了解應用系統(tǒng)調用的方方面面,讓你站在一個更高的位置進行系統(tǒng)的調優(yōu)。</p>
<h3 id="-2">功能</h3>
<p>現(xiàn)在<a >Molten</a>提供curl、pdo、mysqli、redis、mongodb、memcached等組件的攔截,這些信息攔截都是應用透明,開箱即用,輸出zipkin格式非常方便。我們接下來還會增加攔截的組件,如果你也有想要攔截的組件,可以提issue給我們偶??!項目地址<a >Molten</a>。</p>
<p>查看molten是否正常啟動了,可以訪問:http://your.domain/molten/status:</p>
<p><img src="https://cache.yisu.com/upload/information/20200310/64/118594.jpg" alt="p_w_picpath" /></p>
<p>面輸出內容格式讓人感到疑惑,其實這個是prometheus監(jiān)控exporter輸出格式,輸出這種格式方便和prometheus集成。</p>
<p>還可以通過POST http://your.domain/molten/status修改探針采樣的方式,內容如下:</p>
<pre><code class="json language-json">{"enable":1,"samplingType":2,"samplingRate":20,"samplingRequest":100}
</code></pre>
<p>其中samplingType是采樣類型:1是根據采樣率采樣,2是根據每分鐘的請求數(shù)。</p>
<p>samplingRate是采樣率,即多少個請求采樣一個,samplingRequest是每分鐘的前多少個請求被采樣。采樣是降低性能損耗的有效方式,通過還能夠根據系統(tǒng)的承載量動態(tài)的調整。</p>
<p>還可通過molten.sink_type設置數(shù)據輸出方式, 1是輸出到文件中, 2輸出到標準輸出,4 通過http發(fā)送。</p>
<p>Molten在phptrace數(shù)據分析的基礎上進行大量的開發(fā), 本身性能在開啟采樣率的情況下影響較小。應用影響如下: </p>
<p>開啟探針傳遞鏈路信息對比(采樣率) | 性能影響
-- | --
1 | 21%
4 | 12%
8 | 8%
32 | 6%
64 | 9%
256 | 8%</p>
<h3 id="-3">貢獻</h3>
<p>這個項目是不是勾起了你的好奇心? 來吧讓你的issue砸向我們,我們會提供更加豐富和完善的功能。最后請不要吝惜你的start :)。</p>
<h3 id="-4">加入我們</h3>
<p><a >微信群</a></p>
<h3 id="-5">項目文檔</h3>
<p>項目地址:https://github.com/chuan-yun/Molten</p>
<p>中文文檔:https://github.com/chuan-yun/Molten/blob/master/README_ZH.md</p>
<p>英文文檔:https://github.com/chuan-yun/Molten/blob/master/README.md</p>
<p>穿云組織:https://github.com/chuan-yun</p>
<p>穿云doc:https://www.gitbook.com/book/chuan-yun/chuanyun-docs/details</p>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。