一.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
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 ##修改rsysylog服务配置文件
在第54行之后 *.* @172.25.254.200 ##@表示udp协议发送,@@表示tcp协议发送
在日志接受方:
vim /etc/rsyslog.conf ##修改rsysylog服务配置文件
在第15行 $ModLoad imudp ##日志接受模块
在第16行 $UDPServerRun 514 ##开启接受端口
systemctl restart rsyslog ##修改完配置文件之后要重启服务
systemctl stop firewalld ##关闭火墙
systemctl disable firewalld ##设定火墙开机不启动
测试:
在发送方和接受方都清空日志文件
> /var/log/messages
在日志发送方
logger test
在日志接收方查看
cat /var/log/messages
——————关于udp与tcp协议——————
1.udp协议
简介:UDP 是User Datagram Protocol的简称, 它的中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,
提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。 UDP协议全称是用户数据报协议,在网络中它与TCP协议一
样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层--传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,
也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的
传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
连接方式:在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,
因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
比如我们聊天用的ICQ和QQ就是使用的UDP协议。
2.tcp协议
简介:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它
完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的
中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答TCP的三次握手SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这一过程
与打电话很相似,先拨号振铃,等待对方摘机说"喂",然后才说明是谁。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。这种建立连接的方法可以防止产生错误
的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
——————日志采集格式的设定——————
$template LOGFMT, "%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
%timegenerated% ##显示日志时间
%FROMHOST-IP% ##显示主机IP
%syslogtag% ##日志记录目标
%msg% ##日志内容
\n ##换行
——————时间同步服务————————
1.服务名称:
chronyd
2.操作流程:
在服务端:
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命令——————
1.命令:
timedatectl ##管理系统时间
2.常用参数:
timedatectl status ##显示当前时间信息
set-time ##设定当前时间
set-timezone ##设定当前时区
setlocal-rtc 0|1 ##设定是否使用utc时间
list-timezone ##查看支持的所有时区
——————journal命令——————
1.命令
journalctl ##日志查看工具,直接查看内存中的日志
2.常用参数
-n 3 ##查看最近三条日志
-p err ##查看错误日志
-o verbose ##查看日志的详细参数
--since"时间" ##查看从什么时间开始的日志
--until ##查看到什么时间为止的日志
3.如何使用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即可查看