如何查看日志定位线上问题?

我们公司的服务是部署到Linux上的,当线上出现各种问题的时候,并不能像本地运行那样打断点定位,这时候代码中关键信息处是否合理添加日志就显得尤为重要(关于给代码合理添加日志的技巧,在另一篇博文中进行了总结,有兴趣可以前往),在此基础上就需要进一步学会如何看线上日志。这一篇文章就是教你从最基础的步骤开始通过查看线上日志逐步排查问题。
为了安全性,很多公司会用到堡垒机来登录公司中的所有Linux机器。所以一开始我要先向公司申请堡垒机,申请通过后会给我创建一个堡垒机跳板账号并授予默认权限,默认的話只会给我所在业务线的机器“只读”权限,当然,这个只是各个公司内部得管理问题啦。

你是不是也跟我一样有疑问,什么是跳板机、堡垒机啊?简单来说呢,跳板机就是一台服务器,是我们开发人员登录到服务器的唯一途径,ssh命令统一登录到这台服务器之后再通过这台服务器也即跳板机登录到目标的应用服务器。之所以要切断终端对服务器资源的直接访问而采用这种协议代理到方式,原因是为了保护业务机器的安全,便于对身份和权限到集中管理,以及运维事故事后审计,话说我们在通过堡垒机输入的各种命令操作,运维端都可以一一看到,有种被监视的感觉有木有,但是只要不出现事故,也不会回放啦。

这样呢,我就有了创建堡垒机回话的密钥,可以使用Xshell(当然也可以使用secureCRT,mac可以使用自带的terminal)登录堡垒机啦。
具体登录和链接过程如下图所示:

  1. 点击左上角的新建按钮
  2. 自定义会话名称,填上服务所部署的那台服务器的地址和端口号
  3. 然后点击用户身份验证,方法选择public key,填写用户名,选择密钥文件
  4. 点击确定完成。

在这里插入图片描述
在这里插入图片描述
喏,前面说了这么多,马上要进入正题啦啦啦
go xxx
go xxx 令连接指定机器,其中xxx表示代码部署的机器ip。值得注意的是,很多时候同一个项目会做集群,这样会导致日志分布在不同的服务器上。
另外,我要先知道我们服务的日志是放在哪个文件夹里面,如果实在不知道,可以一步步进入,然后通过ll或者ls命令查看。走错了就输入 cd … 返回上一级。
在这里插入图片描述
ll 和 ls命令的区别: ”ls“是显示当前目录下文件,"ll"是”ls -l“的别名,是显示当前目录下文件详细信息

当你找到日志文件info_roll.log了,可以进行以下操作:

cat info_roll.log 这个命令可以一次显示整个文件的内容,最后是回到命令行模式的。
那如果文件内容太多,你可以使用下面的命令
1)cat info_roll.log | tail -n 1000 意思是输出info_roll.log文件的最后1000行(并不是屏幕展示的行数,而是一个日期时间点算一行)
2)cat info_roll.log | tail -n +1000 | head -n 500 意思从1000行开始,显示 500行

有时候我们可能需要问题复现,tail命令可以不停的刷新日志,比较适合实时观察程序的日志情况。

tail -f info_roll.log 查看info_roll.log实时日志
1)tail -100f info_roll.log 查看最后100行日志记录
2)tail -n +100 info_roll.log 查看100行之后的所有日志
3)tail -fn 100 info_roll.log 循环实时查看最后100行记录。你们可以也看出来了,f 就表示循环读取的意思
要退出tail 命令,可以使用Control+c组合键退出。

如果你比较喜欢一页一页展示,那就用more命令吧。配合空白建(spacce)往下翻一页,配合返回键(back)往上一页展示。

上面介绍的命令都是在查找文件方面比较方便,但是很多时候我们需要根据关键字查找,这时候可以使用grep命令。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值