一.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即可