共计 3502 个字符,预计需要花费 9 分钟才能阅读完成。
对于包括 Linux 系统,Windows 服务器,路由器,交换机及其它主机能在网络上发送日志信息的这类设备,日志服务器都可以用作于它们在网络上的重要日志监控点。通过日志服务器,你能从不同的主机及设备过滤和合并日志信息于一个单一的位置,所以你能很容易的查看及存档日志信息。
在大多数据的 Linux 发行版中,rsyslog 是一个预先安装的标准日志后台进程。在 客户端 / 服务端 的系统配置中,rsyslog 能扮演两个角色; 作为一个日志服务器能从其它设备收集日志信息,而作为一个日志客户端,rsyslog 发送自己内部日志信息到远程日志服务器。
系统日志基本标准
当系统日志机制收集日志时,三个重要点必须被考虑进来:
Facility level: 监视的进程类型是什么
Severity (priority)level: 收集日志信息的类型是什么
Destination: 在什么地方记录日志信息,或在发送日志信息到什么地方
Facility levels 定义为内部系统进程归类方法。在 linux 中一些公共的标准功能是:
auth: 关联认证的信息
cron: 关联程序或进程的定时任务的信息
daemon: 关联系统内部后台进程的信息
kernel: 关联系统内部内核的信息
mail: 关联系统内部邮件服务信息
syslog: 关联系后台日志进程自己的信息
lpr: 关联打印服务的信息
local0-local7: 关联用户定义的信息(local7 通常被 Cisco 和 windows 服务所使用)
Severity(priority)levels 通过使用标准简写和级别数字来定义和标准化。这些级别有:
emerg:Emergency(紧急)–0(对应数字 0)
alert:Alerts(警报)–1(对应数字 1)
crit:Critical(危险)–2(对应数字 2)
err:Errors(错误)–3(对应数字 3)
warn:Warnings(警告)–4( 对应数字 4)
notice:Notification(通知)–5(对应数字 5)
info:Information(信息)–6( 对应数字 6)
debug:Debugging(调试)–7(对应数字 7)
Destination 说明日志客户端需要做三件事情:(1)在本地文件中保存日志,(2)通过 tcp/udp 协议向日志服务器发送日志,或(3)向标准的输出设备输出信息如终端
配置 linux 上的 Rsyslog
1.rsyslog 一般是预先就安装于 linux 系统的发行版上的,rsyslog 后台进程默认不能接受外部信息的,但可以通过配置它的配置文件 /etc/rsyslog.conf 来配置。
打开 /etc/rsyslog.conf 文件,查询和去掉它们行首的 #字符来得到去注释化后的下两行
$ModLoad imudp
$UDPServerRun 514
这个是允许 rsyslog 后台进程在 udp 协议的 514 端口上接收日志信息。UDP 比 TCP 快,但是其是不可靠的数据传输协议。如果你想要可靠的传输,那你要使用没有注释的下面两行
$ModLoad imtcp
$InputTCPServerRun 514
注意:rsyslog 后台进程是可以同时监听 TCP/UDP 连接的。
2. 接下来我们需要创建一个模板,告诉 rsyslog 后台进程怎样记录从其它客户端接收的信息。打开 /etc/rsyslog.conf 文件,在 GLOBAL DIRECTIVES 内容块的前面追加如下模板
$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log”
*.* ?RemoteLogs
& ~
$template RemoteLogs 指令(“RemoteLogs”可以为其它的描述的名字)迫使 rsyslog 后台进程隔开本地 /var/log/ 下文件去写日志信息。而日志文件名则依据发送远程日志的机器名及应用程序名来定义。第二行(*.* ?RemoteLogs)暗含运行用模板 RemoteLogs 于所有的接收日志。
& ~ 则告诉 rsyslog 后台进程停止进一步的去处理日志信息, 即不对它们进行本地化写入,它是代表一个重定向规则。如果没有这一行,则意味着接收到的日志会写入两次,一次如前两行写的方式写,第二次则以本地日志记录的方式写入。运行这个规则的另一个结论则是日志服务器自己的日志信息只会写入到依照机器主机名命名的文件中。
如果你想,你也可以通过特别功能或服务器级别去重定向日志信息到如下使用的新的模板中。
[facility-level].[severity-level] ?RemoteLogs
例如:
重定向所有的优先级别的认证信息到 RemoteLogs 的模板中:
authpriv.* ?RemoteLogs
重定向除邮件,认证和定时间任务的其它所有系统进程生成的信息消息到 RemoteLogs 模板中:
*.info,mail.none,authpriv.none,cron.none ?RemoteLogs
如果我们想把所有从远程接收到的信息写入到依照 ip 地址命名的单个文件名中,你可以使用如下的模板。我们为这个新的模板起名为 ”IpTemplate”。
$template IpTemplate,”/var/log/%FROMHOST-IP%.log”
*.* ?IpTemplate
& ~
接下来就是重启 rsyslog。
在 Debian,Ubuntu 或 CentOS/RHEL 6 下的方式如下:
$ sudo service rsyslog restart
在 Fedora 或 CentOS/RHEL 7 下的方式如下:
$ sudo systemctl restart rsyslog
我们可以能过 netstat 命令来验证 rsyslog 后台进程是否运行。
$ sudo netstat -tulpn | grep rsyslog
其输出应该像下面这种情况,rsyslog 后台进程在 UDP 的端口上进行监听。
udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd
udp6 0 0 :::514 :::* 551/rsyslogd
如果 rsyslog 后台进程设置于监听 TCP 的连接,则输出应该是像下面的情况。
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd
tcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd
发送 windows 日志给远程 Rsyslog 日志服务器
发送一个 windows 基于客户端的日志信息给我们的 Rsyslog 日志服务器,我们需要使用一个 Windows 的日志代理。而在 windows 上运行的日志代理有很多,我们可以选择 Datagram SyslogAgent,这个是一个免费的程序。
在我们下载及安装后,我们需要配置其为一个运行服务。指定发送数据协议及接收数据的远程 rsyslog 日志服务器的 IP 地址和端口,以及像如下的要发送的日志事件类型。
在我们建立所有的配置后,我们就可以开启服务和通过 tail - f 命令来观察在 rsyslog 日志服务器上的日志文件。
CentOS 6.7 搭建 Rsyslog 日志服务器 http://www.linuxidc.com/Linux/2016-06/132418.htm
Rsyslog+MySQL+Loganalyzer 搭建日志服务器 http://www.linuxidc.com/Linux/2016-09/134849.htm
Rsyslog+MySQL+Loganalyzer 搭建日志服务器 http://www.linuxidc.com/Linux/2016-09/134849.htm
CentOS 6.5+Rsyslog+LogAnalyzer 搭建中央日志服务器 http://www.linuxidc.com/Linux/2014-06/102867.htm
CentOS 6.5 rsyslog+MySQL+loganalyzer 日志集中分析管理 http://www.linuxidc.com/Linux/2016-11/137656.htm
Rsyslog 日志服务器搭建以及 Loganalyzer 安装使用 http://www.linuxidc.com/Linux/2017-02/140240.htm
Rsyslog 的详细介绍 :请点这里
Rsyslog 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140484.htm