首页 > 技术文章 > Linux搭建Syslog服务器

daiss314 2020-07-01 20:10 原文

在大多数据的Linux发行版中,rsyslog是一个预先安装的标准日志后台进程。在 客户端/服务端 的系统配置中,rsyslog 能扮演两个角色;作为一个日志服务器能从其它设备收集日志信息,而作为一个日志客户端,rsyslog发送自己内部日志信息到远程日志服务器

第1步: 初始化系统需求

要将linux主机设置为一个中央日志服务器, 我们需要创建一个分离的 /var 分区,并分配足够大的磁盘空间或者创建一个特殊的LVM卷组。这样就会使得syslog服务器能够承担在日积月累收集日志所带来的潜在增长。

第2步: 让rsyslog 后台进程生效

rsyslog守护进程来自于当前的linux发布版本的预装模块,但是默认并没有启动。为了能够让rsyslog守护进程能够接受外部的消息,需要编辑其配置文件/etc/rsyslog.conf.
打开文件进行编辑,查找到下面的两行所在的位置,通过删除其行首的#字符来取消注释。(15行,16行,19行,20行)
vi /etc/rsyslog.conf

 这会使得rsysolog守护进程能够在UDP端口514上接受日志消息了---UDP是一种比TCP速度快,但是并不具有TCP一样的数据流的可靠性。所以如果你需要使用可靠的传送机制,就可以通过取消以下行的注释。

需要注意的是,TCP和UDP可以被同时生效来监听TCP/UDP 连接。(如里两个端口都打开的话,会出现TCP协议端口接收不到日志,所以有两种方法,一是修改TCP协议的端口;二是关闭UDP端口,再重启机器

第3步:创建日志接收模板

接下来的这步,需要我们来为远程消息创建模板,并告知rsyslog守护进程如何记录从其他客户端机器所接受到的消息。
使用文本编辑器来打开 /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE块前追加以下的模板(在23行下添加)
vi /etc/rsyslog.conf

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *

*.* ?RemoteLogs

& ~

在此对该模板进行简单解释,
1.$template RemoteLogs(这里“RemoteLogs” 字符串可以为任何其他的描述性的名称)指令使rsyslog后台进程将日志消息写到/var/log下的单独的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。
2.其中第二行暗示了我们将RemoteLogs模板应用到所有接收到的日志上。
3.符号"& ~"表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果没有使用该重定向规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。
 

注意:如果连接不上,请关闭防火墙

 安装之前,一定要关闭防火墙

    1. 关闭防火墙
      systemctl stop firewalld.service
    2. 禁止firewall开机启动
      systemctl disable firewalld.service
    3. 查看默认防火墙状态
      firewall-cmd --state

推荐阅读