前言
rsyslog是啥?rsyslog服务器是一种集中式处理日志的方法。不用检查的时候连接到每个服务器上,这个虽然不是最为有效的办法但是目前来说对我足够了。这里记录一下如何配置和使用。
环境说明
这里我准备3个节点用于这次的实验:
hostname | network | ip | os |
---|
rsyslog-server | test | 172.11.0.20/22 | centos7 |
rsyslog-node1 | test | 172.11.0.21/22 | centos7 |
rsyslog-node2 | test | 172.11.0.22/22 | centos7 |
安装和配置
首先对这些节点进行初始化
更改网络
默认的网络是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
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
服务的配置文件:
添加内容如下:
@
的话是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的方式了期待你的探索。
参考连接