--- tags: 流量監控作業程序 --- # 拋轉地端欄位資料至雲端 將由名為EsmEdgeApp.jar的JAVA程式進行拋轉動作 執行ScheduleTask(進入點)中的三個排程 1. run-透過JAVA_API向Elasticsearch搜索其告警資料並送出至雲端的RabbitMQ,其區間段為前3分30秒~前31秒,並標記其送出資料狀態為已送出(dump_status=1),週期為3分鐘一次 2. runCheckData-檢查雲端資料是否一次,透過API去比對雲端存取的資料及Edge端是否相同,若比對後皆以存在則標註狀態為已存在(dump_status=3),若無則再傳送一次並標誌狀態為檢查後重送(dump_status=1.1),其週期為開啟後延遲10秒執行,之後每1小時執行一次 3. runCheckDataForDay-檢查前一天到前三十天之內的資料是否有送出,狀態為非3、或非1.2的一律送出,並再標注狀態為檢查後重送、並不再補送(dump_status=1.2),其週期為每天凌晨0時0分執行一次 ## run 依照Elasticsearch的ingest_timestamp時間區間及dump_status去收尋特定的index資料,所以當未設定此欄位資料可能會導致抓不到資料亦或抓到所有的ES資料 將抓取的資料打包成json字串成一個清單(EX:alert_data_detail)及設定key值來讓雲端RabbitMQ監聽存取 ``` map.put(SystexConstants.JSON_KEY_ALERT_DATA_DETAIL, sList); map.put(SystexConstants.JSON_KEY_WINLOG_DATA_DETAIL, sList2); ``` 此map傳輸到雲端RabbitMQ後會轉換成JSON的字串,雲端的RabbitMQ監聽器會依造這個map的key去對應將資料打到指定的index |Edge端ES(xxx=202008)的index key|傳送到RabbitMQ的key|雲端ES(xxx=202008) 的index key| |-|-|-| |suricata-xxx|alert_data_detail|soc_r_suricata-xxx| |winlog-xxx|winlog_data_detail|soc_r_winlog-xxx| ## runCheckData 檢查雲端與Edge端資料是否一致,若無需補送資料且更改dump_status欄位 |狀態編碼(dump_status)|代表含意| |-|-| |0|初始化表示一定要送| |1|已送達RabbitMQ| |1.1|已補送,還可能在進行處理| |1.2|每日補送,未來不在處理| |3|確定已存在,並不在處理| 會依據ingest_timestamp的時間區間(66m30s~6m30s前)以及儲存於location.properties及環境變數中的三階層組織代碼,使用雲端API抓取雲端上Elasticsearch的edge_index及edge_es_id兩個欄位的資料 比對地端Edge此兩筆欄位資料 若已存在則將Edge端dump_status改為3 再以相同的ingest_timestamp時間區間,過濾雲端ES已存在的資料,找尋dump_status非1.2及1.3的資料,將之送出並更改dump_status為1.1 ## runCheckDataForDay 抓取ingest_timestamp時間區間為前31天到前1天的資料,尋找dump_status非1.2以及非3的資料將這些資料都送出,並更改dump_status為1.2
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up