前言

rsyslog是啥?rsyslog服务器是一种集中式处理日志的方法。不用检查的时候连接到每个服务器上,这个虽然不是最为有效的办法但是目前来说对我足够了。这里记录一下如何配置和使用。

环境说明

这里我准备3个节点用于这次的实验:

hostnamenetworkipos
rsyslog-servertest172.11.0.20/22centos7
rsyslog-node1test172.11.0.21/22centos7
rsyslog-node2test172.11.0.22/22centos7

安装和配置

首先对这些节点进行初始化

更改网络

默认的网络是default的网络这里要改成test的网络。

首先查看默认的网络

1
2
3
4
sudo virsh domiflist rsyslog-server
 Interface   Type      Source    Model    MAC
-------------------------------------------------------------
 vnet0       network   default   virtio   52:54:00:bd:1b:a6

删除原有的default网络

1
sudo virsh detach-interface --domain rsyslog-server --type network --mac 52:54:00:bd:1b:a6 --config --live

添加test网络

1
2
 sudo virsh attach-interface --domain rsyslog-server --type network \
--source test --model virtio --config --live

验证

1
2
3
4
sudo virsh domiflist rsyslog-server
 Interface   Type      Source   Model    MAC
------------------------------------------------------------
 vnet3       network   test     virtio   52:54:00:52:1f:d8

修改主机名和ip

1
2
3
4
sudo virsh console rsyslog-server
hostnamectl set-hostname rsyslog-server
nmcli con mod eth0 ipv4.method manual ipv4.addresses "172.11.0.20/22" ipv4.dns 114.114.114.114 ipv4.gateway 172.11.0.1 connection.autoconnect yes
nmcli con show

其他节点也如法炮制。

1
2
3
4
sudo virsh console rsyslog-node1
hostnamectl set-hostname rsyslog-node2
nmcli con mod eth0 ipv4.method manual ipv4.addresses "172.11.0.21/22" ipv4.dns 114.114.114.114 ipv4.gateway 172.11.0.1 connection.autoconnect yes
nmcli con show
1
2
3
4
sudo virsh console rsyslog-node2
hostnamectl set-hostname rsyslog-node2
nmcli con mod eth0 ipv4.method manual ipv4.addresses "172.11.0.22/22" ipv4.dns 114.114.114.114 ipv4.gateway 172.11.0.1 connection.autoconnect yes
nmcli con show

配置rsyslog-server

配置rsyslog server服务端,将两个节点的日志打到这里。

1
yum install rsyslog -y

修改配置文件:

1
vi /etc/rsyslog.conf

取消这部分的注释

1
2
3
4
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

添加一个模板

1
vi /etc/rsyslog.d/default.conf

内容如下:

1
2
3
4
5
6
7
8
#### GLOBAL DIRECTIVES ####
# Use default timestamp format 
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template myFormat,"%timestamp% %fromhost-ip% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myFormat    
$template RemoteLogs,"/var/log/rsyslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?RemoteLogs
& ~

我是想要在/var/log/rsyslog/这个目录下按照ip创建一个文件夹然后下面再是日志的方式去存放,还有更多的配置格式你可以参考官网或者是man rsyslog.conf

创建文件夹:

1
mkdir -pv /var/log/rsyslog

设置Selinux

安装selinux工具:

1
yum install -y policycoreutils-python setools-console setroubleshoot-server

设置selinux:

1
2
semanage fcontext -a -t  var_log_t '/var/log/rsyslog(/.*)?'
restorecon -FRv /var/log/rsyslog

添加防火墙规则

1
2
3
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --reload

rsyslog服务启动并加入到开机启动项:

1
2
systemctl enable rsyslog
systemctl start rsyslog

查看服务状态:

1
systemctl status rsyslog

验证

我们首先要设置两个客户端,修改rsyslog服务的配置文件:

1
vi /etc/rsyslog.conf

添加内容如下:

1
*.*    @172.11.0.20:514

@的话是UDP的传输方式如果想要更换成TCP可以换成@@

启动rsyslog服务并加入开机启动项:

1
2
3
systemctl enable rsyslog
systemctl restart rsyslog
systemctl status rsyslog

我们在rsyslog-node1上重启一下NetworkManager服务,对应的在rsyslog-server/var/log/rsyslog/172.11.0.21/下就可以看到对的日志了。

后记

通过这个rsyslog服务可以将上网行为管理或者是交换机的日志还有系统的日志全部接入进来,相对于ELK之类的比较轻量适用性还比较广。除了落到本地的方式还有其他的方式比如说存储在mysql。不过我这里就不打算配置mysql的方式了期待你的探索。

参考连接