Linux基础日志分析
四、日志分析
【1】、what is 日志
- 日志log
- 分析,检查系统,服务是否正常运行,一般都要看日志。 后面学习的一些服务软件,遇到故障就要查看日志。
- Linux日志一般存放在/var/log/目录。
【2】、核心日志
ip,root,密码,22(端口)
Linux默认核心日志 | 说明 |
---|---|
/var/log/secure(麒麟,红帽系统) /var/log/auth.log (debian,ubt) | 用户登录情况,分析错误,分析正确 |
/var/log/messages(麒麟,红帽系统) /var/log/syslog(debian,ubt) | 通用日志(服务) 服务如果没有单独的日志,一般就会记录到这里面。 |
...... |
root@xu-ubuntu:~# ll /var/log/auth.log
-rw-r----- 1 syslog adm 6303 Nov 4 08:05 /var/log/auth.log
[root@kylin-xu ~]# ll /var/log/secure
-rw------- 1 root root 6269 nov 4 00:31 /var/log/secure
root@xu-ubuntu:~# ll /var/log/syslog
-rw-r----- 1 syslog adm 230481 Nov 4 07:29 /var/log/syslog
[root@kylin-xu ~]# ll /var/log/messages
-rw------- 1 root root 2199907 nov 4 05:06 /var/log/messages
分析secure (auth.log)日志:
- failure
- failed ( Failed password)
kylin错误登录分析
Ubuntu错误登录分析
【3】、故障案例:某开发人员vim编辑2g日志导致系统内存不足。
背景: 突然发现测试环境某个机器,提示内存不足。我们去查看。
步骤:定位出是vim命令占用的。发现vim编辑日志。
解决:结束进程
预防:
-
发现开发人员操作,查看日志,vim查看。
-
培训开发人员使用tail,head,less,more,grep查看不要用cat,vim.
【4】、查看内存指令
tail,head,less,more,grep
1、tail
- 文件结尾的数据。默认查看文件末尾10行。
查看文件最后的20行 -20 -n20
[root@kylin-xu ~]# tail -20 /var/log/secure
Nov 3 23:40:10 kylin-xu polkitd[768]: Loading rules from directory /etc/polkit-1/rules.d
Nov 3 23:40:10 kylin-xu polkitd[768]: Loading rules from directory /usr/share/polkit-1/rules.d
Nov 3 23:40:10 kylin-xu polkitd[768]: Finished loading, compiling and executing 5 rules
Nov 3 23:40:10 kylin-xu polkitd[768]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Nov 3 23:40:17 kylin-xu systemd[1105]: pam_unix(systemd-user:session): session opened for user root(uid=0) by (uid=0)
Nov 3 23:40:18 kylin-xu sshd[1029]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov 3 23:41:17 kylin-xu polkitd[752]: Loading rules from directory /etc/polkit-1/rules.d
Nov 3 23:41:17 kylin-xu polkitd[752]: Loading rules from directory /usr/share/polkit-1/rules.d
Nov 3 23:41:17 kylin-xu polkitd[752]: Finished loading, compiling and executing 5 rules
Nov 3 23:41:17 kylin-xu polkitd[752]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Nov 3 23:42:59 kylin-xu systemd[1437]: pam_unix(systemd-user:session): session opened for user root(uid=0) by (uid=0)
Nov 3 23:42:59 kylin-xu sshd[1427]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov 3 23:52:47 kylin-xu sshd[1427]: pam_unix(sshd:session): session closed for user root
Nov 3 23:52:48 kylin-xu sshd[3968]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov 4 00:31:07 kylin-xu sshd[3968]: pam_unix(sshd:session): session closed for user root
Nov 4 00:31:08 kylin-xu sshd[66374]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov 4 05:14:54 kylin-xu sshd[135641]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Nov 4 05:15:02 kylin-xu sshd[135641]: pam_unix(sshd:session): session closed for user root
Nov 4 05:15:17 kylin-xu login[902]: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=root
Nov 4 05:15:20 kylin-xu login[902]: FAILED LOGIN SESSION FROM tty1 FOR root, Permission denied
[root@kylin-xu ~]# tail -20 /var/log/secure | wc -l
20
- 查看文件末尾的实时更新
[root@kylin-xu ~]# tail -f /var/log/secure
2、head
查看文件开头的内容,默认显示10行。
head /var/log/secure
# 显示第一行
head -1 /var/log/secure
3、less、more
- less /etc/serivces
下一页: 空格或ctrl + f
上一页: ctrl + b
第1行: g
最后一行: G
某一行: 100回车
/搜索
q 退出
more 快捷键没有那么多,到文件末尾自动退出。
4、过滤 在文件中查找内容
四剑客 find,grep,sed,awk
- grep
grep选项 | |
---|---|
--color | 加颜色 |
-i | 不区分大小写 |
-n | 显示行号 |
-v | 取反,排除 |
- 在/etc/passwd文件中过滤出root的行
grep --color 'root' /etc/passwd
- 在/var/log/secure文件中过滤出failure行。
grep --color 'failure' /var/log/secure
- /var/log/auth.log中过滤出failed password
grep -i 'failed password' /var/log/auth.log
- 不区分大小写过滤出 /etc/ssh/sshd_config 文件中包含
port 22
的行并输出行号
grep --color -i -n 'port 22' /etc/ssh/sshd_config
- 排除(取反)/etc/ssh/sshd_config文件中的#(井号)
grep -v '#' /etc/ssh/sshd_config
5、wc
- 统计文件行数
xu@xu-ubuntu:~$ wc -l /etc/services
361 /etc/services
- wc一般搭配管道使用,其他命令使用。
- 初步统计功能。
【5】、日志统计
1、管道
管道: 符号 | ,前1个命令执行后输出,通过管道符号,传递给下一个命令使用。
- 过滤/etc/passwd中包含/bin/bash的行,行数。
[root@kylin-xu ~]# grep /bin/bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@kylin-xu ~]# grep /bin/bash /etc/passwd | wc -l
1
- ps -ef 显示linux进程的命令,linux进程数量
[root@kylin-xu ~]# ps -ef | wc -l
151
- ps -ef 显示linux进程的命令,统计/sbin/sshd进程数量(远程连接服务的进程)
[root@kylin-xu ~]# ps -ef | grep /sbin/sshd
root 872 1 0 nov03 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 143510 66389 0 05:46 pts/0 00:00:00 grep /sbin/sshd
[root@kylin-xu ~]# ps -ef | grep /sbin/sshd | wc -l
2
2、日志
- 上传文件到linux
安装lrzsz
yum install -y lrzsz #麒麟
#ubt,debian 使用root用户
sudo su -
apt update
apt install -y lrzsz
#命令说明
rz 上传 rz回车即可或拖拽
sz 下载 sz /etc/hostname 下载指定的文件。
- 解压缩
unzip secure-20161219.zip #解压到当前目录。
#如果提示命令找不到 command not found
检查:
[root@oldboyedu ~]# ll -h secure-20161219
-rw-r--r-- 1 root root 49M 2月 15 2017 secure-20161219
#字节,
#KB
#MB
#GT
#GB
#TB
#PB
#EB
- 分析
3、复现故障案例
cat secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 secure-20161219 > secure-big
[root@kylin-xu ~]# ll -h secure-big
-rw-r--r-- 1 root root 974M 11月 4 07:11 secure-big
-
检查内存: free -h
-
vim编辑文件
-
开个窗口 查看内存
4、日志分析搭档sort,uniq
- sort 排序
- uniq unique独一无二的,去重。
(1)、sort
sort选项 | |
---|---|
-r | 逆序排序 |
-n | 按照数字形式排序 |
-k | -k指定列, |
[root@kylin-xu ~]# sort num.txt
# 默认是按照数字的第一个数字排序
0
1
131
154
161
26
3
31
4164
46
74
749
99
[root@kylin-xu ~]# sort num.txt -n
0
1
3
26
31
46
74
99
131
154
161
749
4164
[root@kylin-xu ~]# sort num.txt -nr
4164
749
161
154
131
99
74
46
31
26
3
1
0
[root@kylin-xu ~]# sort num.txt -nr -k 2
aasc 4164
xixi 749
haha 161
dtgfhdsgf 154
aaa 131
safdg 99
ewsrf 74
bb 46
qawq 31
sadg 26
bsadfg 3
ss 1
afa 0
ps aux 第4列是内存使用率,对这列排序,取出前5个
root@xu-ubuntu:~# ps aux | sort -nr -k 4 | head -5
root 4855 0.5 0.8 1393992 31980 ? Ssl 10:39 0:21 /usr/lib/snapd/snapd
root 548 0.0 0.6 354888 27232 ? SLsl 03:51 0:06 /sbin/multipathd -d -s
root 899 0.0 0.5 107120 21528 ? Ssl 03:51 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root 835 0.0 0.4 30104 18920 ? Ss 03:51 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 510 0.0 0.4 47884 16904 ? S<s 03:51 0:01 /lib/systemd/systemd-journald
(2)、uniq
- 去重,一般要与sort搭配。
[root@oldboyedu ~]# cat uniq.txt
lidao
oldboy
lidao
lidao
lidao
lidao
lidao
lidao
lidao
lidao
lidao
oldboy
oldboy
oldboy
oldboy
oldboy
[root@oldboyedu ~]# sort uniq.txt |uniq -c
10 lidao
6 oldboy
(3)、awk
-
取列
-
awk 取列 NF表示最后一列
[root@kylin-xu ~]# cat num.txt
haha 161 192.168.121.11
xixi 749 192.168.121.111
aaa 131 192.168.121.116
aasc 4164 192.178.121.11
dtgfhdsgf 154 192.178.121.180
qawq 31 192.178.31.11
[root@kylin-xu ~]# awk '{print $3}' num.txt
192.168.121.11
192.168.121.111
192.168.121.116
192.178.121.11
192.178.121.180
192.178.31.11
[root@kylin-xu ~]# awk '{print $NF}' num.txt
192.168.121.11
192.168.121.111
192.168.121.116
192.178.121.11
192.178.121.180
192.178.31.11
【6】、日志分析实战
1、secure日志分析
- 1️⃣过滤出failed password,失败登录。 取行
- 2️⃣ 提取出这行中的ip的列。 取列
- 3️⃣ 对ip进行排序。 相同的ip在一起。
- 4️⃣ 去掉重复,统计次数。 去重并统计次数。uniq -c
- 5️⃣ 对次数排序并取出前20个
NF-3:取出倒数第四列。
因为从正向数,是不规律的,因此只能倒序数
[root@kylin-xu ~]# grep -i "failed password" secure-20161219 | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20
68652 218.65.30.25
34326 218.65.30.53
21201 218.87.109.154
18065 112.85.42.103
17164 112.85.42.99
17163 218.87.109.151
17163 218.87.109.150
17163 218.65.30.61
17163 218.65.30.126
17163 218.65.30.124
17163 218.65.30.123
17163 218.65.30.122
17163 182.100.67.120
17163 182.100.67.119
17163 112.85.42.124
17163 112.85.42.107
3289 222.186.50.206
3265 219.133.29.16
3206 111.73.46.156
2479 117.21.226.189
2、access日志分析
- 2️⃣ 提取出这行中的ip的列。 取列
- 3️⃣ 对ip进行排序。 相同的ip在一起。
- 4️⃣ 去掉重复,统计次数。 去重并统计次数。uniq -c
- 5️⃣ 对次数排序并取出前20个
[root@kylin-xu ~]# awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
12049 58.220.223.62
10856 112.64.171.98
1982 114.83.184.139
1662 117.136.66.10
1318 115.29.245.13
961 223.104.5.197
957 116.216.0.60
939 180.111.48.14
871 223.104.5.202
869 223.104.4.139
799 124.160.208.186
792 121.235.250.231
774 116.226.186.208
753 114.111.166.22
752 122.234.234.124
751 61.148.243.193
733 58.33.166.73
733 222.67.7.159
717 140.206.89.233
706 101.226.125.113
本文来自博客园,作者:Linux小菜鸟,转载请注明原文链接:https://www.cnblogs.com/xuruizhao/p/18540758