女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

vivo服務端監(jiān)控架構設計與實踐

PLC工控專欄 ? 來源:加密狗破解 ? 作者:加密狗破解 ? 2022-02-22 09:53 ? 次閱讀

當今時代處在信息大爆發(fā)的時代,信息借助互聯網的潮流在全球自由的流動,產生了各式各樣的平臺系統(tǒng)和軟件系統(tǒng),越來越多的業(yè)務也會導致系統(tǒng)的復雜性。

當核心業(yè)務出現了問題影響用戶體驗,開發(fā)人員沒有及時發(fā)現,發(fā)現問題時已經為時已晚,又或者當服務器的CPU持續(xù)增高,磁盤空間被打滿等,需要運維人員及時發(fā)現并處理,這就需要一套有效的監(jiān)控系統(tǒng)對其進行監(jiān)控和預警。

如何對這些業(yè)務和服務器進行監(jiān)控和維護是我們開發(fā)人員和運維人員不可忽視的重要一環(huán),這篇文章全篇大約5000多字,我將對vivo服務端監(jiān)控的原理和架構演進之路做一次系統(tǒng)性整理,以便大家做監(jiān)控技術選型時參考。

vivo服務端監(jiān)控旨在為服務端應用提供包括系統(tǒng)監(jiān)控、JVM監(jiān)控以及自定義業(yè)務指標監(jiān)控在內的一站式數據監(jiān)控,并配套實時、多維度、多渠道的告警服務,幫助用戶及時掌握應用多方面狀態(tài),事前及時預警發(fā)現故障,事后提供詳實的數據用于追查定位問題,提升服務可用性。目前vivo服務端監(jiān)控累計接入業(yè)務方數量達到200+,本文介紹的是服務端監(jiān)控,我司還有其他類型的優(yōu)秀監(jiān)控包括通用監(jiān)控、調用鏈監(jiān)控和客戶端監(jiān)控等。

1.1 監(jiān)控系統(tǒng)的基本流程

無論是開源的監(jiān)控系統(tǒng)還是自研的監(jiān)控系統(tǒng),整體流程都大同小異。

1)數據采集:可以包括JVM監(jiān)控數據如GC次數,線程數量,老年代和新生代區(qū)域大小;系統(tǒng)監(jiān)控數據如磁盤使用使用率,磁盤讀寫的吞吐量,網絡的出口流量和入口流量,TCP連接數;業(yè)務監(jiān)控數據如錯誤日志,訪問日志,視頻播放量,PV,UV等。

2)數據傳輸:將采集的數據以消息形式或者 HTTP 協議的形式等上報給監(jiān)控系統(tǒng)。

3)數據存儲:有使用 MySQL、Oracle 等 RDBMS 存儲的,也有使用時序數據庫OpenTSDB、InfluxDB 存儲的,還有使用 HBase 直接存儲的。

4)數據可視化:數據指標的圖形化展示,可以是折線圖,柱狀圖,餅圖等。

5)監(jiān)控告警:靈活的告警設置,以及支持郵件、短信、IM 等多種通知通道。

1.2 如何規(guī)范的使用監(jiān)控系統(tǒng)

在使用監(jiān)控系統(tǒng)之前,我們需要了解監(jiān)控對象的基本工作原理,例如JVM監(jiān)控,我們需要清楚JVM的內存結構組成和常見的垃圾回收機制;其次需要確定如何去描述和定義監(jiān)控對象的狀態(tài),例如監(jiān)控某個業(yè)務功能的接口性能,可以監(jiān)控該接口的請求量,耗時情況,錯誤量等;在確定了如何監(jiān)控對象的狀態(tài)之后,需要定義合理的告警閾值和告警類型,當收到告警提醒時,幫助開發(fā)人員及時發(fā)現故障;最后建立完善的故障處理體系,收到告警時迅速響應,及時處理線上故障。

二、vivo服務端監(jiān)控系統(tǒng)架構及演進之路

在介紹vivo服務端監(jiān)控系統(tǒng)架構之前,先帶大家了解一下OpenTSDB時序數據庫,在了解之前說明下為什么我們會選擇OpenTSDB,原因有以下幾點:

1) 監(jiān)控數據采集指標在某一時間點具有唯一值,沒有復雜的結構及關系。

2)監(jiān)控數據的指標具有隨著時間不斷變化的特點。

