1. 概述
1.1 版本
FineBI 版本 | 平台日誌同步到其他資料庫插件 |
---|---|
6.0 | V1.0.0 |
1.2 應用場景
目前 LogDB 資料庫不支援遷移,使用者如果想對日誌資料進行一些複雜分析時較為麻煩,希望日誌資料可以遷移到自己的資料庫中進行管理和分析。
使用者希望把各個系統的日誌都放在同一個地方維運管理。
1.3 功能簡介
安裝「平台日誌同步到其他資料庫」插件後,使用者可以透過設定將 LogDB 中的部分表資料定期同步到其它資料庫中。
2. 插件介紹
2.1 安裝插件
插件下載請點選:平台日誌同步到其他資料庫插件
插件安裝方法參見:插件管理
2.2 支援遷移到的資料庫
由於logdb日誌內容較多,請準備一個獨立的、全新的表空間,用於資料遷移儲存。
不建議logdb資料,與其他業務資料/配置資料存放在同一表空間中。
資料庫類型 | 支援資料庫版本 |
---|---|
MySQL | 5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16 |
SqlServer | 2000、2005、2008、2012、2014、2016 |
Oracle | 10g、11g、12c |
2.3 日誌同步
插件安裝成功後,點選「管理系統>智慧維運>平台日誌」,平台日誌介面新增「日誌同步」Tab,如下圖所示:
3. 範例
3.1 選擇所要同步的日誌
1)以管理者身分進入數據決策系統,點選「管理系統>智慧維運>平台日誌」,在「日誌同步」Tab 頁中點選「設定日誌同步任務」,如下圖所示:
2)在日誌同步設定中,選擇「同步日誌起始時間」,勾選需要同步的日誌,點選「下一步」。如下圖所示:
支援同步的日誌表包括:
報表執行日誌 fine_record_execute
登入日誌 fine_record_login
登出日誌 fine_record_logout
郵件傳送日誌 fine_record_email
填報日誌 fine_record_write
常用參陣列合 fine_record_param
簡訊傳送日誌 fine_record_sms
管理行為日誌 fine_record_operate
SQL 執行情況 fine_record_sql
應用實時情況 fine_real_time_usage
gc日誌 fine_record_gc
conf_entity 配置資訊 fine_record_conf
使用者鎖定日誌 fine_record_lock
範本屬性 fine_tpl_info
容器資訊日誌 fine_container_entity
功能點資訊日誌 fine_function_process
雲端健檢分析操作日誌fine_operation_process_log
信號量資訊 fine_operation_shutdown_record
插件使用資訊記錄 fine_plugin_usage
定時任務執行日誌 fine_schedule_record
功能使用情況 fine_intelli_focus_point
效能資訊日誌 fine_intelli_consume_point
3.2 配置資料庫資訊
填寫日誌資料將要遷移到的資料庫相關資訊,點選「確定」,如下圖所示:
4. 效果查看
4.1 同步狀態
注:插件每 3 分鐘同步一次,每張表每次最多同步資料 3W 條。如果本次同步的資料不足 3W 條,那最多同步 24 個小時跨度的資料。
例如2021-08-02 13:00:00~16:00:00,有30筆資料,那這次同步就最多同步這30筆資料。
同步成功後,同步狀態如下圖所示:
4.1.1 同步失敗時,通知管理者
若勾選「同步失敗時,通知管理者」按鈕,同步失敗時,管理者會收到平台訊息。如下圖所示:
4.1.2 暫停同步
可點選「暫停」按鈕,暫停同步。如下圖所示:
4.1.3 編輯同步設定
暫停同步或同步失敗時,可點選「編輯」按鈕,重新編輯同步任務。如下圖所示:
“起始時間生效物件”設定說明:
若希望所有被勾選的表都從使用者設定的「同步日誌起始時間」開始同步,則“起始時間生效物件”設定為“所有同步的日誌”;
若希望只有新增加的表從「同步日誌起始時間」的設定值開始同步,其餘已有在同步的表延着之前同步到的地方繼續同步,則“起始時間生效物件”設定為“僅對本次變動的日誌生效”。
4.1.4 查看同步詳情
點選「查看同步詳情」按鈕,可查看同步詳情。如下圖所示:
只展示上次同步任務的運作狀態。各欄位說明如下表所示:
欄位名稱 | 說明 |
---|---|
同步表 | 所選擇的同步日誌 |
同步日誌截止時間 | 最近一次執行結束的同步任務中,入庫日誌的最晚時間,表示在「同步日誌起始時間」到此時間點之間的日誌都已經入庫了 |
最近一次同步時間 | 最近一次執行結束同步任務的開始執行時間 |
最近一次同步資料量 | 最近一次執行結束同步任務同步的日誌記錄數 |
最近一次同步耗時 | 最近一次執行結束同步任務執行的耗時 |
運作結果 | 成功/失敗 運作結果為「失敗」情況下,可以點選查看具體報錯 |
4.2 日誌資料同步到資料庫
日誌資料同步到設定的資料庫中。
1)同步後的表,新增了自增長主鍵(syncID),增加了同步時間戳欄位(storageTime)
2)日誌清理 不會影響到已遷移到外接資料庫中的日誌資料。
3)欄位中內容過長可以入庫,但是超過 255 字元的內容會被截斷。
4)欄位名使用資料庫保留名時,為了能夠相容各個版本,針對保留名做別名處理。
改名處理的具體欄位如下表所示:
表 | 原欄位名稱 | 遷移後欄位名稱 |
---|---|---|
FINE_RECORD_OPERATE | type | operateType |
resource | operateResource | |
status | operateStatus | |
FINE_RECORD_EXECUTE | type | executeType |
sql | query | |
sqlTime | queryTime | |
FINE_RECORD_WRITE | sql | query |
sqlTime | queryTime |
5. 常見問題
5.1 同步邏輯
內容 | 說明 |
---|---|
同步邏輯 | 目前平台日誌同步邏輯是插入提交,多次同步同個時段的資料就會重複提交。 |
同步頻率 | 同步插件會以使用者設定的同步開始時間為起點,按照時間順序分批將日誌同步到第三方資料庫中,插件每3分鐘同步一次,每張表每次最多同步資料3W 條。 如果本次同步的資料不足3W 條,那最多同步 24 個小時跨度的資料(2021-3-23之前最多同步3小時跨度的資料)。 |
同步欄位長度 | 欄位中內容過長可以入庫,但是超過 255 字元的內容會被截斷,僅提交255字元長度內的內容。 |
同步狀態 | 插件處顯示的同步狀態實際是指的插件運作狀態,並非同步狀態。 |
5.2 資料庫問題
同步失敗,可排查以下資料庫問題。
排查步驟 | 說明 |
---|---|
檢查資料庫版本 | 支援的資料庫類型和版本請參考2.2節。 |
檢查資料庫資訊 | 檢查資料庫驅動、模式、密碼是否正確,可在資料連結處先嚐試是否能正常連結。 資料庫重啟會導致日誌同步中斷,同步終止後要在平台上重新啟動任務。 |
檢查資料庫使用者權限 | 檢查資料庫使用者是否有建立表和插入資料的權限。 使用者最好需要具備 create、delete、alter、update、select、insert 權限。 |
檢查資料庫編碼 | MySQL5資料庫編碼建議為utf8,不支援 utf8mb4 編碼。 若為阿里雲rds mysql ,還需要確認引擎是否為innodb。 |
5.3 插件問題
同步失敗,出現三種現象時,可排查以下插件問題。
問題描述:
1)fanruan.log中報錯有重複的插件包
2)平台日誌同步介面顯示空白
3)平台日誌同步介面顯示英文
排查步驟 | 說明 |
---|---|
檢查插件安裝 | 檢查是否重複安裝了插件 若重複安裝了,刪除插件,重啟伺服器,重新安裝插件 |
檢查websocket埠 | 檢查websocket埠是否正常,可參考:WebSocket連結失敗 |
5.4 常見報錯
同步出現問題,可查看fanruan.log,報錯資訊中包含「com.fr.plugin.sync」,可根據報錯資訊定位問題。
報錯資訊 | 原因分析及解決方案 |
---|---|
SyncLog: getConfigInstance failed!, retry to getConfigInstance! java.lang.AssertionError: com.fr .plugin.sync.config.status.IsStart has the same tableName with com.fr .plugin.sync.config.status.IsStart | 1)安裝了不同版本的平台日誌同步插件,需要在plugins中將插件檔案刪除乾淨,重啟伺服器,再次安裝。 2)同時安裝了「日誌資料同步」 插件和「平台日誌同步到其他資料庫」插件,需將舊版本「日誌資料同步」 插件刪掉。 |
Can not set int field com.fr .plugin.sync.db.entity.Schedule.logType to java.lang.Long | logDB不支援int型,需要將int改為long。更新插件至1.1.2及以上版本。 |
SyncLog: get logs failed from XXX | 同步的XXX表太大,swift中止查詢,導致查詢失敗。 平台日誌同步插件無法支援特別大數據量的日誌同步,建議適當清理表資料再同步。 |
SyncLog: sync failed: com.fr.third.org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1。 | hibernate偶發儲存資料失敗。更新插件至1.0.8及以上版本。 |
java.sql.SQLException: Incorrect string value: '/xE4/xB8/xB4/xE6/x97/xB6...' for column 'userrole' at row 1 | 資料庫或表的字元集有問題。 MySQL5資料庫編碼建議為utf8,不支援 utf8mb4 編碼。 若為阿里雲rds mysql ,還需要確認引擎是否為innodb。 |
QueryTimeoutException- could not extract ResultSet | 資料庫可能有未提交的交易,導致資料提交失敗。 檢查是否存在沒提交的交易,若存在,處理後再嘗試同步。 |
could not execute statement | 檢查資料庫的模式和編碼類型 MySQL5資料庫編碼建議為utf8,不支援 utf8mb4 編碼。 若為阿里雲rds mysql ,還需要確認引擎是否為innodb。 Oracle模式填thin就會報錯,將改成帳號即可。 |