日志文件
日志的功能:
1、用于记录系统、程序运行中发生的各种事件
2、通过阅读日志,有助于诊断和解决系统故障
日志文件的分类:
1、内核及系统日志
由系统服务syslog统一进行管理,日志格式基本相似
2、用户日志
记录系统用户登录及退出系统的相关信息
3、程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
日志保存位置:
默认位于/var/log目录下
主要日志文件介绍:
内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/mailog
用户登录日志:/var/log/lastlog、/var/log/secure、/var/log/wtmp、/var/run/btmp
日志的管理
1、由系统服务rsyslogd统一管理
软件包:reyelog-7.4.7-16.el7.x86_64
主要程序: /sbin/rsyslogd
配置文件:/etc/rsyslog.conf
2、查看日志文件目录
cd /var/log
vim messages
3、last命令查看用户登录日志
last
4、lastb查看用户登录次数日志
lastb
5、查看程序日志文件
在 /var/log 下寻找
日志的消息级别
0:EMERG(紧急):会导致主机系统不可用的情况
1:ALERT(警告):必须马上采取措施解决问题
2:CRIT(严重):比较严重的问题
3:ERR(错误):运行出现错误
4:WARNING(提醒):可能会影响系统功能的事件
5:NOTICE(注意):不会影响系统但值得注意
6:INFO(信息):一般信息
7:DEBUG(调试):程序员调试信息
日志管理策略:
1、及时做好备份和归档
2、延长日志保存期限
3、控制日志访问权限
4、日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
1、将服务器的日志文件发到统一的日志文件服务器
2、便于日志信息的统一收集、整理和分析
3、杜绝日志信息的意外丢失、恶意篡改或删除
CentOS7日志查看工具
1、概述:
日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。systemd统一管理所有unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。
日志的配置文件是:/etc/systemd/journald.conf
journalctl功能强大,用法非常多。
本文将介绍journalctl的相关使用方法。
2、journalctl 使用方法
查看所有日志
默认情况下,只保存本次启动的日志
[root@localhost ~]# journalctl
查看内核日志(不显示应用日志)
[root@localhost ~]# journalctl -k
查看系统本次启动的日志
[root@localhost ~]# journalctl -b
查看上一次启动的日志需要设置,如上次系统崩溃时,需要查看日志时,就要看上一次的启动日志。
[root@localhost ~]# journalctl -b -1
查看指定时间的日志:
journalctl --since=“2012-10-3018:17:16”
journalctl --since “20 minago”
journalctl --since yesterday
journalctl --since"2015-01-10" --until “2015-01-11 03:00”
journalctl --since 09:00 --until"1 hour ago"
journalctl --since"15:15" --until now
显示尾部的最新10行日志
[root@localhost ~]# journalctl -n 10
显示尾部指定行数的日志查看的是/var/log/messages的日志,但是格式上有调整,如主机名格式不一样
实时滚动显示最新日志:
[root@localhost ~]# journalctl -f
查看指定服务的日志
[root@localhost ~]# journalctl /usr/lib/systemd/systemd
查看指定进程的日志
[root@localhost ~]# journalctl _PID=1
查看某个路径的脚本的日志
[root@localhost ~]# journalctl /usr/lib/bash
查看指定用户的日志
[root@localhost ~]# journalctl _UID=33 --since today
查看某个unit的日志
[root@localhost ~]# journalctl -u nginx.service
[root@localhost ~]# journalctl -u nginx.service --since today
实时滚动显示某个unit的最新日志
[root@localhost ~]# journalctl -u nginx.service -f
合并显示多个unit的日志
[root@localhost ~]# 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
显示不同级别的日志:
[root@localhost ~]# journalctl -p err -b
不分页标准输出日志
默认分页输出–no-pager改为正常的标准输出
[root@localhost ~]# journalctl --no-pager
以JSON格式(单行)输出
JSON(javaScript object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。
同时也易于机器解析和生成。它基于JavaScriptProgramming Language,Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,perl,python等)。这些特性使JSON成为理想的数据交换语言。
JSON构建于两种结构:
"名称/值"对的集合:不同的语言中,他被理解为对象(object),记录(record),结构(struct),字典,哈希表,有键列表,或者关联数组。
值的有序列表(An ordered list of values):在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
例子:
以JSON格式(单行)输出
[root@localhost ~]# journalctl -f -o json
以JSON格式(多行)输出,可读性更好,建议选择多行输出
[root@localhost ~]# journalctl -f -o json-pretty
显示日志占据的磁盘空间
[root@localhost ~]# journalctl --disk-usage
指定日志文件占据的最大空间
journalctl --vacuum-size=1G
指定日志文件保存多久
journalctl --vacuum-time=1years