Linux从入门到精通——Linux中系统日志的管理

一.rsyslog服务   

在系统日常的工作中,进程会产生很多的日志信息,这些信息如果都放进内存的话,那么很快就会因为内存不足而导致系统崩溃的,

这就需要有一个“搬运工”来将在内存中产生的日志信息回收到硬盘中存储起来,而这个“搬运工”就是本章要介绍的rsyslog服务。

1.rsyslog的简介

rsyslog是syslog的升级版本, 其在RHEL5的版本中, 名称为syslog。在RHEL6/7其升级为rsyslog。 rsyslog是一个日志管理系统,记录过去某个时间发生的事件,

及事件级别进行定义并记录到指定位置.。其支持C/S架构,可通过UDP/TCP协议提供日志记录服务。rsyslog日志格式较为简单。

 

2.rsyslog服务的进程

syslogd : 系统日志(用户空间的各应用程序相关的日志)

Klogd : 内核日志(kernel相关的日志),在RHEL6中, Klogd由syslog代为管理.

3.rsyslog的特性

  • 多线程的服务,并发性能好
  • 可以使用udp,tcp,ssl,tls,relp等协议完成信息收集
  • 将日志可存储在mysql,pgsql,oracle等数据库管理系统中
  • 强大的自定义过滤器,实现过滤日志信息中任何部分内容
  • 自定义输出格式

4.rsyslog的管理

rsyslog管理的日志文件为:

/var/log/messages          ##服务信息日志

/var/log/secure                ##系统登陆日志

/var/log/cron                 ##定时任务日志

/var/log/maillog               ##邮件日志

/var/log/boot.log             ##系统启动日志

rsyslog服务的主配置文件为:etc/rsyslog.conf

修改服务配置文件的书写格式为:

"什么类型.什么级别"   /var/log/file    


日志类型分为:

auth                      ##pam产生的日志authpriv                ##ssh,ftp等登陆信息的验证信息

cron                      ##时间任务相关

kern                      ##内核

lpr                    ##打印

mail                      ##邮件

mark(syslog)-rsyslog        ##服务内部的信息,时间标识

news                    ##新闻组   

user                     ##用户程序产生的相关信息

uucp                    ##unix to unix copy, unix主机之间相关的通讯    

local 1~7                ##自定义的日志设备



日志级别分为:

debug                ##有调式信息的,日志信息最多

info                  ##一般信息的日志,最常用

notice                 ##最具有重要性的普通条件的信息

warning                ##警告级别

err                   ##错误级别,组织某个功能或者模块不能正常工作的信息

crit                  ##严重级别,组织整个系统或者整个软件不能正常工作的信息

alert                     ##需要立刻修改的信息

emerg                  ##内核崩溃等严重信息

none                    ##什么都不记录



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





5.日志的远程同步



在日志的发送:
    vim  /etc/rsyslog.conf
    *.*   @172.25.254.200  ##@表示udp协议发送,@@表示tcp协议发送
                   ' 不经过三次握手'

在日志接受方:
    vim  /etc/rsyslog.conf
15  $ModLoad imudp     ##日志接受模块
16  $UDPServerRun 514  ##开启接受端口

systemctl  restart rsyslog
systemctl  stop    firewalld   ##关闭火墙
systemctl  disable firewalld   ##设定火墙开机关闭


测试:
在发送方和接受方都清空日志文件
> /var/log/messages

在日志发送方
logger test

在日志接收方查看
cat /var/log/messages


###日志采集格式的设定###
$template LOGFMT, "%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"


%timegenerated%    ##显示日志时间##
%FROMHOST-IP%      ##显示主机IP##
%syslogtag%     ##日志记录目标##
%msg%           ##日志内容#3
\n          ##换行




####时间同步服务####
服务名称
chronyd

在服务端:
vim /etc/chrony.conf

22  allow 172.25.254.0/24  ##允许哪些客户端来同步本机时间##
29  local stratum 10       ##本机不同不任何主机的时间,本机只作为时间源##
systemctl restart chronyd  ##重启服务##
timedatectl set-timezone Asia/Shanghai ##更改当前时区为东八区##


在客户端
vim /etc/chrony.conf
server 172.25.254.209 iburst   ##本机立即同步200的时间##
systemctl restart chronyd
timedate set-timezone Asia/Shanghai    ##更改当前时区为东八区##

测试:
在客户端:
chronyc sources -v


Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||                                                /   xxxx = adjusted offset,
||         Log2(Polling interval) -.             |    yyyy = measured offset,
||                                  \            |    zzzz = estimated error.
||                                   |           |                        
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================

^? 172.25.254.209                0   6     0   10y     +0ns[   +0ns] +/-    0ns





########timedatectl命令########

timedatectl     ##管理系统时间
       
timedatectl   status   ##显示当前时间信息
          set-time  ##设定当前时间
          set-timezone ##设定当前时区
          setlocal-rtc 0|1 ##设定是否使用utc时间
          list-timezone ##查看支持的所有时区


#######journal#######

1.journalctl       ##日志查看工具,直接查看内存中的日志
    -n 3        ##查看最近三条日志
    -p err      ##查看错误日志
    -o verbose  ##查看日志的详细参数
    --since"时间"   ##查看从什么时间开始的日志
    --until     ##查看到什么时间为止的日志



2.如何使用systemd-journald 保存系统日志
默认systemd-journald是不保存系统日志到硬盘的
那么关机后再次开机只能看到本机开机之后的日志
上一次关机之前的日志是无法查看的


mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod g+s /var/log/journal
killall -1 systemd-journald

ls /var/log/journal
产生的数据不能用cat看而是直接输入journalctl即可

猜你喜欢

转载自www.cnblogs.com/ChairmanYSL/p/9382189.html