Linux系统日志

系统日志简介

日志的三种类型

  • 内核及系统日志
    这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中有相当一部分程序会把日志文件交由rsyslog管理,因而这些程序使用的日志记录也具有相似的格式。
  • 用户日志
    这种日志数据用于记录Linux操作系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

rsyslog的管理

Rsyslog的全称是 rocket-fast system for log,它提供了高性能,高安全功能和模块化设计。rsyslog能够接受从各种各样的来源,将其输入,输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。

特点:

  • 多线程
  • 可以通过许多协议进行传输UDP,TCP,SSL,TLS,RELP;
  • 直接将日志写入到数据库;
  • 支持加密协议:ssl,tls,relp
  • 强大的过滤器,实现过滤日志信息中任何部分的内容
  • 自定义输出格式;

配置文件:

配置文件/etc/rsyslog.conf主要有3个部分

MODULES :模块
GLOBAL DRICTIVES :全局设置
RULES:规则

常见日志文件

常见的日志文件作用
/var/log/boot.log录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
/var/log/lastlog记录最后一次用户成功登陆的时间、登陆IP等信息
/var/log/messages记录Linux操作系统常见的系统和服务错误信息
/var/log/secureLinux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况
/var/log/btmp记录Linux登陆失败的用户、时间以及远程IP地址
/var/log/syslog只记录警告信息,常常是系统出问题的信息,使用lastlog查看
/var/log/wtmp该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看
/var/run/utmp该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件

日志级别

优先级说明
emerg紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。
alert需要立即修复,例如系统数据库损坏。
crit危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
err一般错误消息。
warning警告。
notice不是错误,但是可能需要处理。
info通用性消息,一般用来提供有用信息。
debug调试程序产生的信息。
none没有优先级,不记录任何日志消息。

注意: 从上到下,级别从低到高,记录的信息越来越少 详细的可以查看手册:man3 sys log

在这里插入图片描述

系统日志进阶

日志采集

在这里插入图片描述

编辑日志的配置文件
vim /etc/rsyslog.conf
把日志放入新建立的文件westos里

在这里插入图片描述

查看日志,再重启日志,可以看到日志生成

在这里插入图片描述

日志的远程同步

在这里插入图片描述

为方便一台服务器管理多台服务器 可以将其他服务器中的日志集中到一台服务器中管理

将client服务器的日志同步到server服务器中
发送方client IP 172.25.254.126
接受方server IP 172.25.254.176

编辑server服务器的日志配置文件
vim /etc/rsyslog.conf
将所有日志发送给server

在这里插入图片描述

之后重启,清空日志,输入logger test, 再查看日志,可以看到生成刚才的进程日志

在这里插入图片描述

在接受方编辑日志配置文件
vim /etc/rsyslog.conf
将15,16行的注释取消
15 $ModLoad imudp 日志接受模块 
16 $UDPServerRun 514 开启接收模块

在这里插入图片描述

重启日志,关闭防火墙,

在这里插入图片描述

防火墙为开启状态,关闭防火墙

在这里插入图片描述

清空日志后在发送方输入logger test查看日志(清空日志是为了避免被其他进程产生的日志干扰),可以看到发送方的日志

在这里插入图片描述

日志采集格式的设定

在这里插入图片描述

为了在管理服务器的时候方便,可以通过日志采集格式的设定来获得日志的生成时间、日志发送方的ip地址、日志的服务目标、日志的内容

编辑日志配置文件
vim /etc/rsyslog.conf
vim   /etc/rsyslog.conf
$template  LOGFMT,"%timegenerated%  %FROMHOST-IP%  %syslogtag%  %msg%\n"
在自己显示的日志文件后面,把格式添加进去:*.*/var/log/westos;LOGFMT 
%timegenerated%显示日志时间
%FROMHOST-IP%显示主机IP
%syslogtag%日志记录目标
%msg%日志内容
\n换行

在这里插入图片描述在这里插入图片描述

查看日志

在这里插入图片描述

时间同步

在这里插入图片描述

在服务端编辑时间同步的配置文件
vim /etc/chrony.conf
22行: allow 172.25.254.0/24 允许那些客户端来同步本机时间
29行: local stratum 10 本机不同步任何主机的时间,本机作为时间源

在这里插入图片描述

然后重启时间同步

在这里插入图片描述

