rsyslog客户端读取日志文件,来发送日志服务器.note
一、将日志放到指定文件中:
1、客户端 配置 rsyslog读取日志并发送:
apt install -y rsyslog
# module(load="imfile") //读取模块,必须有该模块才能够读取文件内容
input (
type="imfile" //类型,设置为imfile即可
tag="nginx" //标签,必须要有该参数才能正常运行
file=".." //要读取的文件路径
facility //定义日志设置(最重要的参数)(可定义的有(没怎么被服务使用过的):local0 ~ local7)
)
## @ 表示发送给UDP端口
## @@ 表示发送给TCP端口
vim /etc/rsyslog.conf
systemctl restart rsyslog
2、服务端开启监听端口,并定义日志存储位置:
apt install -y rsyslog
# 监听UDP还是TCP端口都可
vim /etc/rsyslog.conf
定义日志存储路径:

systemctl restart rsyslog
·测试:
可能会有一小会的延迟

二、将不同的日志放到不同文件中(假设有多个服务器在上传日志,要放到不同的文件中)
# 假设此时三台机器,都需要将nginx传给log服务器:1、客户端配置(多台客户端的配置都是一样的):
客户端配置还是和上面一样的
apt install -y rsyslog
# module(load="imfile") //读取模块,必须有该模块才能够读取文件内容
input (
type="imfile" //类型,设置为imfile即可
tag="nginx" //标签,必须要有该参数才能正常运行
file=".." //要读取的文件路径
facility //定义日志设置(最重要的参数)(可定义的有(没怎么被服务使用过的):local0 ~ local7)
)
## @ 表示发送给UDP端口
## @@ 表示发送给TCP端口
vim /etc/rsyslog.conf
2、服务端配置:
方式二其实就是方式一的升级版,因为方式一只能够通过主机名变量,而方式二的tag内容可以自定义,自由度更高
在 man rsyslog.conf 中有模板:

方式一:使用机器主机名来命名
vim /etc/rsyslog.conf
# 使用 $template来定义模板:模板名为 nginx,使用 %HOSTNAME% 变量作为文件名

systemctl restart rsyslog
·测试:

(推荐)方式二:为每个机器自定义名称
修改客户端的Tag(可以直接以Tag名作为文件名):
Web1:

Web2:

Web3:

服务端配置接收:
vim /etc/rsyslog.conf
## 这里不使用 %HOSTNAME%变量了,使用 %syslogtag% 变量
·测试:
这里是代理给三台机器的

三、根据主机名来定义 日志文件存储文件名:
1、配置 rsyslog:
vim /etc/rsyslog.conf