1. 程式人生 > >微服務業務監控和行為分析怎麼做?試試日誌埋點

微服務業務監控和行為分析怎麼做?試試日誌埋點

一、說明

網際網路公司一般都會有專門的資料團隊對公司的一些業務指標負責;為了拿到這些基本的業務指標,一般也要工程團隊去配合做一些資料採集工作,於是埋點誕生了。
 

埋點的方式有很多種,本文主要介紹 日誌埋點 這種方式以及實現思路和案例。

日誌埋點 就是通過程式列印 log 日誌的方式進行業務/行為資料的記錄

 

二、總體架構

通過 日誌埋點 來實現業務監控和行為分析主要需要以下4個步驟

  1. 資料生成(埋點)
  2. 資料收集
  3. 資料解析(結構化)
  4. 資料落盤
  5. 資料使用(展示/分析)

 

三、方案說明

3.1. 資料生成

日誌資料的生成直接使用 Logback 等日誌框架就可以了,可以自己封裝公共方法、aop、註解等方式來生成指定的埋點日誌

但是為了便於後面的資料解析,日誌資料需要規範先行

  1. 所有的埋點日誌必需約定好統一的格式,例如:{時間}|{來源}|{物件id}|{型別}|{物件屬性(以&分割)}

    按上面的格式生成的日誌為:
    2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10

  2. 避免埋點的日誌檔案和系統本身輸出的日誌混淆

    埋點的日誌輸出的目錄、檔案等需要和應用本身的日誌分離,通過 Logback 的配置就能實現

 

埋點案例

生成日誌

閘道器埋點使用者請求

 

3.2. 資料收集

關於日誌資料的收集可選擇的中介軟體比較多,除了圖中的 FileBeat 之外還有 FlumeFluentdrsyslog 等;需要每臺伺服器都部署一個收集中介軟體。

每臺伺服器部署一個就行了,就算一臺伺服器中啟了多個微服務也是可以一齊收集

PS:日誌收集後面的 訊息佇列 並不是必需的可以去掉,但是增加 訊息佇列 後有以下兩個優點

  1. 削峰填谷:減輕後面日誌解析的壓力
  2. 資料共享:日誌資料除了提供給日誌系統之外,可以增加消費端的同時提供給其他地方使用,如流計算等

 

3.3. 資料解析

使用 Logstash

的grok表示式解析日誌資料並結構化,以上面的日誌資料為例

2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10

結構化後的日誌資料為:

{
    timestamp: '2019-11-07 10:32:01',
    appName: 'api-gateway',
    resouceid: '1',
    type: 'request-statistics',
    ip: '171.221.203.106',
    browser: 'CHROME',
    operatingSystem: 'WINDOWS_10'
}

 

3.4. 資料落盤

通過 Logstash 能自動建立 Elasticsearch 索引並以天為單位分片

可以通過索引模板來指定每個欄位的型別和分詞器等屬性

 

3.5. 資料使用

日誌資料落盤到 Elasticsearch 後,就可以通過聚合查詢等方式實時顯示監控資料或者分析日誌資料

監控案例

聚合查詢邏輯可參考 https://gitee.com/zlt2000/microservices-platform

 

四、總結

日誌埋點 只是其中一種埋點手段而已,優點是系統無入侵且靈活;日誌收集、解析、落盤等都可以靈活搭配選擇不同的中介軟體,並且不需要修改源系統的程式碼;並且可以方便對接其他分析平臺(例如: 大資料平臺)

PS:業務監控是否可以不做日誌埋點,直接查詢業務的資料庫呢?(不建議這樣做)

  1. 使用日誌埋點能實現監控資料與業務資料分離,監控平臺不會影響或增加業務資料庫的壓力
  2. 使用日誌埋點能方便實現實時業務資料預警

    舉個栗子:日誌收集後面新增流計算中介軟體,計算某個時間視窗內優惠卷日誌的數量或者金額大於某個閥值,則發出預警

 

