[elk]基於elk的業務日誌格式設計

背景

php項目,業務監控爲0,須要搭建一套日誌查看,閥值告警等功能的監控系統。撒都不用說,直接上ELK。php

咱們跳過搭建過程(網上太多了)。
經過docker搭建好了elk那一套(明顯單機版),我要監控測試和線上,因此是個多采集的環境,使用了官方推薦的最新的filebeat就行log聚合,格式化仍是在master用logstash。mysql


需求

業務需求並非不少,由於是在初期,等團隊使用熟練後,業務日誌會接入更多(項目決定)。sql

如今能想到的需求:docker

  • php運行錯誤和異常json

  • api和頁面執行性能api

  • mysql慢查app

本人已盡對項目代碼進行改造,運行時發生的全部異常和error都會經過json格式寫入在本地日誌目錄中,關鍵就看怎麼定義格式了知足上面的一些需求了異步


思路

直接講結果吧:性能

  • php運行錯誤和異常測試

    • 異常信息,時間,具體內容

    • 錯誤信息,時間,具體內容

  • api和頁面執行性能

    • 訪問的api地址,執行時間等

    • 訪問的page地址,執行時間等

  • mysql慢查

    • 當前執行慢的sql, 參數(去除敏感信息)

從上面大體須要的監控需求來講,會發現不少共同點或者說是共有信息字段,好比:訪問的模塊,訪問的路由,訪問的用戶,訪問的哪一種類型,子類型等

考慮下上面的這些問題,大致上咱們就能設計出知足這些需求的通用日誌格式了:

格式說明:

字段 類型 es not_analyzed 備註
sid string ture uuid
time data ture log生成時間
level string ture log等級
msg string ture 信息簡要
app string ture 項目名稱
group string ture 日誌一級分類
object string ture 日誌二級分類
host string ture host
client string ture client
status number ture 狀態碼
elapsed number ture 執行毫秒
error string ture 錯誤的完整信息
url string ture
route string ture

例子:

php錯誤

group: php_error
msg: 錯誤標題
error:錯誤完整的內容,你們可自行定義

php異常

group: exception
msg: 異常標題
error:異常完整的內容,你們可自行定義

api,page 訪問性能

group: api
elapsed : 100.123 (毫秒)
url: 具體url
route: 路由(聚合分類用)

mysql慢查詢

group: data
object: slow_query
url: 具體url
error: 慢差的完整信息,包括sql,params等

格式意見定義好了,知足了以前的設計需求。
具體如何經過定義好的格式去在kibana上進行可視化,熟悉的朋友應該能有個思路了,具體就不在這展開了。


最後

日記接入成功後,接下來只要封裝好調用的方法便可。
後面項目上還須要接入

  • 隊列日誌

  • 異步事務日誌

具體實現思路敬請期待後面的文章。

相關文章
相關標籤/搜索