Linux内核及系统日志

Linux内核及系统日志

  • 查看系统负载
    • 查看进程
  • 内核日志排错--dmesg日志
    • dmesg常见用法:
      • 查看内核日志中的调用栈
      • 查看dmesg日志
      • 使用`dmesg`命令将`Linux内核环形缓冲区` 重定向到 `本地文件`
  • Linux系统日志
    • 查看系统常规日志--messages日志
    • 查看系统安全日志
    • 查看系统计划任务日志
  • kdump日志
  • 系统异常重启定位思路
  • Linux服务巡检常用命令
    • 用户登录日志(用户登陆审计)
      • last显示登录成功的信息
      • lastb显示登录失败的信息
    • 查看用户信息
    • 查看特权账号
    • 查看硬件信息
    • 查看系统环境
    • 查看网络信息
  • 将日志传送到远程rsyslog服务器
  • 日志的切割与轮替

查看系统负载

系统版本声明:RHEL7
https://www.linuxcool.com/uptime

# 查看系统运行时间、用户数、负载
uptime

在这里插入图片描述

# 显示本次系统的开机时间
uptime -s

Linux内核及系统日志_第1张图片

# 查看系统负载
cat /proc/loadavg

Linux内核及系统日志_第2张图片


查看进程

ps -ef # 查看所有进程
top # 实时显示进程状态

内核日志排错–dmesg日志

查看内核启动时的内容

参考: https://cloud.tencent.com/developer/article/1554567?from=14588

dmesg日志只记录本次启动之后的信息,但较messages更详细。内核或应用软件bug发生的情况下大多有如下形式的calltrace(栈回溯信息)记录,可用于问题定位:


dmesg常见用法:

https://www.linuxcool.com/dmesg
https://wangchujiang.com/linux-command/c/dmesg.html

Linux内核及系统日志_第3张图片


查看内核日志中的调用栈

# 以易读格式显示日志事件
dmesg -T

# 查看内核日志中的调用栈
##  -T 显示易读的时间戳
## less防止太大屏幕滚动停不下来
dmesg -T|less

# 显示最后10条日志
dmesg -T | tail -n 10
# 从下往上看

Linux内核及系统日志_第4张图片


查看dmesg日志

# 查看内核启动时的内容
# 本次启动之后的日志
dmesg
## 日志的时间默认以时间戳方式显示

Linux内核及系统日志_第5张图片

## 查看的是/var/log/dmesg文件
tail /var/log/dmesg

### 滚动查看
tailf /var/log.dmesg
tail -f /var/log.dmesg


使用dmesg命令将Linux内核环形缓冲区 重定向到 本地文件