推薦閱讀

  • 日誌排查問題困難?分散式日誌鏈路跟蹤來幫你
  • zuul整合Sentinel最新的閘道器流控元件
  • Spring Cloud開發人員如何解決服務衝突和例項亂竄?
  • Spring Cloud同步場景分散式事務怎樣做?試試Seata
  • Spring Cloud非同步場景分散式事務怎樣做?試試RocketMQ
  • Spring Cloud Gateway的動態路由怎樣做?整合Nacos實現很簡單

 
掃碼關注有驚喜!

相關推薦

服務業務監控行為分析怎麼試試日誌

一、說明 網際網路公司一般都會有專門的資料團隊對公司的一些業務指標負責;為了拿到這些基本的業務指標,一般也要工程團隊去配合做一些資料採集工作,於是埋點誕生了。   埋點的方式有很多種,本文主要介紹 日誌埋點 這種方式以及實現思路和案例。 日誌埋點 就是通過程式列印 log 日誌的方式進行業務/

建設滿足新形勢下保險業務需求的服務管理平臺配套工具規範,能夠支撐服務的開發、執行生命週期管理。

轉載本文需註明出處:EAWorld,違者必究。 引言: 根據保險行業發展趨勢,目前保險交易已經呈現高頻化、碎片化、場景化等特點,對系統的處理能力、容量、業務連續性、需求相應速度、運維響應速度提出了更高的要求。業務模式創新重塑導致系統更新頻繁、應用複雜度急劇升高,傳統架構不堪重負,敏捷開發和快速

服務、SOA API對比與分析

0 系列目錄 1 簡介 在對比微服務架構和麵向服務的架構(SOA)時,幾乎不可能在它們彼此的關係上達成一致意見。如果應用程式程式設計介面(API) 再加入混戰,就會讓理解它們的差異變得更加困難。一些人可能會說這些概念完全不同,它們各自解決自己的一組問題,而且擁有獨特的應用範圍。其他人可能更寬厚,認為它們實

Eureka服務雲架構源碼分析

主動 命名 pri com sel 實例 ups point serve 在看具體源碼前,我們先回顧一下之前我們所實現的內容,從而找一個合適的切入口去分析。首先,服務註冊中心、服務提供者、服務消費者這三個主要元素來說,後兩者(也就是Eureka客戶端)在整個運行機制中是大部

服務之springClouddocker-Eureka(一)

決策 config snap service 每次 entry eas pen end 前言 本文記錄怎麽搭建服務註冊中心eureka,然後打包成docker鏡像,用docker swarm部署eureka集群 1、環境spring boot 1.5.1.RELEASE,是

服務:隔離熔斷到底怎麼實現的??

聊聊微服務的隔離和熔斷 原創: 碼農翻身劉欣 碼農翻身 原文連結:https://mp.weixin.qq.com/s/PmU14UsJOb4IiH_81RlJMA 今天來聊一聊微服務的隔離和熔斷是怎麼做的, 如果你的專案沒有用微服務,不要走開,可以看看對一個問題的解決思路。 如果實在是

Atitit 服務的優點拆分 目錄 1. 服務架構五大優勢 崛起勢頭不可擋 4 1 1.1. 1、複雜度可控 6避免“盲人摸象” 7 2 1.2. 2、靈活可擴充套件 7 2 1.3. 3、獨立部

Atitit 微服務的優點和拆分 目錄 微服務架構五大優勢 崛起勢頭不可擋4 1、複雜度可控6避免“盲人摸象”7 2、靈活可擴充套件7 3、獨立部署7

服務業務開發三個難題-拆分、事務、查詢(下)

  轉載自賀卓凡 上集我們闡述了使用微服務體系架構的關鍵障礙是領域模型,事務和查詢,這三個障礙似乎和功能拆分具有天然的對抗。只要功能拆分了,就涉及這三個難題。 然後我們向你展示了一種解決方案就是將每個服務的業務邏輯實現為一組DDD聚合。然後每個事務只能更新或建立一個單獨的聚合。

服務業務開發三個難題-拆分、事務、查詢(上)

  轉載自賀卓凡 微服務架構變得越來越流行了。它是模組化的一種方法。它把一整塊應用拆分成一個個服務。它讓團隊在開發大型複雜的應用時更快地交付出高質量的軟體。團隊成員們可以輕鬆地接受到新技術,因為他們可以使用最新且推薦的技術棧來實現各自的服務。微服務架構也通過讓每個服務都被部署在最佳

