摘要:導語是宜信公司團隊開發(fā)的一款數(shù)據(jù)庫審核產(chǎn)品,可幫助開發(fā)人員快速發(fā)現(xiàn)數(shù)據(jù)庫質量問題,提升工作效率。此平臺可實現(xiàn)對數(shù)據(jù)庫進行多維度對象結構文本執(zhí)行計劃及執(zhí)行特征的審核,用以評估對象結構設計質量及運行效率。閥值閥值,代表違反規(guī)則的扣分上限。
導語
Themis是宜信公司DBA團隊開發(fā)的一款數(shù)據(jù)庫審核產(chǎn)品,可幫助DBA、開發(fā)人員快速發(fā)現(xiàn)數(shù)據(jù)庫質量問題,提升工作效率。
此平臺可實現(xiàn)對Oracle、MySQL數(shù)據(jù)庫進行多維度(對象結構、SQL文本、執(zhí)行計劃及執(zhí)行特征)的審核,用以評估對象結構設計質量及SQL運行效率。可幫助DBA及開發(fā)人員,快速發(fā)現(xiàn)定位問題;并提供部分輔助診斷能力,提升優(yōu)化工作效率。全部操作均可通過WEB界面進行,簡單便捷。此外,為了更好滿足個性化需求,平臺還提供了擴展能力,用戶可根據(jù)需要自行擴展。
開源地址: https://github.com/CreditEaseDBA
點擊查看Themis的部署攻略
一、規(guī)則解析規(guī)則解析分為四塊:對象類規(guī)則解析、文本類規(guī)則解析、執(zhí)行計劃類規(guī)則解析、統(tǒng)計信息類規(guī)則解析。每個模塊都可以使用手動或自動的方式進行。
1.1 對象類規(guī)則解析 手動解析oracle對象類信息配置data/analysis_o_obj.json文件
{ "module": "analysis", "type": "OBJ", "db_server": "127.0.0.1", "db_port": 1521, "username": "schema", "db_type": "O", "rule_type": "OBJ", "rule_status": "ON", "create_user": "system", "task_ip": "127.0.0.1", "task_port": 1521 }
配置db_server、db_port、username、create_user、task_ip選項,其他的保持默認即可,username是需要審核的目標對象的名字。
python command.py -m analysis_o_obj -c data/analysis_o_obj.json
使用上面的命令開始采集obj數(shù)據(jù)
手動解析mysql對象類數(shù)據(jù)配置data/analysis_m_obj.json文件
{ "module": "mysql", "type": "OBJ", "db_server": "127.0.0.1", "db_port": 3306, "username": "schema", "db_type": "mysql", "rule_type": "OBJ", "rule_status": "ON", "create_user": "mysqluser", "task_ip": "127.0.0.1", "task_port": 3306 }
配置db_server、db_port、username、create_user、task_ip、db_port選項,其他的保持默認即可。
運行命令:
python command.py -m analysis_m_obj -c data/analysis_m_obj.json
oracle和mysql對象類規(guī)則是不需要依賴于采集的數(shù)據(jù)的,它是直接連接到數(shù)據(jù)庫里進行查詢的,由于有的庫較大可能時間會比較久,建議在業(yè)務低峰期進行。
1.2 文本類規(guī)則解析 手動解析oracle文本類規(guī)則配置data/analysis_o_text.json文件
{ "module": "analysis", "type": "TEXT", "username": "schema", "create_user": "SYSTEM", "db_type": "O", "sid": "cedb", "rule_type": "TEXT", "rule_status": "ON", "hostname": "127.0.0.1", "task_ip": "127.0.0.1", "task_port": 1521, "startdate": "2017-02-23", "stopdate": "2017-02-23" }
配置sid、username、create_user、task_ip、hostname、startdate、stopdate選項,由于數(shù)據(jù)是按天采集的,因此暫時只支持startdate和stopdate保持一致,hostname和task_ip可以保持一致,其他的保持默認即可。
執(zhí)行下面的命令即可以進行規(guī)則解析:
python command.py -m analysis_o_plan -c data/analysis_o_plan.json手動解析mysql文本類規(guī)則
配置data/oracle_m_text.json文件
"module": "analysis", "type": "TEXT", "hostname_max": "127.0.0.1:3306", "username": "schema", "create_user": "mysqluser", "db_type": "mysql", "rule_type": "TEXT", "rule_status": "ON", "task_ip": "127.0.0.1", "task_port": 3306, "startdate": "2017-02-21 00:00:00", "stopdate": "2017-02-22 23:59:00" }
配置username、create_user、taskip、taskport、hostname、hostname_max、startdate、stopdate選項,hostname和task_ip可以保持一致,其他的保持默認即可。
運行下面的命令即可以進行規(guī)則解析:
python command.py -m analysis_m_text -c data/analysis_m_text.json
上面兩步中的username為需要審核的對象。
1.3 執(zhí)行計劃類規(guī)則解析 oracle plan類型規(guī)則解析配置data/analysis_o_plan.json文件
{ "module": "analysis", "type": "SQLPLAN", "capture_date": "2017-02-23", "username": "schema", "create_user": "SYSTEM", "sid": "cedb", "db_type": "O", "rule_type": "SQLPLAN", "rule_status": "ON", "task_ip": "127.0.0.1", "task_port": 1521 }
主要是對capture_date,username, create_user, sid,db_type,rule_type,task_ip,task_port參數(shù)進行配置,type分為SQLPLAN,SQLSTAT,TEXT,OBJ四種類型,rule_type的類型同SQLPLAN,只不過一個是代表模塊的類型,一個代表規(guī)則的類型,db_type分為"O"和“mysql”兩種類型,分別代表oracle和mysql,capture_date為我們欠扁配置的數(shù)據(jù)的抓取日期。
python command.py -m analysis -c data/analysis_o_plan.json
運行上面的命令即可生成解析結果。
mysql plan規(guī)則解析配置data/analysis_m_plan.json文件
{ "module": "analysis", "type": "SQLPLAN", "hostname_max": "127.0.0.1:3306", "db_server": "127.0.0.1", "db_port": 3306, "username": "schema", "db_type": "mysql", "rule_status": "ON", "create_user": "mysqluser", "task_ip": "127.0.0.1", "rule_type": "SQLPLAN", "task_port": 3306, "startdate": "2017-02-21 00:00:00", "stopdate": "2017-02-22 23:59:00" }
type類型的含義同上面oracle,hostname_max為mysql的ip:端口號的形式,每一個hostname_max代表一個mysql實例,startdate和stopdate需要加上時、分、秒,這一點同oracle不大一樣。
python command.py -m analysis -c data/analysis_m_plan.json
然后運行上面的命令進行mysql的plan的規(guī)則解析。
1.4 執(zhí)行特征類規(guī)則解析 oracle stat類型規(guī)則解析配置data/analysis_o_stat.json文件
{ "module": "analysis", "type": "SQLSTAT", "capture_date": "2017-02-23", "username": "schema", "create_user": "SYSTEM", "sid": "cedb", "db_type": "O", "rule_type": "SQLSTAT", "rule_status": "ON", "task_ip": "127.0.0.1", "task_port": 1521 }
配置sid、username、create_user、task_ip、capture_date選項,其他保持默認即可。
運行命令:
python command.py -m analysis_o_stat -c data/analysis_o_stat.json
進行數(shù)據(jù)采集。
mysql stat類型規(guī)則解析配置文件data/analysis_m_text.json
{ "module": "analysis", "type": "SQLSTAT", "hostname_max": "127.0.0.1:3306", "db_server": "127.0.0.1", "db_port": 3306, "username": "schema", "db_type": "mysql", "rule_status": "ON", "create_user": "mysqluser", "task_ip": "127.0.0.1", "rule_type": "SQLSTAT", "task_port": 3306, "startdate": "2017-02-21 00:00:00", "stopdate": "2017-02-22 23:59:00" }
配置username、create_user、task_ip、task_port、hostname、hostname_max、startdate、stopdate選項,hostname和task_ip可以保持一致,其他的保持默認即可。
運行命令:
python command.py -m analysis_m_text -c data/analysis_m_text.json
進行數(shù)據(jù)采集。
1.5 自動規(guī)則解析上面介紹的手動規(guī)則解析都是可以進行測試,或者在一些特殊情況下使用,大部分情況我們會使用自動規(guī)則解析。
自動規(guī)則解析我們使用celery來完成,關于celery 的使用,請參考http://docs.celeryproject.org...。
下面是常用的一些關于celery的命令:
開啟規(guī)則解析 celery -A task_other worker -E -Q sqlreview_analysis -l info 開啟任務導出 celery -A task_exports worker -E -l info 開啟obj信息抓取 celery -A task_capture worker -E -Q sqlreview_obj -l debug -B -n celery-capture-obj 開啟flower celery flower --address=0.0.0.0 --broker=redis://:password@127.0.0.1:6379/ 開啟plan、stat、text抓取 celery -A task_capture worker -E -Q sqlreview_other -l info -B -n celery-capture-other
最后我們會將規(guī)則解析都加入到supervisor托管,然后通過web界面生成任務,然后用celery進行調度,通過flower查看任務執(zhí)行狀態(tài)。
關于具體使用請參考supervisor的配置。
二、內置規(guī)則說明平臺的核心就是規(guī)則。規(guī)則是一組過濾條件的定義及實現(xiàn)。規(guī)則集的豐富程度,代表了平臺的能力。平臺也提供了擴展能力,用戶可自行定義規(guī)則。 從分類來看,規(guī)則可大致分為幾類。
2.1 規(guī)則分類從數(shù)據(jù)庫類型來區(qū)分,規(guī)則可分為Oracle、MySQL。不是所有規(guī)則都區(qū)分數(shù)據(jù)庫,文本類的規(guī)則就不區(qū)分。
從復雜程度來區(qū)分,規(guī)則可分為簡單規(guī)則和復雜規(guī)則。這里的簡單和復雜,實際是指規(guī)則審核的實現(xiàn)部分。簡單規(guī)則是可以描述為mongodb或關系數(shù)據(jù)庫的一組查詢語句;而復雜規(guī)則是需要在外部通過程序體實現(xiàn)的。
從審核對象角度來區(qū)分,規(guī)則可分為對象類、文本類、執(zhí)行計劃類和執(zhí)行特征類。
2.2 規(guī)則參數(shù)規(guī)則可以包含參數(shù)。例如:執(zhí)行計劃規(guī)則中,有個是大表掃描。這里就需要通過參數(shù)來限定大表的定義,可通過物理大小來指定。
2.3 規(guī)則權重及閥值權重 權重,代表違反規(guī)則,一次扣幾分。可根據(jù)自身情況進行調節(jié)。
閥值 閥值,代表違反規(guī)則的扣分上限。這里主要是為了避免違反單一規(guī)則過多,導致忽略了其他規(guī)則。
規(guī)則權重及扣分,最終會累積為一個總的扣分,平臺會按百分制進行折算。通過這種方式,可起到一定的量化作用。
2.4 規(guī)則_對象類(Oracle部分) 2.5 規(guī)則_對象類(MySQL部分) 2.6 規(guī)則_執(zhí)行計劃類(Oracle部分) 2.7 規(guī)則_執(zhí)行計劃類(MySQL部分) 2.8 規(guī)則_執(zhí)行特征類(Oracle部分) 2.9 規(guī)則_執(zhí)行特征類(MySQL部分) 2.10 規(guī)則_文本類 三、加入開發(fā)有問題可以直接在 https://github.com/CreditEase... 提出。
本文選自:wiki:https://tuteng.gitbooks.io/th...。
由于篇幅關系內容有所調整,請點擊鏈接查看原文。
來源:宜信技術學院
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/18006.html
摘要:一介紹是宜信公司團隊開發(fā)的一款數(shù)據(jù)庫審核產(chǎn)品,可幫助開發(fā)人員快速發(fā)現(xiàn)數(shù)據(jù)庫質量問題,提升工作效率。此平臺可實現(xiàn)對數(shù)據(jù)庫進行多維度對象結構文本執(zhí)行計劃及執(zhí)行特征的審核,用以評估對象結構設計質量及運行效率。執(zhí)行計劃指數(shù)據(jù)庫中的執(zhí)行計劃。 一、介紹 Themis是宜信公司DBA團隊開發(fā)的一款數(shù)據(jù)庫審核產(chǎn)品,可幫助DBA、開發(fā)人員快速發(fā)現(xiàn)數(shù)據(jù)庫質量問題,提升工作效率。其名稱源自希臘神話中的正義...
閱讀 3607·2021-11-15 11:37
閱讀 2974·2021-11-12 10:36
閱讀 4402·2021-09-22 15:51
閱讀 2381·2021-08-27 16:18
閱讀 881·2019-08-30 15:44
閱讀 2163·2019-08-30 10:58
閱讀 1768·2019-08-29 17:18
閱讀 3268·2019-08-28 18:25