一、【说在前面】
写之前吐槽一下,我在从业中发现,很多人喜欢鼓吹XXX比较吃经验,我早期也比较信奉这一点,感觉各行各业应该都有自己的玄学解决问题的方式。
但是笔者也发现很多做了很多年的员工,遇到了问题就是在常用的几个地方点点点,几个参数调来调去靠穷举解决问题,比如上应用配代理,一会404了一会403了,改一改又变成503 504,然后碰巧解决了,有意识的员工就把这个问题的解决方法记录下来,然后美其名曰积累经验。
每次看到这种现象就觉得很无语,这根本就不是积累经验好吧,完全是野路子。一定要记住一点如果你使用的是常见的技术栈,那么大概率是有日志打印的,找到这个日志基本能定位90%的故障原因,就算定位不到,起码也能有一点线索,而不是像无头苍蝇一样到处乱撞。
真正的积累经验是在没人涉足的地方留下自己的脚印或者是面对复杂系统的排障能力。所以借着今天的这个吐槽,整理一下常用的日志位置或命令,希望对大家有帮助。
二、【常用日志位置】
-
系统日志目录:
- Debian/Ubuntu:
/var/log/syslog
- CentOS/RHEL:
/var/log/messages
- Debian/Ubuntu:
-
安全日志
-
CentOS/RHEL:
/var/log/secure
-
Ubuntu/Debian:
/var/log/auth.log
-
-
Nginx 日志目录:
- 错误日志:
/var/log/nginx/error.log
- 访问日志:
/var/log/nginx/access.log
- 错误日志:
-
系统服务日志目录:
- Systemd 服务:
journalctl
- Systemd 日志文件:
/var/log/journal/
- Systemd 服务:
-
应用程序日志目录:
- 通常在应用程序安装目录下的
logs
子目录中 - 或者一般会出现在/var/log/*/*.log 形如下面的形式。
- 通常在应用程序安装目录下的
Nginx:/var/log/nginx/error.log
和 /var/log/nginx/access.log
这里插一句,关于NGINX的错误日志,这篇文章写得非常好,可以看看
nginx(二十九)error.log记录报错信息分析_nginx error_log-CSDN博客
Apache:/var/log/apache2/error.log
和 /var/log/apache2/access.log
MySQL:/var/log/mysql/error.log
APISIX 错误日志:/usr/local/apisix/logs/error.log
APISIX 访问日志:/usr/local/apisix/logs/access.log
DNS - Bind 错误日志:/var/log/named/named.log
DNS - Bind 查询日志:/var/log/named/query.log
DHCP 错误日志:/var/log/dhcpd.log
DHCP 启动日志:/var/log/dhcpd-startup.log
NTP 错误日志:/var/log/ntp.log
NTP 启动日志:/var/log/ntpstart.log
Docker 守护进程日志:/var/log/docker.log
Docker 容器日志位置:/var/lib/docker/containers/<container-id>/
三、【查看日志常用命令】
-
实时查看日志:
tail -f /path/to/logfile
-
使用
journalctl
查看 Systemd 日志:journalctl
-
journalctl
进阶用法:- 根据时间范围查看日志:
journalctl --since "2024-01-01" --until "2024-01-02"
- 查看指定服务的详细信息:
journalctl -u nginx -xe
- 根据时间范围查看日志:
-
按关键词过滤日志:
grep "error" /path/to/logfile
-
按时间戳过滤日志:
awk '/^2024-01-01/ {print}' /path/to/logfile
-
查看最新的 N 行日志:
tail -n N /path/to/logfile
-
使用
dmesg
查看内核日志:dmesg
-
使用
less
逐页查看日志:less /path/to/logfile
-
查看压缩的日志文件:
zcat /path/to/logfile.gz
-
查看服务状态:systemctl
命令:systemctl status serviceName
-
查看某个端口的占用情况:lsof
命令(查看打开的文件和进程):lsof -i :portNumber
-
查看网络统计信息:netstat
命令:netstat -an
-
捕获和分析网络流量:tcpdump
工具:tcpdump -i eth0
-
跟踪系统调用:strace
命令:strace -p PID
-
实时查看并筛选关键词:tail
和grep
组合使用:tail -f /path/to/logfile | grep "error"
-
处理和过滤文本日志文件:awk
和sed
命令:awk '/pattern/ {print $1, $2}' /path/to/logfile
-
自定义脚本和工具:
根据需要编写脚本或使用特定工具进行日志分析。 -
Logrotate 工具:
自动管理和轮转日志文件,防止日志文件过大:logrotate