在接受方编辑时间同步配置文件
 vim /etc/chrony.conf
3行 server 172.25.254.225 iburst(删除其他的) 本机立即同步225主机的时间

在这里插入图片描述

然后重启systemctl restart chronyd,输入下图命令

在这里插入图片描述

在这里插入图片描述

timedatectl命令

timedatectl命令对于RHEL / CentOS 7和基于Fedora 21+的分布式系统来说,是一个新工具,它作为systemd系统和服务管理器的一部分,
代替旧的传统的用在基于Linux分布式系统的sysvinit守护进程的date命令。

timedatectl命令可以查询和更改系统时钟和设置,你可以使用此命令来设置或更改当前的日期,
时间和时区,或实现与远程NTP服务器的自动系统时钟同步。

通过使用来自于终端使用timedatectl命令的NTP,设置date、time、timezone和synchronize time来管理时间。让Linux服务器或系统保持正确的时间。

它有以下优点:

  • 维护及时操作的系统任务,因为在Linux中的大多数任务都是由时间来控制的。
  • 记录事件和系统上其它信息等的正确时间。
status显示当前时间信息
set-time设定当前时间
set- timezone设定当前时区
set- local-rtc 0/1设定是否使用utc时间
set-tamezone查看支持的所有时区

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

journalctl

日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf

-n 3查看最近3条日志
-p err查看错误日志
-o json以json格式显示日志
–since查看从什么时间开始的日志
–until查看到什么时间为止的日志
journalctl   查看所有日志,默认情况下,只保存本次启动的日志
journalctl -k  查看内核日志(不显示应用日志)

journalctl   -b   查看系统本次启动的日志
journalctl  -b  -0
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

journalctl  -n  显示尾部的最新10行日志(默认10行)
journalctl -n 20   显示尾部指定行数的日志(查看的是/var/log/messages的日志,但是格式上有所调整,如主机名格式不一样而已)
journalctl   -f  实时滚动显示最新日志
journalctl  /usr/lib/systemd/systemd  查看指定服务的日志
journalctl   _PID=1  查看指定进程的日志
journalctl    /usr/bin/bash  查看某个路径的脚本的日志
journalctl _UID=33  --since today  查看指定用户的日志

journalctl  -u nginx.service  查看某个Unit的日志
journalctl  -u nginx.service  --since  toda
journalctl  -u nginx.service  -f  实时滚动显示某个Unit的最新日志
journalctl  -u nginx.service  -u php-fpm.service  --since today   合并显示多个Unit的日志

journalctl --disk-usage 查看当前日志占用磁盘的空间的总大小
journalctl --vacuum-size=1G指定日志文件最大空间
journalctl --vacuum-time=1years指定日志文件保存多久
journalctl -p err -b   只显示错误级别或者更高的日志条目(过滤掉优先级较低的信息。)
journalctl -p 3 -b
0emerg
1alert
2crit
3err
4warning
5notice
6info
7debug
journalctl -b -u httpd -o json   将journal条目输出为JSON格式
cat只显示信息字段本身。
export适合传输或备份的二进制格式。
json标准JSON,每行一个条目。
json-prettyJSON格式,适合人类阅读习惯。
json-sseJSON格式,经过打包以兼容server-sent事件。
short默认syslog类输出格式。
short-iso默认格式,强调显示ISO 8601挂钟时间戳。
short-monotonic默认格式,提供普通时间戳。
short-precise默认格式,提供微秒级精度。
verbose显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。
/etc/systemd/journald.conf 日志的相关配置
以下参数用于限定journal体积的膨胀速度:
SystemMaxUse=指定journal所能使用的最高持久存储容量。
SystemKeepFree=指定journal在添加新条目时需要保留的剩余空间。
SystemMaxFileSize=控制单一journal文件大小,符合要求方可被转为持久存储。
RuntimeMaxUse=指定易失性存储中的最大可用磁盘容量(/run文件系统之内)。
RuntimeKeepFree=指定向易失性存储内写入数据时为其它应用保留的空间量(/run文件系统之内)。
RuntimeMaxFileSize=指定单一journal文件可占用的最大易失性存储容量(/run文件系统之内)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考链接

搭建rsyslog日志服务器和loganalyzer日志分析工具

配置rsyslog+loganalyzer+lamp日志查看工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值