成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Node.js+ELK日志規(guī)范的實現(xiàn)-創(chuàng)新互聯(lián)

一般前端開發(fā)同學(xué),對日志其實不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。即使有,也可能調(diào)用一些第三方的統(tǒng)計,比如百度統(tǒng)計或者別的等。在 Node.js(下文中簡稱node) 推進(jìn)過程中,也發(fā)現(xiàn)我們平常打日志太隨意,該打的日志沒有打,打的一些關(guān)鍵日志缺少必要上下文信息,導(dǎo)致在線上定位問題的時候很困難。

我們擁有10年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站、微信開發(fā)、小程序制作、成都做手機(jī)網(wǎng)站、html5、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。

本文主要梳理了目前我們團(tuán)隊在nodejs開發(fā)中日志方面存在的問題,以及通過統(tǒng)一日志規(guī)范,希望達(dá)到什么樣的效果。

問題

  • node日志不規(guī)范,打日志太隨意
  • 沒有良好的日志格式、約定的字段,在 ELK 里不能很好的解析&檢索 (PS: ELK文章在路上)
  • 由于node對接的后端服務(wù)化,調(diào)用鏈不清晰,定位問題困難
  • 數(shù)據(jù)部門對node日志的使用,沒有明確的記錄。node修改了日志,導(dǎo)致統(tǒng)計數(shù)據(jù)異常

目標(biāo)

  • 規(guī)范日志打印字段&格式,便于 ELK 檢索
  • 增強(qiáng)node上下游(nginx/后端)日志格式,加入惟一 requestId,方便微服務(wù)下定位問題
  • 統(tǒng)計應(yīng)用運(yùn)行情況,性能數(shù)據(jù)
  • 維護(hù)數(shù)據(jù)部門對node日志的使用情況

實現(xiàn)方案

日志類型

參考一些日志的最佳實踐,目前將node日志分為如下幾種類型(scope):

  • desc: 系統(tǒng)啟動、運(yùn)行過程中,打的日志,表明系統(tǒng)的一些啟動日志、啟動參數(shù)等,也包含在 不能 捕獲到http上下文的時候,打的日志
  • stat: 系統(tǒng)性能統(tǒng)計日志,應(yīng)用會定時收集一些性能信息,便于查詢應(yīng)用當(dāng)前狀態(tài)
  • visit: 每個http請求相關(guān)的日志,會包含惟一的 requestId,定位該請求相關(guān)的所有日志
  • biz: 業(yè)務(wù)數(shù)據(jù)相關(guān)日志,主要提供給數(shù)據(jù)統(tǒng)計使用

日志級別

只使用 FATAL、ERROR、WARN、INFO 和 DEBUG 等級。

  • FATAL - 導(dǎo)致程序退出的嚴(yán)重系統(tǒng)級錯誤,不可恢復(fù),當(dāng)錯誤發(fā)生時,系統(tǒng)管理員需要立即介入,一般應(yīng)用代碼 不 使用。
  • ERROR - 運(yùn)行時異常以及預(yù)期之外的錯誤,也需要立即處理,但緊急程度低于FATAL,當(dāng)錯誤發(fā)生時,影響了程序的正確執(zhí)行。需要注意的是這兩種級別屬于服務(wù)自己的錯誤,需要管理員介入,用戶輸入出錯不屬于此分類,請求后端、讀文件、數(shù)據(jù)庫等超時、返回錯誤結(jié)構(gòu),屬于ERROR
  • WARN - 預(yù)期之外的運(yùn)行時狀況,表示系統(tǒng)可能出現(xiàn)問題。對于那些目前還不是錯誤,然而不及時處理也會變成錯誤的情況,也可以記為WARN,如磁盤過低。
  • INFO - 有意義的事件信息,記錄程序正常的運(yùn)行狀態(tài),比如收到請求,成功執(zhí)行。通過查看INFO,可以快速定位WARN,ERROR, FATAL。INFO不宜過多,通常情況下不超過 DEBUG 的10%。
  • DEBUG - 與程序運(yùn)行時的流程相關(guān)的詳細(xì)信息以及當(dāng)前變量狀態(tài)。

