<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Pandora.jsNode.js 應(yīng)用監(jiān)控管理器

          聯(lián)合創(chuàng)作 · 2023-09-23 15:55

          Pandora.js 阿里巴巴產(chǎn)出的一個(gè)Node.js 應(yīng)用監(jiān)控管理器,可以讓您對(duì)自己的 Node.js 應(yīng)用了若指掌,我們的目標(biāo)就是讓應(yīng)用可管理、可度量、可追蹤。

          同時(shí),這也是阿里巴巴開源的第一個(gè)使用了類型系統(tǒng)的 Node.js 軟件。它使用的是 TypeScript,為 Pandora.js 帶來(lái)了前所未有的邏輯健壯性。

          什么是 Pandora.js

          就像前面提到的一樣,Pandora.js 是一個(gè) Node.js 應(yīng)用監(jiān)控管理器。它集成了多種類型的能力諸如:監(jiān)控、鏈路追蹤、調(diào)試、進(jìn)程管理等等。一個(gè)一個(gè)講太過(guò)凌亂,這里分為幾個(gè)大范疇:

          1. 讓業(yè)務(wù)更易追蹤

            • 基于 Open-tracing 實(shí)現(xiàn)了業(yè)務(wù)鏈路追蹤系統(tǒng)。

            • 實(shí)時(shí)追蹤每個(gè)請(qǐng)求鏈路,讓每次請(qǐng)求不再是黑盒。在運(yùn)行時(shí)直觀的看出接口或頁(yè)面慢在哪里、錯(cuò)在哪里、超時(shí)在哪里。

            • 可以實(shí)時(shí)追蹤多種基礎(chǔ)中間件的用量及錯(cuò)誤,諸如: MySQL、Mongose、Redis 等等。

          2. 讓應(yīng)用更易度量

            • 實(shí)現(xiàn)了軟件行業(yè)上通用的 Metrics 系統(tǒng)。

            • 自帶多種監(jiān)控指標(biāo)實(shí)現(xiàn),從操作系統(tǒng)指標(biāo)到 Node.js Runtime,從 HTTP QPS 到中間件用量。

            • 支持多種監(jiān)控指標(biāo)類型(Metrics 類型),您可以基于這些指標(biāo)類型,輕松地建構(gòu)您的業(yè)務(wù)監(jiān)控指標(biāo)。

          3. 讓系統(tǒng)更加健壯

            • 故障演練擴(kuò)展,可以模擬大部分基礎(chǔ)中間件的不可以用狀態(tài)。這是從淘寶多次大促中沉淀下來(lái)的斷網(wǎng)演習(xí)工具。

            • 遠(yuǎn)程調(diào)試擴(kuò)展,基于 Dashboard 的能力可以實(shí)時(shí)調(diào)試您的線上進(jìn)程,線上業(yè)務(wù)問(wèn)題不再抓瞎。

          4. 讓應(yīng)用更易管理

            • 進(jìn)程管理管理能力,提供了基礎(chǔ)的進(jìn)程守護(hù)和 Cluster 能力。

            • 基礎(chǔ)服務(wù)管理能力來(lái)滿足中間件管理等場(chǎng)景,提供了依賴管理和標(biāo)準(zhǔn)的啟停接口。

            • 提供了進(jìn)程間通信的基礎(chǔ)能力。

          上面提到的全部能力和數(shù)據(jù),全部通過(guò) RESTFul 接口或文本日志透出,您可以輕松的將其集成進(jìn)您的監(jiān)控管理系統(tǒng)。

          業(yè)務(wù)鏈路追蹤 - Trace

          鏈路追蹤是第一個(gè)要介紹的重量級(jí)特性,可以追蹤每個(gè)業(yè)務(wù)請(qǐng)求的全過(guò)程,在運(yùn)行時(shí)直觀的看出接口或頁(yè)面慢在哪里、錯(cuò)在哪里、超時(shí)在哪里。

          聽上去很厲害的樣子,但實(shí)際使用起來(lái)很簡(jiǎn)單。您只需要簡(jiǎn)單的使用 Pandora.js 來(lái)啟動(dòng)您的應(yīng)用,然后打開 Pandora.js dashboard 就可以看到您的業(yè)務(wù)鏈路的全部細(xì)節(jié):

          輕松識(shí)別慢鏈路和錯(cuò)誤鏈路

          undefined

          調(diào)用了,哪里耗時(shí)多,一目了然

          undefined

          應(yīng)用度量

          默認(rèn)的應(yīng)用度量 - Built-in Metrics

          Pandora.js 為您默認(rèn)提供了近百項(xiàng)開箱即用的默認(rèn)監(jiān)控指標(biāo),讓您輕松的開始監(jiān)控您的應(yīng)用。

          默認(rèn)提供了,Node.js Runtime 指標(biāo),操作系統(tǒng)指標(biāo),HTTP Incoming 指標(biāo)等等。

          Node.js 指標(biāo),包含大量運(yùn)行時(shí)指標(biāo)

          undefined

          操作系統(tǒng)指標(biāo),包含 Load、CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、TCP 等各種指標(biāo)

          undefined

          自定義的應(yīng)用度量 - Custom Metrics

          應(yīng)用運(yùn)行在生產(chǎn)環(huán)境,我們有太多想要知道和觀察的數(shù)據(jù)了。以往我們都是寫很多日志文件,查看分析十分麻煩。Pandora.js 的 Metrics 提供了 Gauge(瞬時(shí))、Counter(計(jì)數(shù))、Meter(流速)、Histogram(直方圖) 等多種度量類型,您可以輕易地完成大部分的應(yīng)用或業(yè)務(wù)指標(biāo)。

          下面是一個(gè)例子:

          根據(jù) Email 去 Gravatar 獲取用戶的 Profile。然后我想統(tǒng)計(jì)有多少次成功了,多少次失敗了。(這個(gè)例子在文章后面有附上)

          const {MetricsClientUtil} = require('dorapan'); // dorapan 是 pandora 的一個(gè)客戶端 sdk
          const client = MetricsClientUtil.getMetricsClient(); // 獲得 Metrics 客戶端
          
          // 創(chuàng)建兩個(gè) Counter (計(jì)數(shù))類型的指標(biāo)
          const successCounter = client.getCounter('custom', 'custom.gravatar.success');
          const failCounter = client.getCounter('custom', 'custom.gravatar.fail');
          
          // ...此處省略若干代碼
          
          const userAvatars = {};
          const promises = [];
          for(const user of rows) {
            const profileUrl = gravatar.profile_url(user.email);
             promises.push(urllib.request(profileUrl, {
               followRedirect: true, dataType: 'json'
             }).then((res) => {
               if(typeof res.data === 'object') {
          	   successCounter.inc(1);
                 userAvatars[user.email] = res.data;
               } else {
          	   failCounter.inc(1);
          	 }
             }));
          }
          await Promise.all(promises);

          可以看到 Metrics 中已經(jīng)出現(xiàn)了 Custom 分組:

          undefined

          當(dāng)然還有更多的 Metrics 類型可以實(shí)踐,請(qǐng)具體參見文檔。

          應(yīng)用管理 - 兼容常用的啟動(dòng)模式

          Pandora.js 提供了 fork 和 cluster 兩種模式來(lái)啟動(dòng)應(yīng)用,您只需要在初始化時(shí)簡(jiǎn)單選擇:

          $ pandora init app.js 
          ? Which type do you like to generate ? (Use arrow keys)
            fork 
          ? cluster
          瀏覽 30
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91日韩在线视频 | 影音先锋乱伦电影 | 免费观看性感美女被操逼视频网站 | 91三级视频 | 中文字幕一区二区三 |