mysql慢sql警示系統

來源:互聯網
上載者:User

標籤:無法   select   記錄檔   查詢   語句   image   lob   系統   替換   

 前言:最近有同事反應有的介面回應時間時快時慢,經過排查有的資料層回應時間過長,為了加快定位定位慢sql的準確性,決定簡單地搭建一個慢sql警示系統

    具體流程如下架構圖

  

第一步:記錄日誌

每個業務系統都會在都會有自己的查詢語句,所有的sql語句最紅都會   我們先開啟每個mysql的慢sql採集配置

 

1.將 slow_query_log 全域變數設定為“ON”狀態
mysql> set global slow_query_log=‘ON‘;
2.設定慢查詢日誌存放的位置
3.mysql> set global slow_query_log_file=‘/usr/local/mysql/data/slow.log‘;
設定慢sql的時間
mysql> set global long_query_time=1;

測試一下

select sleep(3);去第二步設定的路徑找到記錄檔,開啟日誌發現會有一條記錄

第二步:採集日誌

 當記錄下所有的記錄檔的之後,我們就需要採集,和傳統的ELK那套模式一致,用filebeat去搜集(filebeat採集的原理就不多說介紹了),採集完成後就統一傳輸到logstash

第三步:格式化資料

 當logstash得到這些資料之後,需要格式化Elasticsearch需要的格式

 注意:我們採集到日誌格式中無法區分sql類型,比如select * from user where userId=2 和 select * from user where userId=5 是同一種類型,但是原始日誌採集過來的資料無法判斷,我們需要特殊處理一下:

  1:用Regex把所有 數字和引號“”裡面的內容都替換成?,

  2:然後把返回的值用密碼編譯演算法加密一下,得到一個新的欄位

 改欄位就可以表明是某種類型的sql

第四步:分析和展示資料

  Elasticsearch得到logstash傳來的資料之後,就可以來檢索了(sql_for_hash欄位就行用來判別sql類型的欄位)

  

第五步:警示功能

以上四步基本完成了mysql慢sql的採集分析過程,接下裡就是警示功能,採用每小時(可以更短)去掃描es的中資料,根據日誌中出現的查詢時間以及每小時出現的次數決定警示層級,調用訊息中心的警示介面進行警示,這樣開發員人能夠即時地接收到慢sql的出現的情況以便及時排除解決問題(後台也寫了一個簡單的統計頁面方便查看)

  

  

  

  

 

 

 

 

mysql慢sql警示系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.