热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux部署rsyslog日志服务器(主机部分)

syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它。通过

syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它。通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查看和获取重要的日志消息。
rsyslog
 作为标准的syslog守护进程,预装在了大多数的Linux发行版中。
在客户端/服务器架构的配置下,rsyslog同时扮演了两种角色:
1.作为一个syslog服务器,rsyslog可以收集来自其他设施的日志信息;
2.作为一个syslog客户端,rsyslog可以将其内部的日志信息传输到远程的syslog服务器。

在此,我们演示了在linux上如何通过rsyslog来配置一个中心化syslog服务器。 在进入详解之前,先温习一下syslog标准。


syslog标准基础
当通过syslog机制来收集日志时,有3个必须要考虑到的重要事情:
 
设施层级
: 监听何种类型的进程
严重性(优先) 级别
: 收集何种级别的日志消息
目标
: 发送或记录日志消息到何处
现在我们更加深入地了解一下配置是如何定义的。
 
设施层级定义了一种用来对内部系统进程进行分类的方法,linux中的一些常见的设施包括:
auth:
 身份验证相关的消息(登录时)
cron:
 进程或应用调度相关的消息
daemon:
 守护进程相关的消息(内部服务器)
kernel
: 内核相关的消息
mail:
 内部邮件服务器相关的消息
syslog
: syslog 守护进程本身相关的消息
lpr:
 打印服务相关的消息
local0 – local7:
 用户自定义的消息 (local7 通常被Cisco 和 Windows 服务器 使用)
 
严重性(优先)级别有固定的标准缩写和指代的值,其中的数字7具有最高的级别,这些级别包含了:
emerg: Emergency(紧急)- 0
alert: Alerts (报警)- 1
crit: Critical (关键)- 2
err: Errors (错误)- 3
warn: Warnings (警告)- 4
notice: Notification (通知)- 5
info: Information (消息)- 6
debug: Debugging (调试)- 7
 
最后,目标语句会让一个syslog客户端来执行以下三个任务之一:
保存日志消息到一个本地文件;
通过TCP/UDP将消息路由到远程的syslog服务器中;
将其发送到一个标准输出中,例如控制台。
在 rsyslog里, syslog的配置是基于以下模式进行结构化的。
 
[facility-level].[severity-level]  [destination]



在Linux中配置Rsyslog
在我们理解syslog之后,现在可以通过rsyslog来将一个Linux服务器配置为一个中心syslog服务器了,另外我们也将看到如何在一个Windows的系统上配置一个syslog客户端来发送内部日志到该syslog服务器中。
 
第1步: 初始化系统需求
要将linux主机设置为一个中央日志服务器, 我们需要创建一个分离的 /var 分区,并分配足够大的磁盘空间或者创建一个特殊的LVM卷组。这样就会使得syslog服务器能够承担在日积月累收集日志所带来的潜在增长。
 
第2步: 让rsyslog 后台进程生效
rsyslog守护进程来自于当前的linux发布版本的预装模块,但是默认并没有启动。为了能够让rsyslog守护进程能够接受外部的消息,需要编辑其配置文件/etc/rsyslog.conf.
打开文件进行编辑,查找到下面的两行所在的位置,通过删除其行首的#字符来取消注释。
$ModLoad imudp
$UDPServerRun 514
这会使得rsysolog守护进程能够在UDP端口514上接受日志消息了—UDP是一种比TCP速度快,但是并不具有TCP一样的数据流的可靠性。所以如果你需要使用可靠的传送机制,就可以通过取消以下行的注释。
 
$ModLoad imtcp
$InputTCPServerRun 514 
需要注意的是,TCP和UDP可以被同时生效来监听TCP/UDP 连接。
 
第3步:创建日志接收模板
接下来的这步,需要我们来为远程消息创建模板,并告知rsyslog守护进程如何记录从其他客户端机器所接受到的消息。
使用文本编辑器来打开 /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE块前追加以下的模板。
$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log” *
*.*  ?RemoteLogs
& ~
在此对该模板进行简单解释,$template RemoteLogs(这里“RemoteLogs” 字符串可以为任何其他的描述性的名称)指令使rsyslog后台进程将日志消息写到/var/log下的单独的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。其中第二行暗示了我们将RemoteLogs模板应用到所有接收到的日志上。
符号”& ~”表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果没有使用该重定向规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。
 
如果你想要的话,也可以使用下面的模式对特定的设备或严重性级别使用新的模板直接来记录日志消息。
 
[facility-level].[severity-level]    ?RemoteLogs
例如:
将全部优先级别的所有内部用户验证消息指定为RemoteLogs模板:
authpriv.*   ?RemoteLogs 
 
将所有系统进程中除开mail、用户验证和cron消息之外的进程产生的消息级别的日志指定为RemoteLogs模板:
*.info,mail.none,authpriv.none,cron.none    ?RemoteLogs
如果我们想要将所有从远程客户端接受到的消息写入到一个以它们的IP地址命名的单个文件中,可以使用以下的模板。在此我们为该模板赋予了“IpTemplate”名称。
$template IpTemplate,”/var/log/%FROMHOST-IP%.log” 
*.*  ?IpTemplate 
& ~ 
在我们启用rsyslog守护进程并编辑好配置文件之后,需要重启该守护进程。
 
在 Debian,Ubuntu 或 CentOS/RHEL 6中:
$ sudo service rsyslog restart 
 
在 Fedora 或 CentOS/RHEL 7中:
$ sudo systemctl restart rsyslog 
我们可以通过netstat命令来验证rsyslog守护进程是否正常工作。
 $ sudo netstat -tulpn | grep rsyslog 
在UDP监听端口下工作的rsyslog守护进程会有类似下面的输出。
udp     0 0    0.0.0.0:514    0.0.0.0:*      551/rsyslogd 
udp6    0 0    :::514         :::*           551/rsyslogd 
如果rsyslog守护进程被设置在TCP连接端口,那么应该有类似下面所示的输出。
tcp     0 0     0.0.0.0:514   0.0.0.0:*     LISTEN    1891/rsyslogd 
tcp6    0 0     :::514        :::*          LISTEN    1891/rsyslogd
 
发送Windows日志到一个远程的rsyslog服务器
要将一个Windows客户端的日志消息转发到我们的rsyslog服务器,需要一个安装 Windows syslog 代理。当然,有许多的syslog代理可以在windows上运行,在此我们可以使用一个自由软件程序 Datagram SyslogAgent.
在下载安装该syslog代理后,需要将其配置为作为服务运行。指定使用何种协议来发送数据,以及远程rsyslog服务器的IP地址和端口,最后指定应该传输的事件日志类型.
在我们完成所有的这些配置之后,我们就可以启动该服务并且在中央rsyslog服务器中使用命令行工具tail -f来查看日志文件了。


推荐阅读
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • TCP三次握手过程详解与图示解析
    本文详细解析了TCP三次握手的过程,并通过图示清晰展示了各个状态的变化。同时,文章还介绍了四次挥手的图解,解释了在TIME_WAIT状态中,客户端最后一次发送的ACK包的作用和重要性。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 本文介绍了如何通过Sybase Central连接到示例数据库,并查看其中的表和其他对象。主要内容包括启动Sybase Central、建立连接、查看表列表及表的具体信息。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
author-avatar
戒得掉既烟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有