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_errormsg
: 錯誤標題error
:錯誤完整的內容,你們可自行定義
php異常
group
: exceptionmsg
: 異常標題error
:異常完整的內容,你們可自行定義
api,page 訪問性能
group
: apielapsed
: 100.123 (毫秒)url
: 具體urlroute
: 路由(聚合分類用)
mysql慢查詢
group
: dataobject
: slow_queryurl
: 具體urlerror
: 慢差的完整信息,包括sql,params等
格式意見定義好了,知足了以前的設計需求。
具體如何經過定義好的格式去在kibana上進行可視化,熟悉的朋友應該能有個思路了,具體就不在這展開了。
日記接入成功後,接下來只要封裝好調用的方法便可。
後面項目上還須要接入
隊列日誌
異步事務日誌
具體實現思路敬請期待後面的文章。