Linux 统计Apache日志的TAT值 目录一. 日志结构二. 使用命令统计三. 封装为函数统计一. 日志结构52.198.34.21 --[01/May/2026:00:00:03 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200612143-110279218654-13.231.88.102 --[01/May/2026:00:00:03 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200498132-98065022341-3.114.76.9 --[01/May/2026:00:00:03 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1500098-1500120045678-18.179.45.67 --[01/May/2026:00:00:04 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200530151-120081025612-54.250.190.11 --[01/May/2026:00:00:04 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200545149-118080024987-35.72.14.88 --[01/May/2026:00:00:04 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1404210120-90060014321-52.69.201.44 --[01/May/2026:00:00:05 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200520148-119080526001-18.182.33.90 --[01/May/2026:00:00:05 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200505140-115078023876-13.115.77.123 --[01/May/2026:00:00:05 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200490135-100070021045-3.112.200.55 --[01/May/2026:00:00:06 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200560155-125083027560-54.248.90.201 --[01/May/2026:00:00:06 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.15000100-1600130050234-18.180.61.77 --[01/May/2026:00:00:06 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200515142-117579024567-52.192.140.18 --[01/May/2026:00:00:07 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200525150-121081525890-13.230.55.66 --[01/May/2026:00:00:07 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1200535152-122082026234-3.115.99.101 --[01/May/2026:00:00:07 0900]POST /op/cmn/mpl_eu_api/cca HTTP/1.1404220118-95064015002-倒数第2列是请求总耗时列需要统计0点2分到3分的每秒的TAT值200528151-120381625657- ↑ └─ 请求总耗时微秒 or 毫秒二. 使用命令统计日志文件比较大因为只需要统计2-3分的日志因此将此部分的日志单独抽取出来同时排除一些无用日志grep-a-vi-Eresources|HealthCkeckbig_apache.log|grep01/May/2026:00:0[2-3]:apache.logsed -e s/.*\[//g将[之前的部分替换为空即删除[之前的部分包括[自身$(NF-1)倒数第二个字段NR当前处理的总行数记录数grep-a01/May/2026:00:02:00./apache.log|sed-es/.*\[//g|awk{m$(NF-1)} END {if(NR0) print m/NR; else print 0 }|xargs-I{}echo00:02:00 平均TAT: {}grep-a01/May/2026:00:02:01./apache.log|sed-es/.*\[//g|awk{m$(NF-1)} END {if(NR0) print m/NR; else print 0 }|xargs-I{}echo00:02:01 平均TAT: {}grep-a01/May/2026:00:02:03./apache.log|sed-es/.*\[//g|awk{m$(NF-1)} END {if(NR0) print m/NR; else print 0 }|xargs-I{}echo00:02:03 平均TAT: {}。。。省略。。。grep-a01/May/2026:00:02:59./apache.log|sed-es/.*\[//g|awk{m$(NF-1)} END {if(NR0) print m/NR; else print 0 }|xargs-I{}echo00:02:59 平均TAT: {}。。。省略。。。grep-a01/May/2026:00:03:59./apache.log|sed-es/.*\[//g|awk{m$(NF-1)} END {if(NR0) print m/NR; else print 0 }|xargs-I{}echo00:03:59 平均TAT: {}apluserFengYeHong-HP:20260504$grep-a01/May/2026:00:02:00./apache.log|sed-es/.*\[//g|awk{m$(NF-1)} END {if(NR0) print m/NR; else print 0 }|xargs-I{}echo00:02:00 平均TAT: {}00:02:00 平均TAT:28891apluserFengYeHong-HP:20260504$三. 封装为函数统计echo {00..59}用于生成00到59的数字# 日志的绝对路径temp_log_path/home/apluser/work/20260504/apache.log# 统计TAT用的函数functionTATCount{prefix$1logPath$2foriin$(echo{00..59});dots$prefix:$igrep$ts$logPath|sed-es/.*\[//g|\awk-vtime$ts{m$(NF-1)} END {if(NR0) printf %s 平均TAT: %.0f\n, time, m/NR; else printf %s 平均TAT: 0\n, time}done}# 统计TATCount01/May/2026:00:00$temp_log_pathTATCount01/May/2026:00:01$temp_log_path