[大數據] 客戶端/服務端日誌採集和處理

問題描述

  • 如何查日誌?web

    • 服務端/Nginx日誌存儲在各臺服務器本地日誌文件中,只能逐臺機器登錄查看;
    • 客戶端日誌一般由客戶端記錄並上報到服務端,隨着用戶規模的增加,客戶端日誌會佔用至關大的空間,查詢起來也是不便;
    • 某些場景須要join多份很多天志,好比服務端+服務端(websocket服務),客戶端+服務端(廣告點擊效果),如何實現?
  • 如何監控和報警?服務器

    • 線上業務出問題了,會輸出錯誤日誌,如何把這些錯誤日誌快速發送給相關人員?
    • 有時候業務出問題,本身的報警有不夠完善,只能經過一些全局的指標來發現異常(好比Nginx的錯誤率),這種狀況如何及時發現
  • 如何統計業務數據?websocket

    • 個人應用有多少安裝,多少DAU,第二天留存是多少?一般能夠用第三方SDK(如umeng)等來解決,可是更詳細/更個性化的指標如何(好比AB測試)統計?
    • 客戶反饋應用某些功能打不開,是網絡問題?仍是對應的API可用率偏低?仍是其餘狀況?

方案

  • 日誌收集網絡

    • 服務端日誌經過各臺機器上安裝的flume收集,並寫入到Kafka集羣指定topic;
    • 客戶端日誌經過指定API上報到服務端,服務端將這些日誌寫入到Kafka集羣指定topic;
  • 日誌處理(準實時)socket

    • 使用Spark Streaming消費Kafka的消息,並將處理好的數據寫入到指定的存儲地點;測試

      • 日誌中的錯誤信息,按照指定格式彙總後,發送郵件/短信/釘釘信息;
      • 日誌中的指標性數據(好比Nginx的錯誤率),統計以後發送郵件;
      • 日誌中的用戶行爲,解析後按照指定格式寫入Kafka集羣指定topic,供後續服務消費;
      • 日誌實時join,(todo)
  • 日誌處理 (離線)spa

    • 使用flume消費Kafka的消息,並將數據寫入到HDFS;
    • 使用Spark任務將HDFS中的原始數據解析出來,並寫入到事先定義的Hive表;
  • 日誌展現日誌

    • 使用 Hue + Impala,能夠實現Hive數據的查詢(秒級);
    • 編寫Spark統計任務,讀取Hive數據,統計結果寫入到MySQL,並使用superset作圖表展現;
  • 基本數據流以下:blog

    • 基本數據流
相關文章
相關標籤/搜索