3)基于HBase分布式、可伸縮的時間序列數據庫,存儲層不需要過多投入精力,具有HBase的高吞吐,良好的伸縮性等特點。

4)開源,Java實現,并且提供基于HTTP的應用程序編程接口,問題排查快可修改。

2.1 OpenTSDB簡介

1)基于HBase的分布式的,可伸縮的時間序列數據庫,主要用途就是做監(jiān)控系統(tǒng)。譬如收集大規(guī)模集群(包括網絡設備、操作系統(tǒng)、應用程序)的監(jiān)控數據并進行存儲和查詢,支持秒級數據采集,支持永久存儲,可以做容量規(guī)劃,并很容易地接入到現有的監(jiān)控系統(tǒng)里,OpenTSDB的系統(tǒng)架構圖如下:

vivo服務端監(jiān)控架構設計與實踐

存儲結構單元為Data Point,即某個Metric在某個時間點的數值。Data Point包括以下部分:

Metric,監(jiān)控指標名稱;

Tags,Metric的標簽,用來標注類似機器名稱等信息,包括TagKey和TagValue;

Value,Metric對應的實際數值,整數或小數;

Timestamp,時間戳。

核心存儲兩張表:tsdb和tsdb-uid。表tsdb用來存儲監(jiān)控數據,如下圖:

vivo服務端監(jiān)控架構設計與實踐

Row Key為Metric+Timestamp的小時整點+TagKey+TagValue,取相應的字節(jié)映射組合起來;列族t下的Qualifier為Timestamp的小時整點余出的秒數,對應的值即為Value。

表tsdb-uid用來存儲剛才提到的字節(jié)映射,如下圖:

vivo服務端監(jiān)控架構設計與實踐

圖中的“001”表示tagk=hots或者tagv=static,提供正反查詢。

2)OpenTSDB使用策略說明:

不使用OpenTSDB提供的rest接口,通過client與HBase直連;

工程端禁用compact動作的Thrd線程;

間隔10秒獲取Redis緩沖數據批量寫入OpenTSDB。

2.2OpenTSDB在實踐中需要關注的點

1)精確性問題

String value = "0.51";
float f = Float.parseFloat(value);
int raw = Float.floatToRawIntBits(f);
byte[] float_bytes = Bytes.fromInt(raw);
int raw_back = Bytes.getInt(float_bytes, 0);
double decode = Float.intBitsToFloat(raw_back);
/**
 * 打印結果:
 * Parsed Float: 0.51
 * Encode Raw: 1057132380
 * Encode Bytes: 3F028F5C
 * Decode Raw: 1057132380
 * Decoded Float: 0.5099999904632568
 */
System.out.println("Parsed Float: " + f);
System.out.println("Encode Raw: " + raw);
System.out.println("Encode Bytes: " + UniqueId.uidToString(float_bytes));
System.out.println("Decode Raw: " + raw_back);
System.out.println("Decoded Float: " + decode);

如上代碼,OpenTSDB在存儲浮點型數據時,無法知悉存儲意圖,在轉化時會遇到精確性問題,即存儲"0.51",取出為"0.5099999904632568"。

2)聚合函數問題

OpenTSDB的大部分聚合函數,包括sum、avg、max、min都是LERP(linear interpolation)的插值方式,即所獲取的值存在被補缺的現象,對于有空值需求的使用很不友好。詳細原理參見OpenTSDB關于interpolation的文檔。

目前vmonitor服務端監(jiān)控使用的OpenTSDB是我們改造后的源碼,新增了nimavg函數,配合自帶的zimsum函數滿足空值插入需求。

2.3vivo服務端監(jiān)控采集器原理

vivo服務端監(jiān)控架構設計與實踐

1)定時器

內含3種采集器:OS采集器、JVM采集器和業(yè)務指標采集器,其中OS及JVM每分鐘執(zhí)行采集和匯聚,業(yè)務指標采集器會實時采集并在1分鐘的時間點完成匯聚重置,3份采集器的數據打包上報至RabbitMQ,上報動作異步超時。

2)業(yè)務指標采集器

