阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在 Debian 9 上使用 Rsyslog 安装一台集中式日志服务器

482次阅读
没有评论

共计 4547 个字符,预计需要花费 12 分钟才能阅读完成。

在 Linux 上,日志文件包含了系统功能的信息,系统管理员经常使用日志来确认机器上的问题所在。日志可以帮助管理员还原在过去的时间中在系统中发生的事件。一般情况下,Linux 中所有的日志文件都保存在 /var/log 目录下。在这个目录中,有保存着各种信息的几种类型的日志文件。比如,记录系统事件的日志文件、记录安全相关信息的日志文件、内核专用的日志文件、用户或者 cron 作业使用的日志文件。日志文件的主要作用是系统调试。Linux 中的大部分的日志文件都由 rsyslogd 服务来管理。在最新的 Linux 发行版中,日志文件也可能是由 journald 系统服务来管理和控制的。journald 服务是 systemd 初始化程序的一部分。journald 以二进制的格式存储日志,以易失性的方式写入到内存和 /run/log/journal/ 中的环状缓冲区中,但是,journald 也可以配置为永久存储到 syslog 中。

在 Linux 中,可以配置运行一个 Rsyslog 服务器来集中式管理日志,在流行的服务端—客户端模式中,通过 TCP 或者 UDP 传输协议基于网络来发送日志信息,或者从网络设备、服务器、路由器、交换机、以及其它系统或嵌入式设备中接受生成的日志。

Rsyslog 守护程序可以被同时配置为以客户端或者服务端方式运行。配置作为服务器时,Rsyslog 将缺省监听 TCP 和 UDP 的 514 端口,来收集远程系统基于网络发送的日志信息。配置为客户端运行时,Rsyslog 将通过相同的 TCP 或 UDP 端口基于网络来发送内部日志信息。

Rsyslog 可以根据选定的属性和动作来过滤 syslog 信息。Rsyslog 拥有的过滤器如下:

  1. 设备或者优先级过滤器
  2. 基于特性的过滤器
  3. 基于表达式的过滤器

设备过滤器代表了生成日志的 Linux 内部子系统。它们目前的分类如下:

  • auth/authpriv = 由验证进程产生的信息
  • cron = cron 任务相关的日志
  • daemon = 正在运行的系统服务相关的信息
  • kernel = Linux 内核信息
  • mail = 邮件服务器信息
  • syslog = syslog 或者其它守护程序(DHCP 服务器发送的日志在这里)相关的信息
  • lpr = 打印机或者打印服务器信息
  • local0 ~ local7 = 管理员控制下的自定义信息

优先级或者严重程度级别分配如下所述的一个关键字或者一个数字。

  • emerg = 紧急 – 0
  • alert = 警报 – 1
  • err = 错误 – 3
  • warn = 警告 – 4
  • notice = 提示 – 5
  • info = 信息 – 6
  • debug = 调试 – 7(最高级别)

此外也有一些 Rsyslog 专用的关键字,比如星号(*)可以用来定义所有的设备和优先级,none 关键字更具体地表示没有优先级,等号(=)表示仅那个优先级,感叹号(!)表示取消这个优先级。

Rsyslog 的动作部分由声明的目的地来表示。日志信息的目的地可以是:存储在文件系统中的一个文件、/var/log/ 目录下的一个文件、通过命名管道或者 FIFO 作为输入的另一个本地进程。日志信息也可以直达用户,或者丢弃到一个“黑洞”(/dev/null)中、或者发送到标准输出、或者通过一个 TCP/UDP 协议发送到一个远程 syslog 服务器。日志信息也可以保存在一个数据库中,比如 MySQL 或者 PostgreSQL。

配置 Rsyslog 为服务器

在大多数 Linux 发行版中 Rsyslog 守护程序是自动安装的。如果你的系统中没有安装 Rsyslog,你可以根据你的系统发行版执行如下之一的命令去安装这个服务。运行这个命令必须有 root 权限

在基于 Debian 的发行版中:

  1. sudoapt-get install rsyslog

在基于 RHEL 的发行版中,比如像 CentOS:

  1. sudoyum install rsyslog

验证 Rsyslog 守护进程是否在你的系统中运行,根据发行版不同,可以选择运行下列的命令:

在新的使用 systemd 的 Linux 发行版中:

  1. systemctl status rsyslog.service

在老的使用 init 的 Linux 发行版中:

  1. service rsyslog status

  1. /etc/init.d/rsyslog status

启动 rsyslog 守护进程运行如下的命令。

在使用 init 的老的 Linux 版本:

  1. service rsyslog start

  1. /etc/init.d/rsyslog start

在最新的 Linux 发行版:

  1. systemctl start rsyslog.service

安装一个 rsyslog 程序运行为服务器模式,可以编辑主要的配置文件 /etc/rsyslog.conf。可以使用下列所示的命令去改变它。

  1. sudovi/etc/rsyslog.conf

