Linux内核及系统日志
查看系统负载
系统版本声明:RHEL7
https://www.linuxcool.com/uptime
# 查看系统运行时间、用户数、负载
uptime
# 显示本次系统的开机时间
uptime -s
# 查看系统负载
cat /proc/loadavg
查看进程
ps -ef # 查看所有进程
top # 实时显示进程状态
Linux内核及系统日志
内核及系统日志有系统服务rsyslog
统一管理,根据其主配置文件
/etc/rsyslog.conf
中的设置决定将内核消息及各种系统程序消息记录到什么位置.
/var/log/messages
系统公共常规日志,记录内核消息,包括启动,IO/网络/程序错误日志
/var/log/access-log
记录HTTP/WEB的信息
/var/log/dmesg
内核启动时的日志,开机时在屏幕显示,该命令查看本地系统启动时的硬件和内核缓冲信息,用dmesg
命令查看
/var/log/secure
是系统安全日志,记录用户远程登录,认证过程中的事件信息
/var/log/cron
是计划任务日志
/var/log/maillog
记录进入或发出系统的电子邮件活动
/var/log/boot.log
记录系统启动的软件日志信息
/var/log/wtmp
记录系统所有登录
和退出
记录,使用last
命令查看
/var/log/btmp
记录错误登录
的日志信息,使用lastb
命令查看
/var/log/lastlog
记录最近成功登录
和最后的失败登录
事件,使用lastlog
命令查看
/var/run/utmp
记录当前登录用户,用who
命令查看
查看系统常规日志
## tail用来查看最后十条log,和cat效果是一样的
# 查看最后10条系统常规日志
tail /var/log/messages
# 持续查看OS日志
tail -f /var/log/messages
查看内核启动时的内容
# 查看内核启动时的内容
dmesg
## 查看的是/var/log/dmesg文件
tail /var/log/dmesg
### 滚动查看
tailf /var/log.dmesg
tail -f /var/log.dmesg
查看系统安全日志
# 查看系统安全日志
tail secure
tail /var/log/secure
## 读取的是/var/log/secure文件
# 持续查看系统安全日志
tail -f secure
tail -f /var/log/secure
查看系统计划任务日志
https://blog.csdn.net/omaidb/article/details/120104880
#查看系统计划任务日志
tail -f /var/log/cron
Linux服务巡检常用命令
Linux系统需要定期巡检,以检查服务器软硬件使用情况,相当于对人的体检,确保可以及时发现问题、解决问题,降低损失,常用的巡检命令如下:
用户登录日志(用户登陆审计)
https://www.linuxcool.com/who
who
命令读取/var/run/utmp
文件
# 查看使用系统的当前用户有哪些
# 查看活动用户
w
users
# 查看上次重启时间
who -b
# 查看指定用户信息
id < 用户名>
# 查看所有用户的定时任务
crontab -l
last显示登录成功的信息
https://www.linuxcool.com/last
-a
:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d
:将IP地址转换成主机名称;
-f
: <记录文件>:指定记录文件。
-n
: <显示列数>或-<显示列数>:设置列出名单的显示列数;
-R
:不显示登入系统的主机名称或IP地址;
-x
:显示系统关机,重新开机,以及执行等级的改变等信息。
# 显示登录成功的用户信息
last
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 |
---|---|---|---|---|---|
用户名 | 终端位置 | 来源IP或主机名 | 登录开始时间 | 结束时间 | 持续时间 |
root | pts/2 | 192.168.0.1 | Tue Mar 22 14:30 | still | login in(还未退出) |
root | pts/0 | 192.168.0.1 | Tue Mar 22 13:47 | down(直到正常关机) | 00:01 |
reboot | system boot | 3.10.0-957.el7.x | Tue Mar 22 13:49 | crash(直到强制关机) |
lastb显示登录失败的信息
https://www.linuxcool.com/lastb
常用参数:
-a
把从何处登入系统的主机名称或IP地址显示在最后一行。
-d
将IP地址转换成主机名称。
-f
<记录文件> 指定记录文件。
-n
<显示列数>或-<显示列数> 设置列出名单的显示列数。
-R
不显示登入系统的主机名称或IP地址。
-x
显示系统关机,重新开机,以及执行等级的改变等信息。
# 显示登录失败的用户信息
lastb
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 |
---|---|---|---|---|---|
用户名 | 终端位置 | 来源IP或主机名 | 登录开始时间 | 结束时间 | 持续时间 |
查看用户信息
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
查看特权账号
# 查询特权用户特权用户(uid 为0)
awk -F: '$3==0{print $1}' /etc/passwd
# 查找远程可以登录的账户
## $1:MD5(长度 22个字符)
## $5:SHA-256(长度 43 个字符)
## $6:SHA-512(长度86 个字符)
awk '/\$1|\$5|\$6/{print $1}' /etc/shadow
# 检查sudo权限
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL"
查看硬件信息
cat /proc/cpuinfo # 查看CPU信息
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
df -h # 查看各分区使用情况
du -sh < 目录名> # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
free -m # 查看内存使用量和交换区使用量
swapon -s # 查看所有交换分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况
查看系统环境
hostname # 查看计算机名
uname -a # 查看内核/操作系统/CPU信息
head -n 1 /etc/issue # 查看操作系统版本
lsmod # 列出加载的内核模块
env # 查看环境变量
查看网络信息
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息
配置systemd journald日志持久存储
参考: https://thinkit.co.jp/story/2014/12/18/5389?page=0%2C1
在 CentOS 7 journald 设置中,日志文件存放在 /run/log/journal
目录下。但是/run目录是tmpfs文件系统挂载的,当OS重启时,/run/log/journal
目录下存储的日志文件会被删除。
为了在操作系统重启后也能保存日志,在journald配置文件/etc/systemd/journald.conf
中指定“Storage=persistent”
# 配置日志持久存储
sed -i 's/^#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# 限制日志容量为128MB
SystemMaxUse=128M
重启systemd-journald
服务使配置生效
# 重启systemd-journald服务
systemctl restart systemd-journald
# 检查当前由journald管理的所有日志的容量
journalctl --disk-usage
配置rsyslogd和systemd journald
# 持久化保存日志的目录
mkdir -p /var/log/journal
mkdir -p /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf << EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent
# 压缩历史记录
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
# 最大占用空间
SystemMaxUse=10G
# 单文件最大200M
SystemMaxFileSize=200M
# 日志保存时间2周
MaxRetentionSec=2week
# 是否将日志转发到syslog
ForwardToSyslog=no
EOF
# 重启systemd-journald
systemctl restart systemd-journald
无法发现/var/log/journal目录
# 将Storage参数与更改成Storage=persistent
vim /etc/systemd/journald.conf
Storage=persistent
# 重启systemd-journald服务
systemctl restart systemd-journald
journalctl查看日志
https://linux.cn/article-15544-1.html
根据日期查看
# 根据日期查看
journalctl --since="2021-10-02 22:00:00"
journalctl查看systemd日志
参考: journalctl常见用法
# 查看指定service日志
journalctl -u 服务名
## 例如:docker起不来
journalctl -u docker
# 动态查看日志(持续输出,类似于logs -f)
journalctl -eu rancherd-server -f
## 实时滚动显示某个Unit的最新日志
journalctl -u kubelet -f
# 只查看今天的kubelet日志
## |less可以解决日志显示不全的问题
journalctl -u kubelet --since today |less
查看引导记录
# 查看引导记录
journalctl -b
# 查看指定时间的日志
journalctl --since="2021-10-02 22:00:00"
将日志传送到远程rsyslog服务器
使用 journalctl
命令获取日志并将日志传输到远程 rsyslog 服务器(IP 地址为 172.16.70.99)。
# 将日志传送到原创rsyslog服务器
journalctl -o short -f |nc -uv 172.16.70.99 514
## 打印
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 172.16.70.99:514.