持續部署服務的實踐準則

當我們討論微服務架構時,我們通常會和Monolithic架構(單體架構 )進行比較。 在Monolithic架構中,一個簡單的應用會隨著功能的增加、時間的推移變得越來越龐大。當Monoltithic App變成一個龐然大物,就沒有人能夠完全理解它究竟做了什麼。此時

【本人禿頂程式設計師】中小型網際網路公司服務實踐-經驗教訓

←←←←←←←←←←←← 我都禿頂了,還不點關注! 在開始之前我們先介紹一下幾個概念,什麼是微服務,它的特點是什麼? Spring Boot/Cloud都做了那些事情?他們三者之間又有什麼聯絡? 技術背景 什麼是微服務 微服務的概念源於2014年3月Martin Fowler

服務監控(monitor)

       傳統的軟體屬於單塊應用的世界。微服務的是多服務多應用的世界。要掌握單塊應用的執行情況,只會發生單一的故障點,要追蹤問題的發生和修訂bug相對較易。而微服務的世界裡,由於其執行個體多、部署方式多樣,問題點會出現在各處,查其日誌很多,要從大量且相互隔離的日誌中找到問

【陌上軒客】技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業規劃:勵志成為一名出色的伺服器端系統架構師。

陌上軒客 技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器和自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業...

構建服務-第一章-什麼是服務_003彈性可伸縮性

系統彈性 在系統彈性工程中一個很重要的概念是隔板。如果系統的一個模組失敗了,但是這個失敗沒有串聯地影響到其他模組,那麼就可以隔離問題,讓其他模組繼續工作。很顯然微服務的邊界就成了系統的隔板。在一個單一服務系統中,如果服務失敗,那麼整個系統停止工作,當然我們可以把它部署到多

Web伺服器免費開源日誌分析工具行為分析工具

5.google analytics 官方地址:http://www.google.com/intl/zh-CN_ALL/analytics/ Google Analytics是著名網際網路公司Google為網站提供的資料統計服務。可以對目標網站進行訪問資料統計和分析,並提供多種引數供網站擁有者使用。 6.u

Spring Cloud + Kubernetes 服務框架原理實踐

早在半年前,公司開始推行容器化部署方案 AppOS,雖然釋出介面過於極客,十分晦澀,不過仔細研究起來真的覺得十分強大,容器化推行後,計算資源(CPU、記憶體)的利用率可以極大提高,降低伺服器數量,從而節約技術成本。恰巧,若干個朋友所在創業公司最近也在嘗試做微服務、容器化。架構

中小型網際網路公司服務實踐-經驗教訓

什麼是微服務微服務的概念源於2014年3月Martin Fowler所寫的一篇文章“Microservices”。微服務架構是一種架構模式,它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調、互相配合,為使用者提供最終價值。每個服務執行在其獨立的程序中,服務與服務間採用

利用資料庫郵件服務實現監控預警

背景     現在越來越多的企業、公司要求對於資料庫實現7*24小時的資料庫監控,一般情況下采用的就是第三方的平臺來實現郵件和手機簡訊的監測提醒。前幾日公司新上了一臺伺服器,急於部署程式還沒來得及搭建其他相關平臺,為了更好的監控資料庫,暫時用SQL Server自帶的郵件服務來實現對資料庫的監控和預警。下面簡

一分鐘瞭解服務的好處陷阱

微服務架構設計代表了一種架構設計思想,配合現在的容器技術(如Docker),可在軟體開發流程、部署、服務維護等各方面產生效率提升。 但不一定所有的業務場景都適合微服務,有時候非常簡單的業務場景下,微服務反而會降低效率。什麼是微服務,其特性,好處及陷阱,是本文要討論的內容

服務架構設計 第六步: 服務的 User Stories 的分析、設計與定義完成

2016.9.12, 深圳, Ken Fang 特性負責人, 說服開發與測試人員, 能認同微服務中的 User Story 的價值, 並使開發與測試人員能從產品外部的視角, 清楚的明白: 外部使用者、系統、裝置或事件所期望的微服務中的 User Story 完成的定義或標準