使用shell進行日誌分析
最近做資料批次載入的時候,是透過pl/sql嵌在shell指令碼里執行的。
指令碼執行後生成的日誌類似如下的格式
Get Dump file for APP_TMP.TESTRESS_NAME_LINK...
Elapsed: 00:00:00.64
.
DB details is accessible from source schema ...
.
DB details is accessible from target schema ...
.
Directory ext_datapump_dir has read,write permission ,proceed...
.
SYNONYM TESTEEMENT exists in CONNECT account,proceed...
.
Get Dump file for APP_TMP.TESTEEMENT...
Elapsed: 00:00:00.49
.
DB details is accessible from source schema ...
.
DB details is accessible from target schema ...
.
Directory ext_datapump_dir has read,write permission ,proceed...
.
SYNONYM TESTEEMENT_RESOURCE exists in CONNECT account,proceed...
.
因為表比較多,所以日誌看起來不是很清晰,想生成類似報表的格式來檢視每個表耗費了多長時間,就一目瞭然了。
期望的結果類似下面的樣子。
#########################################################################
Table_name Elapsed time
#########################################################################
APP_TMP.TESTRESS_DATA... Elapsed: 00:00:01.13
APP_TMP.TESTRESS_NAME_LINK... Elapsed: 00:00:00.64
APP_TMP.TESTEEMENT... Elapsed: 00:00:00.49
APP_TMP.TESTEEMENT_RESOURCE... Elapsed: 00:00:00.74
APP_TMP.TEST_RES_HISTORY... Elapsed: 00:00:00.82
APP_TMP.TEST_ACCOUNT... Elapsed: 00:00:01.03
APP_TMP.TEST_ADDRESS_NAME... Elapsed: 00:00:00.78
APP_TMP.TEST_AGED_TRIAL_BALANCE... Elapsed: 00:00:01.16
APP_TMP.TEST_BILLING_ARRANGEMENT... Elapsed: 00:00:00.61
APP_TMP.TEST_CHARGE_GROUP... Elapsed: 00:00:01.66
APP_TMP.TEST_CHARGES... Elapsed: 00:00:06.73
APP_TMP.TEST_CREDIT_DEBIT_LINK... Elapsed: 00:00:01.67
APP_TMP.TEST_CUSTOMER_CREDIT... Elapsed: 00:00:00.40
APP_TMP.TEST_DEPOSIT_REQUEST... Elapsed: 00:00:00.10
APP_TMP.TEST_DIRECT_DEBIT_REQUEST... Elapsed: 00:00:00.67
APP_TMP.TEST_INVOICE... Elapsed: 00:00:01.98
APP_TMP.TEST_PAY_CHANNEL... Elapsed: 00:00:00.53
APP_TMP.TEST_PAYMENT... Elapsed: 00:00:01.28
APP_TMP.TEST_PAYMENT_ACTIVITY... Elapsed: 00:00:00.19
首先是根據關鍵字找到對應的行,下一行就是耗費的時間。想透過命令簡單的實現。最後grep幫了大忙。
grep -A1 --color=auto "Get Dump file for " extract.log
輸出類似下面的樣子。
--
Get Dump file for APP_TMP.TESTTOMER...
Elapsed: 00:00:00.91
--
Get Dump file for APP_TMP.TESTNT_DISTRIBUTE...
Elapsed: 00:00:00.84
--
Get Dump file for APP_TMP.TEST_MEMO...
Elapsed: 00:00:22.27
--
Get Dump file for APP_TMP.TESTE_DATA...
Elapsed: 00:00:01.55
--
達到了初步效果。就需要把冗餘的資訊去除“Get Dump file for ",然後能讓對應的執行時間橫向顯示。
可以使用sed來做。
sed 's/Get Dump file for //' |sed 'N;N;s/\n/ /g'
APP_TMP.TESTRESS_DATA... Elapsed: 00:00:01.13 --
APP_TMP.TESTRESS_NAME_LINK... Elapsed: 00:00:00.64 --
APP_TMP.TESTEEMENT... Elapsed: 00:00:00.49 --
APP_TMP.TESTEEMENT_RESOURCE... Elapsed: 00:00:00.74 --
效果基本達到了,但是顯示比較粗糙,不規整,這個時候awk能幫上大忙了。
使用如下的指令碼來格式化輸出
awk '
BEGIN{
print "#########################################################################"
printf "%-50s %8s %11s \n", "Table_name","Elapsed","time"
print "#########################################################################"
}
{printf "%-50s %8s %11s \n", $1,$2,$3,$4
}'
這樣環環相扣,就可以輸出基本完整的報告了。完整命令如下:
grep -A1 --color=auto "Get Dump file for " extract.log |sed 's/Get Dump file for //' |sed 'N;N;s/\n/ /g' |awk '
BEGIN{
print "#########################################################################"
printf "%-50s %8s %11s \n", "Table_name","Elapsed","time"
print "#########################################################################"
}
{printf "%-50s %8s %11s \n", $1,$2,$3,$4
}'
輸出:
#########################################################################
Table_name Elapsed time
#########################################################################
APP_TMP.TESTRESS_DATA... Elapsed: 00:00:01.13
APP_TMP.TESTRESS_NAME_LINK... Elapsed: 00:00:00.64
APP_TMP.TESTEEMENT... Elapsed: 00:00:00.49
指令碼執行後生成的日誌類似如下的格式
Get Dump file for APP_TMP.TESTRESS_NAME_LINK...
Elapsed: 00:00:00.64
.
DB details is accessible from source schema ...
.
DB details is accessible from target schema ...
.
Directory ext_datapump_dir has read,write permission ,proceed...
.
SYNONYM TESTEEMENT exists in CONNECT account,proceed...
.
Get Dump file for APP_TMP.TESTEEMENT...
Elapsed: 00:00:00.49
.
DB details is accessible from source schema ...
.
DB details is accessible from target schema ...
.
Directory ext_datapump_dir has read,write permission ,proceed...
.
SYNONYM TESTEEMENT_RESOURCE exists in CONNECT account,proceed...
.
因為表比較多,所以日誌看起來不是很清晰,想生成類似報表的格式來檢視每個表耗費了多長時間,就一目瞭然了。
#########################################################################
Table_name Elapsed time
#########################################################################
APP_TMP.TESTRESS_DATA... Elapsed: 00:00:01.13
APP_TMP.TESTRESS_NAME_LINK... Elapsed: 00:00:00.64
APP_TMP.TESTEEMENT... Elapsed: 00:00:00.49
APP_TMP.TESTEEMENT_RESOURCE... Elapsed: 00:00:00.74
APP_TMP.TEST_RES_HISTORY... Elapsed: 00:00:00.82
APP_TMP.TEST_ACCOUNT... Elapsed: 00:00:01.03
APP_TMP.TEST_ADDRESS_NAME... Elapsed: 00:00:00.78
APP_TMP.TEST_AGED_TRIAL_BALANCE... Elapsed: 00:00:01.16
APP_TMP.TEST_BILLING_ARRANGEMENT... Elapsed: 00:00:00.61
APP_TMP.TEST_CHARGE_GROUP... Elapsed: 00:00:01.66
APP_TMP.TEST_CHARGES... Elapsed: 00:00:06.73
APP_TMP.TEST_CREDIT_DEBIT_LINK... Elapsed: 00:00:01.67
APP_TMP.TEST_CUSTOMER_CREDIT... Elapsed: 00:00:00.40
APP_TMP.TEST_DEPOSIT_REQUEST... Elapsed: 00:00:00.10
APP_TMP.TEST_DIRECT_DEBIT_REQUEST... Elapsed: 00:00:00.67
APP_TMP.TEST_INVOICE... Elapsed: 00:00:01.98
APP_TMP.TEST_PAY_CHANNEL... Elapsed: 00:00:00.53
APP_TMP.TEST_PAYMENT... Elapsed: 00:00:01.28
APP_TMP.TEST_PAYMENT_ACTIVITY... Elapsed: 00:00:00.19
首先是根據關鍵字找到對應的行,下一行就是耗費的時間。想透過命令簡單的實現。最後grep幫了大忙。
grep -A1 --color=auto "Get Dump file for " extract.log
輸出類似下面的樣子。
--
Get Dump file for APP_TMP.TESTTOMER...
Elapsed: 00:00:00.91
--
Get Dump file for APP_TMP.TESTNT_DISTRIBUTE...
Elapsed: 00:00:00.84
--
Get Dump file for APP_TMP.TEST_MEMO...
Elapsed: 00:00:22.27
--
Get Dump file for APP_TMP.TESTE_DATA...
Elapsed: 00:00:01.55
--
達到了初步效果。就需要把冗餘的資訊去除“Get Dump file for ",然後能讓對應的執行時間橫向顯示。
可以使用sed來做。
sed 's/Get Dump file for //' |sed 'N;N;s/\n/ /g'
APP_TMP.TESTRESS_DATA... Elapsed: 00:00:01.13 --
APP_TMP.TESTRESS_NAME_LINK... Elapsed: 00:00:00.64 --
APP_TMP.TESTEEMENT... Elapsed: 00:00:00.49 --
APP_TMP.TESTEEMENT_RESOURCE... Elapsed: 00:00:00.74 --
效果基本達到了,但是顯示比較粗糙,不規整,這個時候awk能幫上大忙了。
使用如下的指令碼來格式化輸出
awk '
BEGIN{
print "#########################################################################"
printf "%-50s %8s %11s \n", "Table_name","Elapsed","time"
print "#########################################################################"
}
{printf "%-50s %8s %11s \n", $1,$2,$3,$4
}'
這樣環環相扣,就可以輸出基本完整的報告了。完整命令如下:
grep -A1 --color=auto "Get Dump file for " extract.log |sed 's/Get Dump file for //' |sed 'N;N;s/\n/ /g' |awk '
BEGIN{
print "#########################################################################"
printf "%-50s %8s %11s \n", "Table_name","Elapsed","time"
print "#########################################################################"
}
{printf "%-50s %8s %11s \n", $1,$2,$3,$4
}'
輸出:
#########################################################################
Table_name Elapsed time
#########################################################################
APP_TMP.TESTRESS_DATA... Elapsed: 00:00:01.13
APP_TMP.TESTRESS_NAME_LINK... Elapsed: 00:00:00.64
APP_TMP.TESTEEMENT... Elapsed: 00:00:00.49
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127754/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用shell指令碼對Nginx日誌進行切分指令碼Nginx
- 使用Java和Elastic Stack進行日誌分析JavaAST
- 對比Elasticsearch,使用Doris進行高效日誌分析(下)Elasticsearch
- 對比Elasticsearch,使用Doris進行高效日誌分析(上)Elasticsearch
- SHELL-分析日誌例項
- 在Linux中,如何使用ELK進行日誌管理和分析?Linux
- 使用 shell 命令統計日誌
- shell在手分析伺服器日誌不愁?伺服器
- Nginx access.log日誌分析shell命令Nginx
- 通過JVM日誌來進行安全點分析JVM
- 使用Log4j進行日誌操作
- shell分割日誌
- 日誌分析-apache日誌分析Apache
- Gin 框架 - 使用 logrus 進行日誌記錄框架
- ABP 使用ElasticSearch、Kibana、Docker 進行日誌收集ElasticsearchDocker
- 使用Oracle的logminer工具進行日誌挖掘Oracle
- 使用apache日誌進行訪問ip的排序Apache排序
- 使用Log4j進行日誌記錄
- .Net Core中使用DiagnosticSource進行日誌記錄
- Shell 分析伺服器日誌命令集錦伺服器
- 使用cronolog工具給tomcat進行日誌切割Tomcat
- nginx日誌按照天進行分割Nginx
- 【shell】日誌切割指令碼指令碼
- hbase shell - 使用filter進行scanFilter
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- 日誌服務之分析使用者訪問行為
- java 執行shell命令及日誌收集避坑指南Java
- 利用DNS日誌進行MySQL盲注DNSMySql
- Netflix 如何使用eBPF流日誌進行網路洞察?eBPF
- shell日誌顏色處理
- C++遍歷日誌log目錄,並提取資料進行分析C++
- 玄機-第二章日誌分析-apache日誌分析Apache
- Apche日誌系列(4):日誌分析(轉)
- FDOAGENT日誌分析
- crash日誌分析
- awk分析日誌
- pg日誌分析
- 在oracle中Logmnr進行日誌挖掘Oracle