一、syslog协议介绍
1、介绍在Unix类操作系统上,rsyslog广泛应用于系统日志。rsyslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。在Unix类操作系统上,能够按Facility和Severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收rsyslog的服务器等。由于rsyslog简单而灵活的特性,rsyslog不再仅限于 Unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用rsyslog。
rsyslog是syslog的多线程增强版,现在Fedora、Ubuntu,、rhel6、centos6默认的日志系统都是rsyslog了。rsyslog主要用来收集系统产生的各种日志,日志默认放在/var/log/目录下。先简单看看配置文件,然后给几个实例也算是对rsyslog的一个更深入的理解吧。
1、配置文件解析
主配置文件/etc/rsyslog.conf配置文件中有很多内容, 但最主要的是指定需要记录哪些服务和需要记录服务什么等级的信息。
格式是:日志设备[连接符号]日志级别 日志处理方式(action)
a)、日志设备(可以理解为日志类型):
auth --pam产生的日志
authpriv --ssh,ftp等登录信息的验证信息
cron --定时任务
kern --内核
lpr --打印
mail --邮件
mark(syslog) --rsyslog服务内部的信息,时间标识
news --新闻组
user --用户程序产生的相关信息
uucp --unix to unix copy, unix主机之间相关的通讯
local1~7 --自定义的日志设备
|
b)、日志级别,从上到下,级别从高到低,记录的信息越来越少。
debug --有调式信息的,日志信息最多
info --一般信息的日志,最常用
notice --最具有重要性的普通条件的信息
warning --警告级别
err --错误级别,阻止某个功能或者模块不能正常工作的信息
crit --严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert --需要立刻修改的信息
emerg --内核崩溃等严重信息
none --什么都不记录
|
c)、连接符号,其中的xxx表示某一日志级别
.xxx 表示小于等于xxx级别的日志信息
.=xxx 表示等于xxx级别的日志信息
.!xxx 表示在xxx之外的等级的日志信息
.* 所有等级的日志信息
|
d)、日志处理方式,意思就是将特定的日志做怎样的处理。
1. 记录到普通文件或设备文件::
/var/log/file.log #将日志记录到文件/var/log/file.log
/dev/pts/0 #将日志记录在设备/dev/pts/0
2. 转发到远程的日志服务器
@192.168.0.1 #使用UDP协议转发到192.168.0.1的514(默认)端口
@@192.168.0.1:10514 #使用TCP协议转发到192.168.0.1的10514端口,这是指定非默认端口10514,tcp的默认端口也是514
3. 发送给用户(需要在线才能收到)::
root #发给root用户
root,kadefor,up01 #使用,号分隔多个用户
* #*号表示所有在线用户
4. 忽略,丢弃::
~ # 忽略丢弃日志
5. 执行脚本::
^/tmp/test.sh #^号后跟可执行脚本或程序的绝对路径,这个可以用来触发报警动作。
|
举2个例子
将mail的所有级别的日志,记录到文件/var/log/maillog中,其中的符号”-“表示使用缓存模式
mail.* -/var/log/maillog
|
将所有日志的所有级别的信息采用UDP协议送给远程服务器192.168.186.134一份
*.* @192.168.186.134
|
2、用实例说话
a)、将所有服务器的系统日志送给远程日志服务器,远程服务器用来接收和集中所有服务器送来的系统日志。
采用UDP协议发送和接收,在远程服务器端配置文件/etc/rsyslog.conf开启下面两行
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
|
客服端的配置文件/etc/rsyslog.conf最后新增加一行,用来将所有的日志信息发送给远程的服务器192.168.186.134
*.* @192.168.186.134
|
每次更改配置文件后不要忘记重启rsyslog服务。
测试:重启某台服务器的rsyslog服务看看远程的服务器能不能收到日志
[root@syndic02 ~]# /etc/init.d/rsyslog restart
关闭系统日志记录器: [确定]
启动系统日志记录器: [确定]
[root@syndic02 ~]#
|
看远程的服务器已经收到了相应的日志,如果没有收到日志是不是防火墙挡住了,如果没有使用标准的端口还要看看是不是SELinux服务开启了。
[root@saltstack ~]# tailf /var/log/messages
... ... ...
Nov 13 14:32:50 syndic02 kernel: Kernel logging (proc) stopped.
Nov 13 14:32:50 syndic02 rsyslogd: [origin software="rsyslogd"swVersion="5.8.10"x-p] exiting on signal 15.
Nov 13 14:32:50 syndic02 kernel: imklog 5.8.10, log source= /proc/kmsgstarted.
Nov 13 14:32:50 syndic02 rsyslogd: [origin software="rsyslogd"swVersion="5.8.10"x-p] start
|
b)自定义设备,手动将日志送给rsyslog服务
先修改配置文件,新增自定义设备local0并将其info级别及其以下级别的日志记录到文件/var/log/test.log文件中
local0.info /var/log/test.log
|
修改配置文件后不要忘记重启rsyslog服务使其生效
然后我们用logger命令向设备local0送日志,总共发送了4次日志,前三次的级别都是info及其以下级别的日志,第四次是debug级别的日志。参数”-t”是将每次发送的日志信息打上自定义标签。
[root@syndic02 ~]# logger -p local0.info "hello world"
[root@syndic02 ~]# logger -t "This is Test" -p local0.info "hello world"
[root@syndic02 ~]# logger -t "This is Test" -p local0.warning "hello world"
[root@syndic02 ~]# logger -t "This is Test" -p local0.debug "hello world"
[root@syndic02 ~]#
|
结果是前三次都记录到了文件/var/log/test.log中,第四条由于超过info级别为debug级别故忽略了。
[root@syndic02 ~]# tailf /var/log/test.log
Nov 13 14:41:27 syndic02 root: hello world
Nov 13 14:42:22 syndic02 This is Test: hello world
Nov 13 14:42:56 syndic02 This is Test: hello world
|
c、收集各台服务器的history记录,可以参考文章《日志管理(1) 审计并收集history记录》。
关于rsyslog的简单介绍就这些了,其它用法如过滤、加载外部模块、收集MySQL程序日志等,有兴趣的可以继续深入
#define LOG_FTP (11<<3)
三、linux rsyslog配置
/var/log/secure 安全信息日志
2)、 配置文件:
uucp uucp 生成的信息
local0----local7 本地用户信息
例如:
52 # Log anything (except mail) of level info or higher.
53 # Don't log private authentication messages!
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
2、重要级:
不同的服务类型有不同的优先级,数值较大的优先级涵盖数值较小的优先级。如果某个选择条件只给出了一个优先级而没有使用任何优先级限定符,对应于这个优先级的消息以及所有更紧急的消息类型都将包括在内。比如说,如果某个选择条件里的优先级是“warning”,它实际上将把“warning”、 “err”、“crit”、“alert”和“emerg”都包括在内。
3、操作动作
3)、 搭建Linux日志服务器:
1、编辑/etc/sysconfig/syslog文件,让服务器能够接受客户端传来的数据:
-----------------------------------------------------------------
2、重新启动syslog守护进程。
-----------------------------------------------------------------
3、关闭iptables
[root@client ~]# service iptable stop
查看防火墙状态
# service iptable status
四、配置各客户端:
1、配置/etc/syslog.conf另外如果配置了DNS域名的话可以使用域名。
2、重启客户端syslog使设置生效。
以上就是centos7的syslog知识点的详细内容,更多关于centos7的syslog知识点的资料请关注九品源码其它相关文章!