# 将Linux内核环形缓冲区 重定向到 本地文件
dmesg > dmesg_messages`

然后本地打开dmesg_messages文件进行分析


Linux系统日志

内核及系统日志有系统服务rsyslog统一管理,根据其主配置文件

/etc/rsyslog.conf 中的设置决定将内核消息及各种系统程序消息记录到什么位置.

/var/log/access-log 记录HTTP/WEB的信息

/var/log/dmesg 内核启动时的日志,开机时在屏幕显示,该命令查
看本地系统启动时的硬件和内核缓冲信息,用dmesg命令查看

/var/log/boot.log 记录系统启动的软件日志信息


日志文件 日志作用 查看方式
dmesg 主要记录系统在开机时内核检测过程所产生的信息 通过执行dmesg命令查看.
/var/log/wtmp or /var/log/faillog 这两个文件可以记录正确登陆系统者的账户信息(wtmp),与错误登陆时所使用的账户信息 last命令就是读取wtmp文件来获取的.
/var/log/btmp 记录错误登陆日志,这个文件是二进制的 不能使用cat命令查看,而要使用lastb命令查看.
/var/run/utmp 记录当前一登陆用户的信息 不能使用cat命令查看,而要使用w,who,users命令来查询.
/var/log/lastlog 记录了系统上面所有账户最近一次登陆系统时的相关信息 lastlog命令就是读取这个文件里的记录来显示的.
/var/log/secure 系统安全日志,记录用户远程登录,认证过程中的事件信息,只要涉及到需要用户名和密码的操作,那么当登陆系统是(不论正确错误),都会记录到这里.
/var/log/messages 这个文件非常重要,几乎系统发生的错误信息,或者重要信息都会被记录在这里.系统公共常规日志,记录内核消息,包括启动,IO/网络/程序错误日志
/var/log/cron 主要记录关于crontab计划任务的相关信息,比如,系统计划任务的错误配置,计划任务的修改等. 查看系统计划任务日志
tail --f /var/log/cron
使用关键字过滤计划任务日志
grep “alidata” /var/log/cron
/var/log/malilog or /var/log/mail/* 记录着邮件的往来信息,默认是postfix邮件服务器的一些信息.

查看系统常规日志–messages日志

messages日志位于/var/log路径下,其中messages是记录当前系统日志的文件, 其他形如messages-YYYYMMDD的文件是历史日志信息。一般通过系统异常的时间点或者关键字messages日志中查找相关信息进行分析。

# 查看messages日志
more /var/log/messages

Linux内核及系统日志_第6张图片

## tail用来查看最后十条log,和cat效果是一样的
# 查看最后10条系统常规日志
tail /var/log/messages

# 持续查看OS日志
tail -f /var/log/messages


查看系统安全日志

# 查看系统安全日志
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

kdump日志

Kdump是一个用于收集系统崩溃死锁死机时内核参数的一个服务。举例来说,如果有一天系统崩溃了,在这时Kdump服务就会开始工作,将系统的运行状态和内核数据收集到一个“dump core”的文件中,便于后续让运维人员分析找出问题所在。

• 触发panic的情况下,在/var/crash目录下会生成以问题发生时间点命名的文件夹,其下有vmcore文件(即kdump)以及vmcore-dmesg.txt文件。vmcore-dmesg文件包含calltrace信息,可用于基本的问题定界。
• 通过vmcore可以找到崩溃时间、kernel panic的原因等信息;
• 通过分析堆栈一般可以定位出系统故障的真正原因;

  • DATE:发生panic的时间。
  • UPTIME:系统发生panic前持续运行的时间。
  • LOAD AVERAGE:1分钟,5分钟,15分钟内统计的CPU负载平均值(正在运行和准备运行的任务的数目)
  • TASKS:发生panic时系统中进程总数,包括处于各种状态的进程总和。
  • PANIC:系统发生panic的原因及相应信息。
  • PID:发生panic的任务号。
  • COMMAND:发生panic的任务正在执行的操作。
  • TASK:发生panic的任务描述符。
  • THREAD_INFO:发生panicthread_info结构体的地址。
  • STATE:发生panic的任务当时的状态。

系统异常重启定位思路

• 确认系统异常重启大概时间点(告警、日志、系统最后一次启动时间等)
• 通过/var/log/message 文件查找Command line日志,确认在问题时间点附近有相关字段来确认是否为正常reboot 命令调用:
• 通过/var/log/message 文件,确认是否有用户态程序调用导致的重启
• 通过/var/crash 目录下是否有以异常时间命名的文件夹crash日志产生,确认是否为panic导致的重启或者oom导致的重启(oom指的是程序在申请内存的时候,内存不足导致系统的重启)

# 查看crash下是否有时间文件夹
ll /var/crash/

image.png
• 在虚拟机场景下排查主机日志看是否是主机发起的重启,在物理机场景下查看BMC日志看是否有物理机掉电
• 查看串口日志打印是否有异常重启的信息


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

将日志传送到远程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.

日志的切割与轮替

https://blog.csdn.net/omaidb/article/details/120425069

logrotate服务用于完成日志转储
Linux内核及系统日志_第7张图片

你可能感兴趣的:(Linux内核,messages,dmesg,系统日志,rsyslog)