日志格式/字段

  • 日志格式統(tǒng)一采用 JSON ,便于 ELK 解析處理。
  • 日志中的各個字段的值,都應(yīng)該盡量使用 英文 ,不使用中文。
  • 日志具體字段,分為 基礎(chǔ)數(shù)據(jù) + 擴(kuò)展數(shù)據(jù)。基礎(chǔ)數(shù)據(jù),是底層日志框架自帶的,所有日志都會包含。擴(kuò)展數(shù)據(jù),不同類型的日志,包含不同的字段。

日志基礎(chǔ)數(shù)據(jù)

目前使用的 node-bunyan 日志庫,官方文檔,基礎(chǔ)字段包含如下:

  • v: integer 。bunyan的日志版本號
  • level: integer。日志級別對應(yīng)的數(shù)字
  • name: string。服務(wù)名
  • hostname: string。主機(jī)名
  • pid: integer。進(jìn)程號
  • time: string。UTC 格式的日期
  • msg: string。日志主體信息

日志擴(kuò)展數(shù)據(jù)

下面定義的各個數(shù)據(jù)類型的擴(kuò)展數(shù)據(jù),不是 全部的字段,僅包含該日志類型下,必需的字段。這些必需的擴(kuò)展字段,需要在 ELK 中建立索引,方便定位各種問題。

  • desc類型日志,擴(kuò)展字段:TODO
  • stat類型日志,擴(kuò)展字段:{ perf: {rss: xxxx, cpu: xxx} }
  • visit類型日志,擴(kuò)展字段:
  • biz
{
  ///////////// 基礎(chǔ)數(shù)據(jù) ////////
  v: 1,
  level: 20,
  ///////////// 擴(kuò)展字段 ////////
  // 標(biāo)志日志類型
  scope: "visit",
  //事件類型:在 visit 的日志類型下,還會細(xì)分不同的事件,比如 client-req、client-res、 普通trace、請求后端service-start, service-end, service-err等。
  event: "trace",
  //客戶端ID,追蹤用戶、設(shè)備會話。在web端,可以是長期的cookie;在APP端,可以是device-id等
  rrdid: "",
  //本次請求的惟一ID,串聯(lián)本次請求的所有相關(guān)日志
  req_id: "some-uuid-for-request",
  //本次請求的用戶ID
  uid: "",
  //本次請求的客戶端相關(guān)數(shù)據(jù),通過 ctx.logger 打日志時,自動加上
  d: {
    url: "/some/path?include-query",
    //客戶端ip
    ip: "10.138.10.1",
    //客戶端的 userAgent
    ua: ""
  },
  //本次node請求的處理時間,毫秒
  tm: 500,
  //該日志相關(guān)的上下文數(shù)據(jù),盡量拼成一個字符串,放在 extra 里
  extra: "",

  //ERROR 級別日志,最好包含error相關(guān)信息,比如請求后端相關(guān)參數(shù)等
  err: {
    msg: "",
    stack: ""
  },

  //調(diào)用后端服務(wù)相關(guān)參數(shù)和響應(yīng)
  service_req: {
    host: "",
    path: "",
    payload: ""
  },
  service_res: {
    //http狀態(tài)碼
    http_code: 200,
    //響應(yīng)時間
    tm: 100,
    //響應(yīng)的body
    body: "",
    //異常信息
    err: ""
  }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:Node.js+ELK日志規(guī)范的實現(xiàn)-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article40/dpdcho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站導(dǎo)航App設(shè)計、微信公眾號移動網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
西华县| 英超| 玉田县| 富裕县| 收藏| 景谷| 万全县| 新乐市| 西城区| 西城区| 台东市| 阳朔县| 长汀县| 大洼县| 凌云县| 扬州市| 双柏县| 颍上县| 仁怀市| 土默特右旗| 尖扎县| 惠安县| 民丰县| 绥化市| 广汉市| 通渭县| 新河县| 泰宁县| 长兴县| 新安县| 梁山县| 双桥区| 资中县| 醴陵市| 大竹县| 宁阳县| 苍南县| 论坛| 旬邑县| 井陉县| 瑞丽市|