企業級生產監控預警平臺(實戰簡介)

寫在前面

學習這個實戰項目也已經過去很久了,本來一直也想以文字的方式將項目中的 點 進行記錄下來。有什麼問題,歡迎大家一起留言討論。

關於這個系列的 所有文章,有新的想法,我也會及時做更新

項目效果

主要是想監控生產上的實時日誌,日誌可以是Linux的系統日誌,MySQL數據庫的日誌,也可以是我們生產項目的業務日誌,比如:SpringBoot 項目中打的日誌。這些日誌都可以作爲本項目的原始日誌。

對一些即將發生的問題 發出預警
-->
這樣就可以對一些即將出現的問題可以提前預知,這樣我們就可以在問題實際發生前進行解決
--> 
預警目標:將問題 扼殺在發生前

爲啥要做預警?可能公司有服務的SLA保障!

    SLA: 99.99%
	sla:允許服務宕機時間 

	9越多代表全年服務可用時間越長服務更可靠,停機時間越短

	全年拿365天做計算吧,看看幾個9要停機多久時間做能才能達到!

	1年 = 365天 = 8760小時

	99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小時

	99.99 = 8760 * 0.0001 = 0.876小時 = 0.876 * 60 = 52.6分鐘

	99.999 = 8760 * 0.00001 = 0.0876小時 = 0.0876 * 60 = 5.26分鐘

架構選擇

zabbix
elk 都是可以的

本項目選擇的架構:
在這裏插入圖片描述
關於上面的架構,做幾點簡單說明

  1. 服務器產生的日誌 我們需要修改爲json格式的日誌,默認是string。因爲json格式的日誌自帶schema,方便spark處理。比如SpringBoot項目中的日誌就可以通過修改配置文件達到這個目的。
  2. 產生的日誌該是位於服務器的某一個文件夾位置。
 場景一:日誌名稱始終不變,可以使用tail -F /logs/serverA.log
		  當前的一份--> 保留10200M產生一個

 場景二:日誌名稱是變化的,tail -F 文件夾 spoolDir
  1. 本來,flume exec source 是可以監控某一個文件或文件夾下 的日誌的,但是,當我們的 節點+服務 比較多的時候,我們就無法知道改日誌是來自於哪一個機器的哪一個服務,所以,我們需要基於Flume源代碼做二次開發,改造後能夠使得我們的flume將 機器名+服務名 一起打進source ,最後sink 到 kafka中去,
    ps:本來這裏我還想說,sink的時候能夠按照某一規則sink 到kafka指定分區中。後面再做吧

4.原始日誌+機器名+服務名這樣的 json 格式的數據已經從 flume 到Kafka 中去。我們需要使用Spark Straeming +Spark SQL 對流日誌進行處理,處理後的結果可以存儲到InfluxDB(時序數據庫),最後通過Grafana 進行可視化

項目概要

基於上面的幾點說明,寫一下本項目的大致流程:

  1. 基於CDH5 搭建好 各個環境
    版本:
    hadoop-2.6.0-cdh5.7.0
    apache-flume-1.9.0-bin
    kafka_2.11-1.1.0
    scala-2.11.8
    spark-2.4.3-bin-2.6.0-cdh5.7.0
    grafana-4.1.1
    InfluxDB-1.7.0

  2. 基於flume 源碼 做二次開發,參考exec sorce --> exec+機器名+服務名 的source

  3. 上一步做好之後,就能將數據採集到kafka中去,並使用kafka-console-consumer.sh 將採集的數據打印到控制檯,大致這樣:

{"hostname":"host36","servicename":"serverA","time":"2019-07-11 02:10:23,756","logtype":"INFO","loginfo":"org.apache.hadoop.hdfs.server.blockmanagement.CacheReplicationMonitor:Rescanning after 3000 milliseconds"}
  1. 接着,就是開發spark 對接kafka ,進行各種編碼,這個過程中,處理結果會實時寫到InfluxDB中,然後我們使用Grafana進行展示。Grafana配置告警即可。類似:

在這裏插入圖片描述

項目收穫

大致寫一下,本項目能夠得到主要技能

  1. Flume: 1.源碼二次開發 2. 自定義Interceptor 3.概念 安裝 配置文件 與 命令使用
  2. Kafka: 1.多分區全局有序的實現 2.at lease once + offset 自定義管理 3. 概念 安裝(分佈式) 與 命令使用
  3. Spark 廣播變量如何結合業務需要?+ 窗口函數的使用?
  4. Spark Streaming + Kafka 自定義Offset 管理到 MySQL
  5. InfluxDB + Grafana 配合做監控
  6. Spark On Yarn

基於上面的流程,我們由易到難,

現在開始!!!

更多文章:企業級生產監控預警平臺:https://blog.csdn.net/liuge36/category_9600405.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章