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日志管理工具 journalctl

别偷看!Linux系统乾坤大挪移 三式够用- 详解日志管理妙用

Linux基于rsyslog启用网络日志服务实现日志实时转储

Linux下进程概念,进程管理和日志系统

Linux日志管理系统rsyslog

Linux内存管理基本概念