Linux:如何将日志文件中的新行发送到远程系统日志?

Mic*_*nez 8 syslog

我们有几个应用程序正在生成自己的纯文本日志文件,我想将其转发到远程 syslog 服务器以进行集中日志记录。我无权访问root这些机器,也无法重新配置syslog以将输出重定向到远程机器。

我在网上找到了一些解决方案,但它们大多是人们自制的 bash 脚本,我正在寻找适合在潜在大批量生产环境中实施的更强大的东西。

最好是设计的东西,着眼于占用空间小,后台守护进程不断运行,可以跟上很多行等。 - 目前有哪些解决方案?

vor*_*aq7 13

您已经拒绝了“其他人的 bash 脚本”,但这是一个非常常见的解决方案——logger命令的一些创造性用法可以跟随文件并将其内容发送到其他地方。
不过,我个人不会在生产环境中这样做。


一个更好的选择需要更少的脚本黑客使用rsyslogd提到文本文件输入模块,yoonix 提到的——这是一个相当不错的解决方案,尽管在文件轮换过程中可能会丢失行,如果你在 Linux 系统上rsyslog作为您的 syslog 守护进程,不需要太多额外的工作。

syslog-ng还支持功能类似于的文件输入源rsyslog


恕我直言,最好的解决方案 - 尽管需要修改生成这些日志的应用程序 - 是直接登录到系统日志。您不想经历中间步骤、文件等syslog。--是系统日志程序,在 Unix 平台上写入日志的东西应该将它们发送到系统日志。
不幸的是,这个实现留给读者(和应用程序开发人员)作为练习,如果您的开发人员不存在、懒惰或无能,则可能无法实现......

  • @MichaelMartinez 您将修改当前在系统上运行的 `rsyslog` 配置。你应该***不***运行两个系统日志守护进程。不要粗鲁,但您需要停止尝试做错事*:这种情况的每个正确解决方案都需要对服务器进行管理(root)操作或修改应用程序。您将不得不面对这个现实,并与组织内在相关系统上有根的任何团体打交道,否则这个问题*是*题外的(您试图规避组织的政策)... (7认同)
  • @Michael 所有这些都告诉我们,有人试图强迫错误的团队实施修复。 (5认同)
  • 我猜。一般来说,从长远来看,我发现在赢得自我伤害的战斗中没有奖牌。根据我的经验,当技术债务到了会影响业务的地步时,具有讽刺意味的是,那些努力工作以避开房间里的大象的人往往最终会背着罐子。所以我会说掩盖你的屁股并让某人同意写下这个的缺点。 (5认同)
  • @MichaelMartinez 恕我直言,这听起来像是一个非常快速的技术债务水平。 (4认同)
  • @西雷克斯。不管怎样,这就是事情的方式。我在一个拥有成千上万人的组织工作,其中大多数是技术人员(工程师、开发人员、运维人员等) (2认同)

sci*_*rus 6

您可以将logstash文件输入和syslog输出一起使用。

例如,使用要监视的文件(或多个文件)和系统日志服务器信息创建配置。

文件到 syslog.conf:

input { file { path => "/var/log/kern.log" } }
output {
    syslog {
        facility => "kernel"
        host => "syslog.example.com"
        port => 514
        severity => "informational"
    }
}
Run Code Online (Sandbox Code Playgroud)

启动logstash

java -jar logstash-1.2.2-flatjar.jar agent -f file-to-syslog.conf
Run Code Online (Sandbox Code Playgroud)


Mic*_*nez 4

我将它们组合在一起tail.clogger.c形成了一个轻量级、快速且稳定的、占用空间小的编译程序(二进制)。只要它具有对日志文件的读取访问权限,那么它就可以在不需要 root 权限的情况下工作。

我还对本机记录器进行了一些改进,并添加了一个新的(可选)功能,可以在将文本字符串发送到日志服务器之前在每个日志行的开头插入文本字符串。结果是一个可以自行运行的程序,而不需要使用 shell 管道(即不需要tail logfile | logger)。它将永远运行,直到被显式终止或写入网络套接字时遇到错误。如果日志文件被轮换甚至消失,它甚至会继续运行(它只会继续查看文件是否重新出现。)

它很容易使用:只需给它一个或多个要监视的日志文件,每次将新行写入文件时,它都会将该行的副本发送到您指定的本地或远程系统日志服务器。如果您使用该选项,请加上额外的文本字符串。

事实上,我早在 12 月就完成了这个程序,但当时正在等待雅虎获得版权并提供它,现在他们已经完成了。(我写它是我在雅虎工作的一部分)。

filelogger程序信息和下载链接: