Linux日志管理基本概念
Posted 白-胖-子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux日志管理基本概念相关的知识,希望对你有一定的参考价值。
日志
- 操作系统或应用程序发生的事件记录下来
- 通过分析日志挖掘出数据进行分析和利用
- 日志内容:时间,位置,用户,事件,级别……
系统日志管理
系统日志管理工具介绍
sysklogd 老版本使用
- CentOS 5 之前版本采用的日志管理系统服务
- sysklogd分成两个部分
- syslogd: system application 记录应用日志
- klogd: linux kernel 记录内核日志
rsyslog 新版本
- rsyslog是CentOS 6 以后版本的系统管理服务。
- rsyslog提供了高性能,出色的安全性和模块化设计。
- rsyslog能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。
ELK 分布式日志管理系统
- Elasticsearch查到集日志并通过 Logstash收集整理在用kibana展示出来
- ELK:由Elasticsearch, Logstash, Kibana三个软件组成非关系型分布式数据库
- 基于apache软件基金会jakarta项目组的项目lucene
- Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,
比如:nginx、Tomcat、系统日志等功能 - Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
- Kibana 可以提供的日志分析友好的 Web 界面
日志相关概念
faclity 设施 对日志分类
- facility参数用于指定记录消息的程序类型。这让配置文件指定来自不同的消息
设施将以不同的方式处理。
#内置分类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),
user, uucp, syslog
#自定义的分类
local0-local7
常见日志问分类
- LOG_AUTH 安全/授权信息
- LOG_AUTHPRIV 安全/授权消息(私有)
- LOG_CRON 时钟守护进程
- LOG_DAEMON 没有单独工具值的系统守护进程
- LOG_FTP ftp 守护进程
- LOG_KERN 内核消息(不能从用户进程生成)
- LOG_LPR行打印机子系统
- LOG_MAIL邮件子系统
- USENET新闻子系统
- LOG_SYSLOG 由syslogd(8)内部产生的LOG_SYSLOG消息
- LOG_USER(默认) 通用的用户级消息
- LOG_UUCP UUCP子系统
- LOG_LOCAL0- LOG_LOCAL7 预留给本地使用的用户自定义日志
priority 优先级 对不同的日志排序
LOG_EMERG system is unusable
LOG_ALERT action must be taken immediately
LOG_CRIT critical conditions
LOG_ERR error conditions
LOG_WARNING warning conditions
LOG_NOTICE normal, but significant, condi‐tion
LOG_INFO informational message
LOG_DEBUG debug-level message
- 常看日志帮助
man 3 syslog
Linux常见系统日志文件
- Linux系统日志文件默认存放在/var/log目录下
[root@C8-192 ~]# tree /var/log/
/var/log/
├── anaconda
│ ├── anaconda.log
│ ├── dbus.log
│ ├── dnf.librepo.log
│ ├── hawkey.log
│ ├── ifcfg.log
│ ├── journal.log
│ ├── ks-script-0astvfg3.log
│ ├── ks-script-3gx7lcu8.log
│ ├── ks-script-zk355kub.log
│ ├── packaging.log
│ ├── program.log
│ ├── storage.log
│ └── syslog
├── audit
│ └── audit.log
├── boot.log
├── boot.log-20210531
├── boot.log-20210601
├── btmp
├── btmp-20210601
├── cron
├── dnf.librepo.log
├── dnf.log
├── dnf.rpm.log
├── hawkey.log
├── httpd
│ ├── access_log
│ └── error_log
├── lastlog
├── maillog
├── messages
├── mysql
│ └── mysqld.log
├── php-fpm
│ └── error.log
├── private
├── secure
├── spooler
├── sssd
│ ├── sssd_implicit_files.log
│ ├── sssd_kcm.log
│ ├── sssd.log
│ └── sssd_nss.log
├── tuned
│ └── tuned.log
├── vmware-network.1.log
├── vmware-network.2.log
├── vmware-network.3.log
├── vmware-network.4.log
├── vmware-network.log
├── vmware-vgauthsvc.log.0
├── vmware-vmsvc.log
├── wtmp
└── xferlog
8 directories, 47 files
常见日志文件功能
- /var/log/secure:系统安全日志,文本格式,应周期性分析
- /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
- /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
- /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
- /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况
- /var/log/boot.log 系统服务启动的相关信息,文本格式
- /var/log/messages :系统中大部分的信息
- /var/log/anaconda : anaconda的日志
Linux查看日志常用命令
cat,less,more配合grep、sed、awk等
- 文本格式的日志文件都可以通过文本工具进行查看
## 从日志中查看最近安装了那些包
cat /var/log/dnf.log | sed -nr '/Installed:/{n;p}'
bc-1.07.1-5.el8.x86_64
bash-completion-1:2.7-5.el8.noarch
httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
php-fpm-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
rsyslog-mysql-8.1911.0-6.el8.x86_64
php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-gd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
python38-3.8.3-3.module_el8.3.0+468+0c52a667.x86_64
python36-3.6.8-2.module_el8.3.0+562+e162826a.x86_64
ftp-0.17-78.el8.x86_64
vsftpd-3.0.3-32.el8.x86_64
last 用户正常成功登录系统的日志
[root@C8-192 ~]# last
root pts/0 10.0.0.88 Tue Jun 1 17:26 still logged in
reboot system boot 4.18.0-147.el8.x Tue Jun 1 17:12 still running
root pts/0 10.0.0.88 Mon May 31 18:05 - 01:57 (07:52)
reboot system boot 4.18.0-147.el8.x Mon May 31 16:58 - 01:57 (08:58)
root pts/0 10.0.0.88 Sun May 30 00:29 - 00:29 (00:00)
root pts/0 10.0.0.88 Sat May 29 23:03 - 23:05 (00:01)
root pts/0 10.0.0.88 Sat May 29 22:53 - 23:01 (00:08)
reboot system boot 4.18.0-147.el8.x Sat May 29 22:29 - 00:29 (01:59)
root pts/0 10.0.0.88 Sat May 29 19:47 - 19:47 (00:00)
reboot system boot 4.18.0-147.el8.x Sat May 29 17:56 - 19:47 (01:51)
root tty1 Thu May 20 06:29 - 06:29 (00:00)
reboot system boot 4.18.0-147.el8.x Thu May 20 06:28 - 06:29 (00:01)
root tty1 Thu May 20 06:27 - 06:28 (00:00)
reboot system boot 4.18.0-147.el8.x Thu May 20 06:22 - 06:28 (00:05)
wtmp begins Thu May 20 06:22:14 2021
lastlog 显示每一个用户最近一次的登录信息
lastlog
Username Port From Latest
root pts/0 10.0.0.88 Tue Jun 1 17:26:36 +0800 2021
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
operator **Never logged in**
games **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
dbus **Never logged in**
systemd-coredump **Never logged in**
systemd-resolve **Never logged in**
tss **Never logged in**
polkitd **Never logged in**
unbound **Never logged in**
sssd **Never logged in**
sshd **Never logged in**
rpc **Never logged in**
rpcuser **Never logged in**
tcpdump **Never logged in**
apache **Never logged in**
mysql **Never logged in**
nginx **Never logged in**
lastb 用户失败尝试登录相关的日志信息
[root@C8-192 ~]# lastb
btmp begins Tue Jun 1 18:08:01 2021
dmesg 显示内核硬件变化
dmesg | tail -n 20
[ 8.932037] Bluetooth: Core ver 2.22
[ 8.939661] NET: Registered protocol family 31
[ 8.939664] Bluetooth: HCI device and connection manager initialized
[ 8.939668] Bluetooth: HCI socket layer initialized
[ 8.939670] Bluetooth: L2CAP socket layer initialized
[ 8.939680] Bluetooth: SCO socket layer initialized
[ 9.038449] RAPL PMU: API unit is 2^-32 Joules, 5 fixed counters, 10737418240 ms ovfl timer
[ 9.038451] RAPL PMU: hw unit of domain pp0-core 2^-0 Joules
[ 9.038452] RAPL PMU: hw unit of domain package 2^-0 Joules
[ 9.038452] RAPL PMU: hw unit of domain dram 2^-0 Joules
[ 9.038453] RAPL PMU: hw unit of domain pp1-gpu 2^-0 Joules
[ 9.038453] RAPL PMU: hw unit of domain psys 2^-0 Joules
[ 9.312206] usbcore: registered new interface driver btusb
[ 9.500558] intel_pmc_core: initialized
[ 11.163100] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 11.200948] vmxnet3 0000:03:00.0 eth0: intr type 3, mode 0, 3 vectors allocated
[ 11.201325] vmxnet3 0000:03:00.0 eth0: NIC Link is Up 10000 Mbps
[ 13.641868] vmxnet3 0000:03:00.0 eth0: NIC Link is Down
[ 20.279398] vmxnet3 0000:03:00.0 eth0: NIC Link is Up 10000 Mbps
[15579.943510] hrtimer: interrupt took 257646243 ns
journalctl 查询所有系统服务日志内容
-
journalctl may be used to query the contents of the systemd(1) journal as written by systemd- journald.service(8).
-
CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。
#查看所有日志(默认情况下 ,只保存本次启动的日志)
journalctl
#查看内核日志(不显示应用日志)
journalctl -k
#查看系统本次启动的日志
journalctl -b
journalctl -b -0
#查看上一次启动的日志(需更改设置)
journalctl -b -1
#查看指定时间的日志
journalctl --since="2017-10-30 18:10:30"
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since "2017-01-10" --until "2017-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"
#显示尾部的最新10行日志
journalctl -n
#显示尾部指定行数的日志
journalctl -n 20
#实时滚动显示最新日志
journalctl -f
#查看指定服务的日志
journalctl /usr/lib/systemd/systemd
#查看指定进程的日志
journalctl _PID=1
#查看某个路径的脚本的日志
journalctl /usr/bin/bash
#查看指定用户的日志
journalctl _UID=33 --since today
#查看某个 Unit 的日志
journalctl -u nginx.service
journalctl -u nginx.service --since today
#实时滚动显示某个 Unit 的最新日志
journalctl -u nginx.service -f
#合并显示多个 Unit 的日志
journalctl -u nginx.service -u php-fpm.service --since today
#查看指定优先级(及其以上级别)的日志,共有8级
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
journalctl -p err -b
[root@C8-192 ~]# journalctl | head -n 10
-- Logs begin at Tue 2021-06-01 17:12:35 CST, end at Tue 2021-06-01 22:01:01 CST. --
Jun 01 17:12:35 server8.timonium.co kernel: Linux version 4.18.0-147.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)) #1 SMP Wed Dec 4 21:51:45 UTC 2019
Jun 01 17:12:35 server8.timonium.co kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-147.el8.x86_64 root=UUID=827b1562-fd3a-4e03-ad8b-f4c0b8def517 ro net.ifnames=0 crashkernel=auto resume=UUID=b3fd1c68-6653-41ff-8ecb-25fdcfeeced9 rhgb quiet net.ifnames=0 net.ifnames=0
Jun 01 17:12:35 server8.timonium.co kernel: Disabled fast string operations
Jun 01 17:12:35 server8.timonium.co kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Jun 01 17:12:35 server8.timonium.co kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Jun 01 17:12:35 server8.timonium.co kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Jun 01 17:12:35 server8.timonium.co kernel: x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
Jun 01 17:12:35 server8.timonium.co kernel: x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
Jun 01 17:12:35 server8.timonium.co kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
以上是关于Linux日志管理基本概念的主要内容,如果未能解决你的问题,请参考以下文章
别偷看!Linux系统乾坤大挪移 三式够用- 详解日志管理妙用