業(yè)務指標采集方式有2種:日志輸出過濾和工具類代碼上報(侵入式),日志輸出過濾是通過繼承l(wèi)og4j的Filter,從而獲取指標配置中指定的Appender輸出的renderedMessage,并根據指標配置的關鍵詞、聚合方式等信息進行同步監(jiān)聽采集;代碼上報根據代碼中指定的指標code進行message信息上報,屬于侵入式的采集方式,通過調用監(jiān)控提供的Util實現。業(yè)務指標配置每隔5分鐘會從CDN刷新,內置多種聚合器供聚合使用,包括count計數、 sum求和、average平均、max最大值和min最小值統(tǒng)計。

2.4 vivo服務端監(jiān)控老版本架構設計

vivo服務端監(jiān)控架構設計與實踐

1)數據采集及上報:需求方應用接入的監(jiān)控采集器vmonitor-agent根據監(jiān)控指標配置采集相應數據,每分鐘上報1次數據至RabbitMQ,所采用的指標配置每5分鐘從CDN下載更新,CDN內容由監(jiān)控后臺上傳。

2)計算及存儲:監(jiān)控后臺接收RabbitMQ的數據,拆解后存儲至OpenTSDB,供可視化圖表調用,監(jiān)控項目、應用、指標和告警等配置存儲于MySQL;通過Zookeeper和Redis實現分布式任務分發(fā)模塊,實現多臺監(jiān)控服務協調配合運作,供分布式計算使用。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 監(jiān)控
    +關注

    關注

    6

    文章

    2308

    瀏覽量

    56712
  • 服務器
    +關注

    關注

    13

    文章

    9706

    瀏覽量

    87329
  • vivo
    +關注

    關注

    12

    文章

    3320

    瀏覽量

    64622
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    不用聯網不用編程,PLC通過智能網關快速實現HTTP協議JSON格式與MES等系統(tǒng)平臺雙向數據通訊

    智能網關IGT-DSER支持POST/GET/PUT等多種方法,可同時作為HTTP協議的客戶服務端。作為客戶通訊時將JSON文件提交給HTTP的服務端, 如果
    的頭像 發(fā)表于 05-13 14:40 ?196次閱讀
    不用聯網不用編程,PLC通過智能網關快速實現HTTP協議JSON格式與MES等系統(tǒng)平臺雙向數據通訊

    一文帶你厘清自動駕駛架構差異

    [首發(fā)于智駕最前沿微信公眾號]隨著自動駕駛技術飛速發(fā)展,智能駕駛系統(tǒng)的設計思路也經歷了從傳統(tǒng)模塊化架構大模型轉變。傳統(tǒng)模塊化架構將感知、預測、規(guī)劃和控制等子任務拆分開,分別由不
    的頭像 發(fā)表于 05-08 09:07 ?188次閱讀
    一文帶你厘清自動駕駛<b class='flag-5'>端</b>到<b class='flag-5'>端</b><b class='flag-5'>架構</b>差異

    設備遠程監(jiān)控與預測性維護系統(tǒng)架構設計及應用實踐

    本文探討了在工業(yè)4.0與數字化轉型背景下,設備管理系統(tǒng)從傳統(tǒng)人工巡檢向智能運維的深刻變革。文章從技術架構、實施路徑和典型應用三個方面深入解析了設備遠程監(jiān)控與預測性維護系統(tǒng)的實現方法。
    的頭像 發(fā)表于 04-15 10:16 ?210次閱讀
    設備遠程<b class='flag-5'>監(jiān)控</b>與預測性維護系統(tǒng)<b class='flag-5'>架構設</b>計及應用<b class='flag-5'>實踐</b>

    芯片架構設計的關鍵要素

    芯片架構設計的目標是達到功能、性能、功耗、面積(FPA)的平衡。好的芯片架構能有效提升系統(tǒng)的整體性能,優(yōu)化功耗,并確保在成本和時間的限制下完成設計任務。
    的頭像 發(fā)表于 03-01 16:23 ?521次閱讀

    面向服務的整車EE架構(SOA)設計開發(fā)咨詢服務

    經緯恒潤多年來一直致力于為客戶提供先進電子電氣架構解決方案,近年來,經緯恒潤在國內率先開展整車SOA架構的技術研發(fā)和業(yè)務布局,參與多款SOA架構下量產車型的研發(fā),積累了豐富的SOA架構設
    的頭像 發(fā)表于 12-12 15:11 ?957次閱讀
    面向<b class='flag-5'>服務</b>的整車EE<b class='flag-5'>架構</b>(SOA)設計開發(fā)咨詢<b class='flag-5'>服務</b>

    SSR與微服務架構的結合應用

    隨著互聯網技術的快速發(fā)展,前端技術棧不斷更新迭代,后端架構也經歷了從單體應用到微服務的變革。在這個過程中,服務端渲染(SSR)作為一種提升頁面加載速度和SEO性能的技術,與微服務
    的頭像 發(fā)表于 11-18 11:34 ?748次閱讀

    GPU服務器AI網絡架構設

    眾所周知,在大型模型訓練中,通常采用每臺服務器配備多個GPU的集群架構。在上一篇文章《高性能GPU服務器AI網絡架構(上篇)》中,我們對GPU網絡中的核心術語與概念進行了詳盡介紹。本文
    的頭像 發(fā)表于 11-05 16:20 ?1083次閱讀
    GPU<b class='flag-5'>服務</b>器AI網絡<b class='flag-5'>架構設</b>計

    深入理解 Llama 3 的架構設

    在人工智能領域,對話系統(tǒng)的發(fā)展一直是研究的熱點之一。隨著技術的進步,我們見證了從簡單的基于規(guī)則的系統(tǒng)到復雜的基于機器學習的模型的轉變。Llama 3,作為一個假設的先進對話系統(tǒng),其架構設計融合了
    的頭像 發(fā)表于 10-27 14:41 ?1119次閱讀

    邊緣計算架構設計最佳實踐

    邊緣計算架構設計最佳實踐涉及多個方面,以下是一些關鍵要素和最佳實踐建議: 一、核心組件與架構設計 邊緣設備與網關 邊緣設備 :包括各種嵌入式設備、傳感器、智能手機、智能攝像頭等,負責采
    的頭像 發(fā)表于 10-24 14:17 ?990次閱讀

    架構與設計 常見微服務分層架構的區(qū)別和落地實踐

    架構風格越傾向于清晰的職責定位,且讓領域模型成為架構的核心。 基于這些架構風格,在軟件架構設計過程中又有非常多的架構分層模型。 傳統(tǒng)三層
    的頭像 發(fā)表于 10-22 15:34 ?580次閱讀
    <b class='flag-5'>架構</b>與設計 常見微<b class='flag-5'>服務</b>分層<b class='flag-5'>架構</b>的區(qū)別和落地<b class='flag-5'>實踐</b>

    調試stm32的TCP服務端程序,會導致hard fault的原因?

    最近調試stm32的TCP服務端程序,遇到了想不明白的問題,具體過程如下: 使用的是rt-thread4.1.0的內核; 通過串口和esp32-c3通信; 啟用at_socket; 建立tcp
    發(fā)表于 09-13 06:59

    使用NS1串口服務器HTTP模式上傳服務器數據

    HTTP協議工作于客戶-服務端架構之上。瀏覽器作為HTTP客戶通過URL向HTTP服務端即Web服務
    的頭像 發(fā)表于 08-30 12:36 ?856次閱讀
    使用NS1串口<b class='flag-5'>服務</b>器HTTP模式上傳<b class='flag-5'>服務</b>器數據

    ESP32-LyraTD-MSC pipeline_raw_http例子能夠跑起來,wav也能上傳到服務端,為什么沒有聲音?

    IDF版本是v5.2.1,直接編譯adf的pipeline_raw_http,沒有任何問題,燒寫也順利。 長按rec錄制音頻,放開rec后,wav也上傳到服務端了。 但是在電腦上播放wav文件,沒有任何聲音。 請問各位大佬,這是怎么回事。
    發(fā)表于 06-28 08:01

    請問ESP32作為藍牙服務端如何修改MTU?

    我們的工程把esp32當作藍牙服務端讓電腦去連,由于一些老電腦上沒有藍牙,要用外置藍牙驅動,默認MTU只有23,但是說明上驅動是支持最大mtu的,所以有什么辦法可以通過服務端去修改mtu嗎
    發(fā)表于 06-27 07:47

    鴻蒙開發(fā)Ability Kit程序框架服務:FA模型訪問Stage模型DataShareExtensionAbility

    無論FA模型還是Stage模型,數據讀寫功能都包含客戶服務端兩部分。
    的頭像 發(fā)表于 06-25 14:30 ?650次閱讀
    鴻蒙開發(fā)Ability Kit程序框架<b class='flag-5'>服務</b>:FA模型訪問Stage模型DataShareExtensionAbility