1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        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)就是讓?xiě)?yīng)用可管理、可度量、可追蹤。

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

        什么是 Pandora.js

        就像前面提到的一樣,Pandora.js 是一個(gè) Node.js 應(yīng)用監(jiān)控管理器。它集成了多種類(lèi)型的能力諸如:監(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í)直觀(guān)的看出接口或頁(yè)面慢在哪里、錯(cuò)在哪里、超時(shí)在哪里。

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

        2. 讓?xiě)?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)類(lèi)型(Metrics 類(lèi)型),您可以基于這些指標(biāo)類(lèi)型,輕松地建構(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)試您的線(xiàn)上進(jìn)程,線(xiàn)上業(yè)務(wù)問(wèn)題不再抓瞎。

        4. 讓?xiě)?yīng)用更易管理

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

          • 基礎(chǔ)服務(wù)管理能力來(lái)滿(mǎn)足中間件管理等場(chǎng)景,提供了依賴(lài)管理和標(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í)直觀(guān)的看出接口或頁(yè)面慢在哪里、錯(cuò)在哪里、超時(shí)在哪里。

        聽(tīng)上去很厲害的樣子,但實(shí)際使用起來(lái)很簡(jiǎn)單。您只需要簡(jiǎn)單的使用 Pandora.js 來(lái)啟動(dòng)您的應(yīng)用,然后打開(kāi) 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)開(kāi)箱即用的默認(rèn)監(jiān)控指標(biāo),讓您輕松的開(kāi)始監(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)存、磁盤(pán)、網(wǎng)絡(luò)、TCP 等各種指標(biāo)

        undefined

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

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

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

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

        const {MetricsClientUtil} = require('dorapan'); // dorapan 是 pandora 的一個(gè)客戶(hù)端 sdk
        const client = MetricsClientUtil.getMetricsClient(); // 獲得 Metrics 客戶(hù)端
        
        // 創(chuàng)建兩個(gè) Counter (計(jì)數(shù))類(lèi)型的指標(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 類(lèi)型可以實(shí)踐,請(qǐng)具體參見(jiàn)文檔。

        應(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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            午夜操逼图 | 老太婆性生活视频 | 国产精品久久久久久久久久红粉 | 男女在线观看免费视频 | 女人高潮天天躁夜夜躁 | 王者荣耀女角色张嘴流眼泪翻白眼图片 | 亚洲精品无码久久久久久久宅男 | 国产卡一卡二卡三无线乱码新区 | 中文写幕一区二区三区免费观成熟 | 美女色色网站 |