Linux 下 rsyslog 系统日志转发
一、rsyslog 介绍
ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍,现在可以处理100万条信息。
特性:1.多线程
2.支持加密协议:ssl,tls,relp
3.mysql、oracle、postgreSQL
4.等等..
二、实践部署()
2.1 环境图
2.2.rsyslog server上部署操作
安装rsyslog 程序(rsyslog默认已经在各发行版安装,如果系统中没有的话,可以用yum 进行安装,如下:)
[root@opm ~]# yum install rsyslog -y
编辑rsyslog配置文件,路径 /etc/rsyslog.conf,修改前最好先备份一份,修改后的文件内容如下
- [root@opm log]# grep -v "^#" /etc/rsyslog.conf | grep -v "^$"
- $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
- $ModLoad imjournal # provides access to the systemd journal
- $ModLoad immark # provides --MARK-- message capability
- $ModLoad imudp
- $UDPServerRun 514
- $ModLoad imtcp
- $InputTCPServerRun 514
- $WorkDirectory /var/lib/rsyslog
- $AllowedSender tcp, 192.168.30.0/24
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
- $template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
- :fromhost-ip, !isequal, "127.0.0.1" ?Remote
- $IncludeConfig /etc/rsyslog.d/*.conf
- $OmitLocalLogging on
- $IMJournalStateFile imjournal.state
- *.info;mail.none;authpriv.none;cron.none /data/log/messages
- authpriv.* /var/log/secure
- mail.* -/var/log/maillog
- cron.* /var/log/cron
- *.emerg :omusrmsg:*
- uucp,news.crit /var/log/spooler
- local7.* /var/log/boot.log
a.$AllowedSender tcp, 192.168.30.0/24 允许 30.0网段内的主机以tcp协议来传输
b.$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" 定义模板,接受日志文件路径,区分了不同主机的日志
c.:fromhost-ip, !isequal, "127.0.0.1" ?Remote 过滤server 本机的日志。
d.$InputTCPServerRun 514 开启tcp,tcp和udp 可以共存的
创建日志目录,尽量选择系统内比较大的区域创建,因为考虑到要存放很多服务器的日志文件。
[root@opm ~]# mkdir -pv /data/log
修改完成无误后,重启rsyslog服务,并查看监听端口,514 是否是tcp协议
[root@opm ~]# systemctl restart rsyslog [root@opm ~]# netstat -aulntp | grep rsyslog tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 20228/rsyslogd tcp6 0 0 :::514 :::* LISTEN 20228/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 20228/rsyslogd udp6 0 0 :::514 :::* 20228/rsyslogd
2.3 客户端上操作:
node1 上进行配置
打开配置文件,老样子,先备份下在进行修改 /etc/rsyslog.conf,修改完记得要重启程序
- [root@node1 ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#"
- $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
- $ModLoad imjournal # provides access to the systemd journal
- $WorkDirectory /var/lib/rsyslog
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
- $template myFormat,"%timestamp% %fromhost-ip% %msg%\n"
- $ActionFileDefaultTemplate myFormat
- $IncludeConfig /etc/rsyslog.d/*.conf
- $OmitLocalLogging on
- $IMJournalStateFile imjournal.state
- *.info;mail.none;authpriv.none;cron.none @@192.168.30.55
- authpriv.* /var/log/secure
- mail.* -/var/log/maillog
- cron.* /var/log/cron
- *.emerg :omusrmsg:*
- uucp,news.crit /var/log/spooler
- local7.* /var/log/boot.log
ceph1 上进行配置,重启rsyslog程序
打开配置文件/etc/rsyslog.conf
- [root@ceph1 ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#"
- $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
- $ModLoad imjournal # provides access to the systemd journal
- $WorkDirectory /var/lib/rsyslog
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
- $IncludeConfig /etc/rsyslog.d/*.conf
- $OmitLocalLogging on
- $IMJournalStateFile imjournal.state
- *.info;mail.none;authpriv.none;cron.none @@192.168.30.55
- authpriv.* /var/log/secure
- mail.* -/var/log/maillog
- cron.* /var/log/cron
- *.emerg :omusrmsg:*
- uucp,news.crit /var/log/spooler
- local7.* /var/log/boot.log
- $template myFormat,"%timestamp% %fromhost-ip%%msg%\n"
- $ActionFileDefaultTemplate myFormat
最后重启客户端上的rsyslog程序
2.4 验证,在服务器上进到 /data/log 目录下,进行查看,会发现以下类似的文件结构
[root@opm ~]# tree /data/log/ /data/log/ ├── 192.168.30.56 │ └── 192.168.30.56_2016-05-05.log ├── 192.168.30.57 │ └── 192.168.30.57_2016-05-05.log └── messages 2 directories, 3 files
messages:server 端的系统日志
文件夹192.168.30.56: node1 客户端的日志
文件夹192.168.30.57: ceph1 客户端的日志
我们这里只查看node1 的系统日志吧。server 上进行操作
[root@opm ~]# tail -f /data/log/192.168.30.56/192.168.30.56_2016-05-05.log May 5 20:50:45 node1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="9296" x-info="http://www.rsyslog.com"] exiting on signal 15. May 5 20:50:45 node1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="9334" x-info="http://www.rsyslog.com"] start May 5 20:50:45 node1 systemd: Stopping System Logging Service... May 5 20:50:45 node1 systemd: Starting System Logging Service... May 5 20:50:45 node1 systemd: Started System Logging Service.
这里还可以在node1上在命令行里输入 logger “this is test ” 发送消息,server上进行查看下
[root@opm ~]# tail -1f /data/log/192.168.30.56/192.168.30.56_2016-05-05.log May 5 20:52:46 node1 root: this is test
2.5.如果验证失败的话,先检查selinux 是否关闭。后将udp 514 端口和tcp 514端口允许30网段访问即可,或者关闭iptables 服务。另外说明centos7上 默认防火墙是firewalld。该操作在每台机器上进行。
三、收集系统其它服务日志,在客户端node1 上操作,示例以openstack-nova 服务的日志为例:
3.1.先修改配置文件 /etc/rsyslog.conf,完整内容如下:
- [root@node1 ~]# egrep -v '^#|^$' /etc/rsyslog.conf
- $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
- $ModLoad imjournal # provides access to the systemd journal
- $ModLoad immark # provides --MARK-- message capability
- $WorkDirectory /var/lib/rsyslog
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
- $IncludeConfig /etc/rsyslog.d/*.conf
- $OmitLocalLogging on
- $IMJournalStateFile imjournal.state
- *.info;mail.none;authpriv.none;cron.none @@192.168.30.67
- authpriv.* /var/log/secure
- mail.* -/var/log/maillog
- cron.* /var/log/cron
- *.emerg :omusrmsg:*
- uucp,news.crit /var/log/spooler
- local7.* /var/log/boot.log
- module(load="imfile" PollingInterval="5")
- $InputFileName /var/log/nova/nova-compute.log
- $InputFileTag nova-info:
- $InputFileStateFile state-nova-info
- $InputRunFileMonitor
其实只添加了后5行的内容,对每项简单解释下
module(load="imfile" PollingInterval="5") 加载imfile 模块,并5秒刷新一次
$InputFileName /var/log/nova/nova-compute.log 要监控的日志文件路径
$InputFileTag nova-info: 定义文件标签 ,注意最后是冒号:
$InputFileStateFile state-nova-info 定义状态文件
$InputRunFileMonitor 激活读取,可以设置多组日志读取,每组结束时设置本参数
3.2.修改完成后,重启客户端的rsyslog服务
[root@node1 ~]# systemctl restart rsyslog
3.3 验证,在rsyslog服务器上查看日志,如下图
四、总结
以前不知道这个,总以为日志转发很难,现在感觉rsyslog还是挺简单的。不过简单是因为我们只是用了最简单方法,而且功能也是只用了系统日志的转发,后续会尝试如何记录转发其它服务的日志,比如mysql、zabbix、以及nova 服务的日志。这些才是最终的目的。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
CentOS7卸载自带jdk安装自己的JDK1.8
关于JDK1.8 与之前的版本相比有哪些变化和新特性我也不在这详细的说明了,毕竟一度娘啥都有了,既然不多说那就直接开始吧!! 准备资料: 1、已经在VMware安装好了的虚拟机,本文使用的是CentOS7,我就以这个为例,如果又不知道怎么安装的朋友可以参考我第一篇文章,上面详细的介绍了如何安装CentOS7下载安装centos7 2、jdk:jdk-8u11-linux-x64.tar.gz官网下载jdk8 3、xshell 远程操作虚拟机工具 xshell的下载与安装请参考我上一篇文章(为什么要用到它来操作,因为我觉得它操作简单又是免费的.)下载安装 xshell OK,资料已准备好了,现在可以开始了 通过xshell工具成功连接安装好的虚拟机之后可通过rpm -qa | grep Java 命令来查询出系统自带的jdk(带箭头的四个就是系统自带的)注:不带箭头的那三个不要删掉 然后通过 rpm -e --nodeps 后面跟系统自带的jdk名 这个命令来删除系统自带的jdk, 例如:rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14...
- 下一篇
Centos系统环境下使用Crontab定时备份全量备份Mysql数据库
在Centos系统环境下使用Crontab定时备份全量备份Mysql数据库。 CentOS的Crontab任务调度配置文件路径在 /etc/crond.* 用户任务调度任务路径在/var/spool/cron Crontab默认日志路径 /var/log/cron 1、Crond服务基本管理命令 servicecrondstart//启动服务 servicecrondstop//关闭服务 servicecrondrestart//重启服务 servicecrondreload//重新载入配置 查看crontab服务状态:servicecrondstatus 手动启动crontab服务:servicecrondstart 2、Crond服务是默认随系统自动启动,如未启动则需要手动启动 chkconfigcrondon 3、注意任务调度区分root用户与非root用户。 root用户任务调度编辑 /etc/contab 文件,例如: vi/etc/crontab #检测crontab是否在test.txt文件中写入数据 */1****rootecho111>>/home/vag...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范