syslog-ng使用_使用syslog-ng进行可靠的IoT事件记录

syslog-ng使用

对于连接到Internet或网络的任何设备,至关重要的是您记录事件,以便知道设备在做什么并且可以解决任何潜在问题。 这些设备越来越多地包括物联网(IoT)设备和嵌入式系统。

要考虑的一个监视工具是开源syslog-ng应用程序,这是一个增强的日志记录守护程序,重点是可移植性和中央日志收集。 它从许多不同的来源收集日志,进行处理和过滤,并存储或路由以进行进一步分析。 大部分syslog-ng是用高效且高度可移植的C代码编写的。 它适用于各种情况,无论您需要足够简单的东西来在功率不足的设备上以很小的占用空间运行,还是需要功能强大的解决方案来驻留在数据中心中并从成千上万个设备中收集日志。

您可能会注意到我在那一段中写的大量流行词。 为了弄清这一切的含义,让我们遍历它们,但是这次更慢,更深入。

记录中

首先是第一件事。 记录是在计算机上记录事件。 在典型的Linux计算机上,您可以在/var/log目录中找到这些日志消息。 例如,如果您通过SSH登录到计算机,则会在以下文件之一中找到类似于此的消息:

Jan 14 11:38:48 linux -0jbu sshd[7716]: Accepted publickey for root from 127.0.0.1 port 48806 ssh2

这可能与您的CPU运行温度太高,通过HTTP下载的文档或您的应用程序认为重要的任何事情有关。

系统日志

就像我在上面写的,syslog-ng应用程序是一个增强的日志记录守护程序,专注于可移植性中央日志收集 。 守护程序表示syslog-ng是在后台连续运行的应用程序; 在这种情况下,它正在收集日志消息。

尽管对当今许多应用程序的Linux测试仅限于x86_64计算机,但是syslog-ng也可以在许多BSD和商业UNIX变体上运行。 从嵌入式/ IoT的角度来看,更重要的是它可以在许多不同的CPU架构上运行,包括32位和64位ARM,PowerPC,MIPS等。 (有时,我仅通过阅读syslog-ng的使用方法来了解新的体系结构。)

为什么集中收集原木这么重要? 原因之一是易于使用,因为它创建了一个要检查的地方,而不是数以千计的设备。 另一个原因是可用性-即使设备由于任何原因不可用,您也可以检查设备的日志消息。 第三个原因是安全性; 当您的设备被黑客入侵时,检查日志可以发现黑客入侵的痕迹。

syslog-ng的四个角色

Syslog-ng具有四个主要角色:收集,处理,过滤和存储日志消息。

收集消息: syslog-ng可以从各种特定平台的来源收集信息 ,例如/dev/logjournalsun-streams 。 作为中央日志收集器,它既可以使用传统( rfc3164 )和新( rfc5424 )syslog协议,也可以使用基于用户数据报协议(UDP),TCP和加密连接的所有变体。 您还可以从管道,套接字,文件甚至应用程序输出中收集日志消息(或任何类型的文本数据)。

处理日志消息:这里的可能性几乎是无限的。 您可以使用内置解析器对日志消息进行分类,规范化和结构化。 如果没有可用的解析器可以满足您的需求,您甚至可以用Python编写自己的解析器。 您还可以根据邮件内容使用地理位置数据或其他字段来丰富邮件。 可以重新格式化日志消息,以适合处理日志的应用程序的要求。 您还可以重写日志消息(当然不是为了伪造消息),例如根据许多合规性要求对日志消息进行匿名处理。

筛选日志:筛选日志有两个主要用途:丢弃多余的日志消息(如调试级别的消息)以保存在存储中,以及进行日志路由-确保正确的日志到达正确的目的地。 后者的一个示例是将所有与身份验证相关的消息转发到安全信息和事件管理(SIEM)系统。

存储消息:传统上,文件保存在本地或发送到中央syslog服务器。 无论哪种方式,它们都将被发送到平面文件 。 多年来,syslog-ng开始支持SQL数据库,并且在过去几年中,syslog-ng中添加了大数据目标,包括HDFS,Kafka,MongoDB和Elasticsearch。

讯息格式

当查看/var/log目录下的日志消息时,您将看到大多数形式(如上述SSH消息中所示):

date + host name + application name + an almost complete English sentence

在用不同的句子描述每个应用程序事件的地方,基于此数据创建报告是一件很痛苦的工作。

解决这种混乱的方法是使用结构化日志记录。 在这种情况下,事件表示为名称-值对,而不是自由格式的日志消息。 例如,可以通过应用程序名称,源IP地址,用户名,身份验证方法等描述SSH登录。

您可以从一开始就对日志消息采取结构化的方法。 处理旧式日志消息时,可以在syslog-ng中使用不同的解析器,以将非结构化(和某些结构化)消息格式转换为名称/值对。 一旦您的日志可以用作名称/值对,报告,警报和仅查找所需信息就变得容易得多。

记录物联网

让我们从一个棘手的问题开始:哪个版本的syslog-ng最流行? 在回答之前,请考虑以下事实:该项目始于20年前,Red Hat Enterprise Linux EPEL的版本为3.5,当前版本为3.14。 当我在演讲中问这个问题时,听众通常会在自己喜欢的Linux发行版中提出建议。 令人惊讶的是,正确的答案是1.6版本,已有将近15年的历史。 那是因为它是Amazon Kindle电子书阅读器中包含的版本,因此它在全球超过1亿台设备上运行。 运行syslog-ng的消费类设备的另一个示例是BMW i3全电动汽车。

Kindle使用syslog-ng收集有关用户在设备上执行的操作的所有可能信息。 在BMW上,syslog-ng会执行非常复杂的基于内容的日志消息过滤,并且很可能只记录最重要的日志。

网络和存储是其他经常使用syslog-ng的设备类别。 网络和存储是其他经常使用syslog-ng的设备类别。 一些知名的示例是Turris Omnia开源Linux路由器和Synology NAS设备。 在大多数情况下,syslog-ng最初是作为这些设备上的日志记录客户端使用的,但在某些情况下,它已演变为具有丰富Web界面的中央日志记录服务器。

您也可以在工业设备中找到syslog-ng。 它可以在National Instruments进行测量和自动化的所有实时Linux设备上运行。 它还用于从客户开发的应用程序中收集日志。 配置是从命令行完成的,但是可以使用漂亮的GUI浏览日志。

最后,还有一些大型项目,例如汽车和飞机,其中syslog-ng同时在客户端和服务器端运行。 此处的共同主题是syslog-ng收集所有日志和指标数据,将其发送到服务器的中央群集,在该群集中处理日志,然后将其保存到受支持的大数据目标之一,以等待进一步的分析。

物联网的整体优势

在物联网环境中使用syslog-ng有许多好处。 首先,它提供了高性能和可靠的日志收集。 由于系统和应用程序日志以及指标数据可以一起收集,因此还简化了体系结构。 第三,它可以解析数据并以即用型格式显示数据,因此更易于使用数据。 最后,通过syslog-ng进行有效的路由和筛选可以显着减少处理负载。

翻译自: https://opensource.com/article/18/3/logging-iot-events-syslog-ng

syslog-ng使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值