为了允许在 UDP 的 514 端口上接收日志信息,找到并删除下列行前面的井号(#)以取消注释。缺省情况下,UDP 端口用于 syslog 去接收信息。

  1. $ModLoad imudp
  2. $UDPServerRun 514

因为在网络上使用 UDP 协议交换数据并不可靠,你可以设置 Rsyslog 使用 TCP 协议去向远程服务器输出日志信息。为了启用 TCP 协议去接受日志信息,打开 /etc/rsyslog.conf 文件并删除如下行前面的井号(#)以取消注释。这将允许 rsyslog 守护程序去绑定并监听 TCP 协议的 514 端口。

  1. $ModLoad imtcp
  2. $InputTCPServerRun 514

在 rsyslog 上可以 同时 启用两种协议

如果你想去指定哪个发送者被允许访问 rsyslog 守护程序,可以在启用协议行的后面添加如下的行:

  1. $AllowedSender TCP,127.0.0.1,10.110.50.0/24,*.yourdomain.com

在接收入站日志信息之前,你需要去创建一个 rsyslog 守护程序解析日志的新模板,这个模板将指示本地 Rsyslog 服务器在哪里保存入站的日志信息。在 $AllowedSender 行后以如下示例去创建一个合适的模板。

  1. $template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
  2. *.*  ?Incoming-logs
  3. &~

为了仅接收内核生成的日志信息,可以使用如下的语法。

  1. kern.*  ?Incoming-logs

接收到的日志由上面的模板来解析,它将保存在本地文件系统的 /var/log/ 目录的文件中,之后的是以客户端主机名客户端设备名命名的日志文件名字:%HOSTNAME%%PROGRAMNAME% 变量。

下面的 & ~ 重定向规则,配置 Rsyslog 守护程序去保存入站日志信息到由上面的变量名字指定的文件中。否则,接收到的日志信息将被进一步处理,并将保存在本地的日志文件中,比如,/var/log/syslog 文件中。

为添加一个规则去丢弃所有与邮件相关的日志信息,你可以使用下列的语法。

  1. mail.*~

可以在输出文件名中使用的其它变量还有:%syslogseverity%%syslogfacility%%timegenerated%%HOSTNAME%%syslogtag%%msg%%FROMHOST-IP%%PRI%%MSGID%%APP-NAME%%TIMESTAMP%、%$year%、%$month%%$day%

从 Rsyslog 版本 7 开始,将使用一个新的配置格式,在一个 Rsyslog 服务器中声明一个模板。

一个版本 7 的模板应该看起来是如下行的样子。

  1. template(name="MyTemplate" type="string"
  2.         string="/var/log/%FROMHOST-IP%/%PROGRAMNAME:::secpath-replace%.log"
  3.         )

另一种模式是,你也可以使用如下面所示的样子去写上面的模板:

  1. template(name="MyTemplate" type="list"){
  2.     constant(value="/var/log/")
  3.     property(name="fromhost-ip")
  4.     constant(value="/")
  5.     property(name="programname"SecurePath="replace")
  6.     constant(value=".log")
  7.     }

为了让 Rsyslog 配置文件的变化生效,你必须重启守护程序来加载新的配置。

  1. sudo service rsyslog restart
  1. sudosystemctl restart rsyslog

在 Debian Linux 系统上去检查它监听哪个套接字,你可以用 root 权限去运行 netstat 命令。将输出传递给一个过滤程序,比如 grep

  1. sudonetstat-tulpn |grep rsyslog

请注意:为了允许建立入站连接,你必须在防火墙上打开 Rsyslog 的端口。

在使用 Firewalld 的基于 RHEL 的发行版上,运行如下的命令:

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

在使用 UFW 的基于 Debian 的发行版上,运行如下的命令:

  1. ufw allow 514/tcp
  2. ufw allow 514/udp

Iptables 防火墙规则:

  1. iptables -A INPUT -p tcp -m tcp --dport 514-j ACCEPT
  2. iptables -A INPUT -p udp --dport 514-j ACCEPT

配置 Rsyslog 作为一个客户端

启用 Rsyslog 守护程序以客户端模式运行,并将输出的本地日志信息发送到远程 Rsyslog 服务器,编辑 /etc/rsyslog.conf 文件并增加下列的行:

  1. *.*@IP_REMOTE_RSYSLOG_SERVER:514
  2. *.*@FQDN_RSYSLOG_SERVER:514

这个行启用了 Rsyslog 服务,并将输出的所有内部日志发送到一个远处的 UDP 的 514 端口上运行的 Rsyslog 服务器上。

为了使用 TCP 协议去发送日志信息,使用下列的模板:

  1. *.*  @@IP_reomte_syslog_server:514

输出所有优先级的、仅与 cron 相关的日志信息到一个 Rsyslog 服务器上,使用如下的模板:

  1. cron.*@ IP_reomte_syslog_server:514

/etc/rsyslog.conf 文件中添加下列行,可以在 Rsyslog 服务器无法通过网络访问时,临时将客户端的日志信息存储在它的一个磁盘缓冲文件中,当网络或者服务器恢复时,再次进行发送。

  1. $ActionQueueFileName queue
  2. $ActionQueueMaxDiskSpace 1g
  3. $ActionQueueSaveOnShutdown on
  4. $ActionQueueType LinkedList
  5. $ActionResumeRetryCount -1

为使上述规则生效,需要重新 Rsyslog 守护程序,以激活为客户端模式。

 本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-04/151735.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4547字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994046
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...