php日志数据统计,awk 进行php日志累计报错统计
問題
線上服務器一百多臺
通過tail -f /var/log/error_web* 方式來查看,速度滾動刷新太快,而且不方便定位問題
按照前輩的『觀察法』,作為新人實在是有難度,所以使用awk命令對輸出格式格式化了一下。
思路
將每一行tail得到的日志通過awk命令進行處理,利用awk的BEGIN全局的特性來累計報錯數量。
方案
我們將從執行tail命令開始的所有報錯的接口地址進行了累計,每一次報錯,都將累計的報錯數量輸出在前,這樣可以快速看出到底哪個接口數據量報錯比較大。
效果如下
錯誤次數:33 鏈接:[REQUEST_URI:xxxxxxxxxxxxxx
[04-Jul-2017 18:32:20 PRC] 95169011-595b6eb3b12291.18851925 PHP Warning:
我們來看下log.sh文件的代碼
tail -f /var/log/error_web* | grep . | grep -v '==>' |
awk '
# 定義全局變量,是awk命令的BEGIN用法,還有一個END可以搜下
BEGIN{
# 每隔接口報錯的次數
errorTimes[0] = 0;
# 錯誤詳情
errorDetails[0] = 0;
# 總的錯誤次數
errorCount = 0;
}
{
# 格式化當前行的內容,得到URL
# 獲取最后的一個字段,這里可以搜下awk命令的NF內置變量
url = $NF;
# 將得到的url之后的參數拆掉
split(url, urlFields, "?");
url = urlFields[1];
# 報錯數量+1
errorTimes[url] = errorTimes[url] + 1;
print("錯誤次數:"errorTimes[url]" 鏈接:"url);
# 這里是為了打印錯誤的詳情
print($0);
print("");
# 增加總次數
errorCount = errorCount + 1;
}
'
總結
以上是生活随笔為你收集整理的php日志数据统计,awk 进行php日志累计报错统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: harbor重置mysql密码_Harb
- 下一篇: python基础(11)之函数