pm2日志排查nodejs长耗时接口

```shell
pm2 日志接口进行每日定时获取平均值降序排序,排查长时间耗时接口
环境 centos7 
1
首先把pm2日志按每日进行切割
官方文档 https://pm2.keymetrics.io/docs/usage/log-management/
安装 
# pm2 install pm2-logrotate
2配置 默认即可
vim /root/.pm2/module_conf.json 
重启 pm2 即刻生成
#	pm2 reload all
2
#方法:使用shell命令把需要拿出来用的日志格式化出来 然后导成csv使用sql查询需要的值
#pm2日志格式例如
[Nest] 6439  - 04/29/2022, 6:03:00 PM     LOG [test-API] <---- abc/abctest aopdsiaposdiaposdi  26ms
#经过shell脚本冲洗 是这样的
04/29/2022, 6:03:00 PM,abc/abctest ,aopdsiaposdiaposdi,26
#导出来后使用sql查询并没有字段需要手动添加字段才能查询 date,time,path,id,ms

#然后需要安装querycsv这个工具 
https://pypi.org/project/querycsv/#files 
#安装完成后进行解压
#在querycsv目录内安装python包
python setup.py install
#查看系统是否有这个命令 querycsv.py 有即可

#shell脚本以下操作
[root@test analyzelogs]# cat avglogs.sh 
#!/bin/bash

logs=/root/.pm2/logs/*out__$(date "+%Y-%m-%d")_00-00-00.log

suffix=$(date -d yesterday "+%Y%m%d")

cd /root/.pm2/logs/analyzelogs 

cat -n $logs | grep test-API  | grep '<----'  | sort -nk 14 -r | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"   |  awk '{print $5,$6,$7","$11,","$12","$13}' | sed 's/ms$//g'  > analysis$suffix.csv

sed -i "1i date,time,path,id,ms" analysis$suffix.csv

querycsv.py -i analysis$suffix.csv "select avg(ms),sum(1),path from analysis$suffix group by path order by avg(ms) desc" >> analysis$suffix.csv

[root@test analyzelogs]# 
3
#然后使用centos自带的定时任务
crontab -e

每日早上9点运行任务
# 0 9 * * * sh /root/.pm2/logs/analyzelogs/avglogs.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值