系统日志徽标

syslog 和 journald

连接 系统日志 到 Excel、Sheets 和 AI

每台服务器都已记录这些信息——一次性查询所有服务器。系统日志(Syslog)可以是 RFC 格式,也可以是导出后的 systemd 日志。将查询流指向该文件夹,每一行都会变成一行——包含日志来源主机、写入程序和进程 ID——因此,以前需要查询四个 SSH 会话才能解决的问题,现在只需查询四个 SSH 会话即可。 grep 合并成一个陈述句。

1联系
0入境口岸
只读强制执行
3 种系统日志格式 RFC 3164 · RFC 5424 · journald 每一行都承载着它的主人 只读 · 服务器上未安装任何软件
大创意

一个系统日志文件夹合并成一个表格。

Query Streams 读取 rsyslog、syslog-ng 或 systemd 已写入的文件,固定格式,并提供带有主机名的列,每行数据都列在旁边。无需运行收集器,无需维护索引,无需创建数据副本——解析器无法读取的行会被保留,并附带原因,而不是被默默丢弃。

日志文件夹在服务器上
系统日志RFC 3164
auth.log.2.gz旋转
日志导出期刊

轮换、压缩存档和重读文件——已处理

嘈杂程序.sql查询语言
选择 主持人、节目、
       数数(*) AS 线条
   文件集.事件
地点  信息 喜欢 '%错误%'
GROUP BY 主持人,节目
ORDER BY 线条 DESC
结果主机错误
主持人程序线条
db-01PostgreSQL412
web-01SSHD288
app-01systemd96
邮件-01cron11

一个结果中包含四台服务器,因为 主持人 是一列

图示——答案的形状,而非基准

来源

两份 RFC 和期刊

每张卡片都列出了 Query Streams 读取的确切文件及其存储位置。您无需重新配置 rsyslog 即可实现此功能——选择服务器当前写入的格式即可。

支持的系统日志

3 种格式
系统日志RFC 3164,BSD 文件格式
  • 大多数 Linux 服务器上的默认设置—— 星期一 日 时:分:秒 主机程序[pid]: 消息
  • 主机、程序和进程 ID 会分别成为单独的列。
  • /var/log/syslog, 认证日志, 内核日志 - 消息 在 RHEL 上
  • 周期表 - 标记 - 填充词会被声明删除,而不是通过你编写的过滤器删除。
  • 附录;标有日期和编号的轮换和 .gz 随后
系统日志RFC 5424,结构化版本
  • 现代格式——真正的 ISO 8601 认证印章,无需猜测年份。
  • 优先级、应用 ID、进程 ID 和消息 ID 各占一列
  • 结构化数据块保持完整,而不是被扁平化。
  • RFC 中的 nil 值会被解读为 null,而不是文本。 -
  • 根据 RFC 标准构建,但尚未经过实战验证。
systemd 日志journalctl -o export
  • 您用以下方式创建的文件 journalctl -o export
  • 微秒级时间戳,因此即使在繁忙的几秒钟内,订单也能正常处理。
  • 单位和运输信息以列的形式显示,而不是以文本的形式显示。
  • 其他所有期刊字段都保存在 数据 而不是被丢弃。
  • 每条记录只有一个条目,无论它跨越多少行。
更多信息这只是起点,而非终点

每次发布代理程序时都会添加新的系统日志格式。由于代理程序会自行更新,因此后续添加的格式无需任何人修改服务器即可出现在连接器中。

了解这些解析器中哪些已经过实际文件测试至关重要。RFC 3164 解析器和日志导出解析器均已使用实际捕获的日志(包括轮换日志和压缩归档文件)进行构建和测试。 RFC 5424 尚未被…… — 它已按照规范编写并经过测试,但尚未进行过实际的数据捕获。如果这是您的数据格式,“测试连接”功能会在您进行任何操作之前告知您它识别出的内容,我们希望您现在就能了解这些信息。
每个服务器

一个问题, 你运行的每一台机器

系统日志正是为此而设计的。每一行日志都包含写入它的主机信息,因此从四台服务器收集的文件夹已经可以回答所有四台服务器的相关问题——而且您添加的每个站点都会运行一个网络代理,该代理会读取文件所在位置并连接到查询流。就您的防火墙而言,这只是一个普通的出站连接,因此无需打开任何端口,也无需建立 VPN。

总公司 一排 Linux 服务器正在写入纯文本 /var/log/syslog 拨号退出
欧盟西部 云实例,按计划导出日志 拨号退出
美国东部 第二个区域,相同的文件,形状也相同。 拨号退出

三个出站连接,只需一个查询点——无需入站端口、无需 VPN、无需更改防火墙。

每个地点一名代理人

代理程序覆盖整个站点而非单个服务器,从多个主机收集的文件夹树就是一个连接器——每一行都已包含其自身的信息。 主持人免费套餐运行单个代理,更高套餐运行多个代理。

1 个站点 = 1 个代理 = 多个主机

无需打开

代理程序会建立一个加密的出站连接,请求和返回的数据都通过该连接传输。无需设置入站端口、使用 VPN 或更改防火墙设置,也无需向已运行收集器的服务器添加新的收集器守护进程。

一个连接,双向

跨区域的一次查询

每个来源 联合查询 它会指定自己的代理,因此只需一条语句即可将一个区域的身份验证日志与另一个区域的日志并列显示,或者与应用程序数据库并列显示哪些登录操作有效。此功能包含在 Business 和 Enterprise 版本中。

2 个区域 → 1 个结果集

他们不断更新自己。

代理程序会自动更新,因此后续版本中添加的日志格式无需任何人通过 SSH 连接即可到达所有服务器。正因如此,上面的列表只是一个起点,而非固定不变的清单。

代理人带来了新的格式。

难点

年份、时区和字节

Syslog 是目前仍在日常使用的最古老的格式之一,这一点显而易见。尝试将其作为数据处理时,通常会出现四种错误,而本文通过明确声明而非猜测来解决每一种错误。

该行没有年份

RFC 3164 印章是 9月10日 04:11:07 ——仅包含月份、日期和时间,没有其他信息。如果简单地理解为“所有已归档的行都归入当前年份”,那么查询流会根据文件自身的修改时间来推断年份,因此从 12 月开始的轮换仍然会归入 12 月。

9月10日 04:11:07 → 文件中的年份

而且也没有时区限制。

旧格式不包含偏移量,因此时间戳仅在写入它的机器附近才有意义。它被读取为代理的本地时间,原始文本则保留在旁边。RFC 5424 和日志都包含真实的 UTC 时间,并按此处理。

RFC 3164 本地 · RFC 5424 和 journald UTC

文本文件中的二进制值

日志导出格式会将包含换行符的任何值写入为名称、字节长度和原始字节。查询流会根据声明的长度读取这些值,而不是查找末尾——因此,包含换行符的消息会保留为一个条目,而不是多个条目。

按篇幅阅读,而非按内容阅读

没有任何事会被重复计算。

每个文件都通过其前 4 KB 的数据进行指纹识别,因此即使文件位置发生旋转,系统也会将其识别为同一个文件,而不是从头重新读取。当写入器重放其尾部数据时,滚动重复窗口会捕获重叠部分。

4 KB 前缀哈希 · 20,000 条记录窗口

该模式

你实际得到的列

并非只是一串带有时间戳的文本。每种格式都会被解析成可直接进行筛选、分组和聚合的类型化列——而且格式越新,对应的列就越多。

系统日志图标
系统日志,RFC 3164BSD 文件格式
程序pid信息
系统日志图标
系统日志,RFC 5424结构化系统日志
pri应用程序procidmsgid标清信息
Linux 徽标
systemd 日志导出journalctl -o export
程序pid优先事项单元运输信息数据

每一行也都承载着 事件时间原始印章、读取印章所用的印章以及印章来源文件。这三种格式共享一个标识列—— 主持人 ——这使得单个查询能够覆盖文件夹中的所有服务器:两种 syslog 格式从行中获取信息,而日志则从其自身获取信息。 _HOSTNAME 字段。所有数据都汇总到一个表中。 文件集.事件.

一个连接,每个表面

系统日志数据可以保存在哪里?

日志文件并非无解之谜。只需连接一次文件夹,同一个只读连接即可为 Query Streams 支持的所有接口提供数据——无需二次设置,无需二次复制数据,处理方式与数据库连接器完全相同。

支持

系统日志导出到 Excel

微软 Excel · Excel 加载项

将实时系统日志结果直接提取到工作表中,并可按需刷新——支持桌面版 Excel、Excel Online 和 Microsoft 365。

Excel 的工作原理
支持

系统日志保存到 Google 表格

表格插件

从侧边栏运行已保存的系统日志查询,并将结果行拖放到工作表中。共享协作者可以自行刷新工作表。

Google 表格的工作原理
支持

系统日志 MCP 服务器

Claude、Cursor 和 MCP 客户端 · MCP 服务器

赋予 AI 助手对系统日志的只读访问权限,并提供其编写正确 SQL 所需的架构——聊天中无需提供凭据。

MCP 的工作原理
支持

系统日志 REST API

HTTP 端点

将系统日志查询发布为任何应用程序都可以调用的已认证 JSON 端点,符合 OpenAPI 3.1 规范,并预置了 Postman、Insomnia 和 Hoppscotch 集合。无需打开数据库端口。

REST API 的工作原理
支持

系统日志记录到 Airtable

自动化平台

按计划将系统日志行同步到 Airtable,或者在 Airtable 自动化脚本中获取它们。

Airtable 的工作原理
支持

系统日志记录到 Baserow

自动化平台

通过 REST 端点从系统日志向 Baserow 表提供数据——无论是自托管还是 Baserow 云。

Baserow 的工作原理
支持

系统日志记录到 SeaTable

自动化平台

无需导出文件或暴露数据库,即可使用系统日志数据保持 SeaTable 数据库的最新状态。

SeaTable 的工作原理
支持

系统日志记录到 Smartsheet

自动化平台

将系统日志结果推送到 Smartsheet 网格中,以便计划和报告能够从源系统读取数据,而不是从上周的导出数据读取数据。

Smartsheet 的工作原理
支持

系统日志记录到 Anvil

Anvil Works · 应用平台

通过 REST 端点向 Anvil Python 应用程序提供系统日志,而不是将数据库凭据嵌入到应用程序中。

Anvil 的工作原理
支持

系统日志记录到 Power BI

Power Query M

将生成的 Power Query M 粘贴到 Power BI 高级编辑器中,报表将通过 HTTPS 读取实时系统日志结果——无需 ODBC 驱动程序,也无需打开数据库端口。

Power BI 的工作原理
支持

系统日志警报和报告

Slack · Discord · 电子邮件 · Webhook

将系统日志查询设置为定时执行,并将查询结果发送到 Slack、Discord、电子邮件或签名 webhook,或者等到行数、阈值或百分比变化超过您设定的阈值时才发送消息。

警报和报告的工作原理
对于系统日志,警报卡片值得重点关注:针对登录失败或磁盘错误的定时查询无需有人守在终端,因此周一发现的问题会在周五晚上出现在 Slack 上。目前尚未编写针对日志的详细步骤指南——相关链接页面介绍了各个界面的工作原理。

它刻意不做的事情

先说最重要的一个: 系统日志包含个人数据. 认证日志 记录用户名及其连接的 IP 地址;记录电子邮件地址的程序会将其写入邮件正文。文件中的内容都会被写入该列——不像 Web 服务器日志那样有表头映射来排除特定字段。处理生成的表格时,务必像处理原始文件一样谨慎,并考虑与哪些人共享查询。

它不是实时日志流。查询流会在您运行查询时读取磁盘上的文件,因此,故障服务会以行的形式显示,而不是以您可以监控的流的形式显示。如果您需要对打印的行进行亚秒级告警,日志管道才是合适的工具。

我们不读取二进制日志。systemd配置文件会读取由……写入的文件。 journalctl -o export, 不是 /var/log/journal 直接导出——因此,导出是您安排的步骤,而不是自动发生的事情。

规范中有三项内容尚未经过实际文件验证,值得一提:完整的 RFC 5424 规范、rsyslog 和 syslog-ng 可以写入的 ISO-8601 时间戳变体(而非传统时间戳),以及跨多行日志值的处理。这三项内容均已通过测试,但尚未在实际捕获中得到验证。

最后,虽然这个日志系列被称为系统日志,但如今它指的是 Linux 和 Unix 系统。Windows 和 macOS 系统都没有对应的事件日志配置文件。 日志显示 我们更愿意这样描述配置文件,而不是让名称暗示其含义。其余部分遵循常规设计:代理程序连接出站并读取文件,服务器上不安装任何软件,不写回任何内容,且访问权限为只读。此预设的保留期限字段初始值为 60 天,您可以自行更改。

工作原理

只需三步,服务器上就不会安装任何东西。

01

指向日志文件夹

赋予查询流代理对日志所在位置的读取权限 — /var/log 在服务器本身上,或者在你已经从多台机器上收集到的共享文件夹上。

02

它能识别这种格式

查询流通过行内容而非文件名来识别格式——因此 消息, 系统日志 重命名的存档全部被读取,与固定格式不匹配的文件会被暂时搁置并给出理由,而不是破坏表格。

03

查询它,或者连接它

从门户网站运行 SQL,将其实时导入 Microsoft Excel 或 Google Sheets,或者使用联合查询将身份验证日志与应用程序数据库中的用户连接起来——只需一条语句即可完成。

系统日志常见问题解答

我使用的是哪种格式?

观察一行的开头 /var/log/syslog/var/log/messages如果它以三个字母的月份开头—— 9月10日 04:11:07 这就是 RFC 3164,也是大多数 Linux 服务器默认写入的内容。如果它以尖括号内的数字开头,后跟完整的 ISO 8601 时间戳,那就是 RFC 5424。

您无需在开始之前就确定。测试连接会报告它识别出了哪个配置文件以及匹配的文件内容,因此答案来自您的实际文件,而不是猜测。

我需要重新配置rsyslog或syslog-ng吗?

不。两种格式都受支持,所以选择服务器当前写入的格式即可——而经典的默认格式是经过最多测试的格式。

值得考虑的一项更改与格式无关:如果您已经将多台机器的日志转发到一个收集器,请将代理指向该收集器的文件夹,这样您就可以在单个连接器中获得每个主机,因为每一行都包含它来自的主机。

如何处理旧系统日志行中缺失的年份?

年份取自文件的修改时间。例如,一个轮换存档文件,如果最后写入时间是 12 月,则会被读取为 12 月,而不是像简单的解析器那样,将每一行都直接替换为当前年份。

了解这个限制很有必要:如果文件的时间戳被抹平——例如从未保留时间戳的备份中恢复,或以重置时间戳的方式复制——则只能根据文件系统的信息进行推断。原始文本始终与解析后的值并列显示,因此您可以查看该行实际包含的内容。

可以直接读取systemd日志吗?

不,这是人们常常忽略的设置步骤。磁盘上的日志是一个二进制数据库,Query Streams 无法直接打开它。它读取的是导出格式的数据: journalctl -o export > journal.export在任何代理可以读取的文件夹中。

实际上,这意味着服务器上会有一个定时任务——一个定时器或 cron 条目,它会将导出的文件写入代理程序已经查找的位置。之后的所有操作都是自动的,即使是 gzip 压缩的导出文件也会被读取。

Windows 事件日志或 macOS 事件日志呢?

两者均未在此处列出。本页列出的三种格式均为 Linux 和 Unix,我们宁愿明确指出这一差距,也不愿让“系统日志”一词造成实际上并不存在的覆盖范围的误解。

不过,Windows 系统也有解决办法。读取实时事件日志与读取文本文件不同——它是一个结构化的通道,而不是一个包含多行的文件夹——而且它属于一个单独的连接器,而不是这个连接器。但是,如果您已经按计划将这些事件导出为文本或 CSV 文件,那么该文件夹现在就可以读取:只需用一个……描述一次布局即可。 自定义日志 连接器和导出内容会像此页面上的其他内容一样以表格形式显示。

我的日志里有用户名和IP地址。我需要担心吗?

是的,最好在提出问题之前而不是之后考虑这个问题。 认证日志 系统日志记录了谁从哪里连接,这在大多数司法管辖区属于个人数据,而系统日志消息是自由格式文本,可以包含程序选择打印的任何内容。

查询流不会改变文件内容,因此更准确地说,表继承了文件的敏感性。两点有助于解决这个问题:保存的查询共享的是结果,而不是连接,因此接收者永远不会看到完整的日志;此外,过滤器允许您在与他人共享查询之前,将其范围缩小到对方实际需要的程序。

我将多台服务器的日志文件收集到一个文件夹中。这样可以吗?

这正是它最擅长的场景。这三种格式都将主机名作为一列——两种系统日志格式从日志行中读取主机名,而日志导出格式则从其自身的 hostname 字段中获取——因此,从 40 台机器收集的文件夹只需一个连接器,按主机名分组也只需一个普通连接器。 GROUP BY.

位于不同建筑物或区域的服务器也能正常工作。每个位置都运行着自己的代理,企业版和高级版套餐可以通过一条语句使用联合查询来读取所有位置的数据。

如果解析器无法读取某一行代码怎么办?

它会被保留,而不是删除。不符合固定格式的行会作为原始行保留,并附带原因说明。因此,格式错误的条目或意外的格式更改会以可见和可查询的形式显示出来,而不是在数据中留下一个无声的空白。

对于格式标记为二进制的日志值,情况也是如此:它会连同原因一起显示在其条目旁边,而不是被猜测,而条目本身则保持完整。

你们的服务器多年来一直在记录这些信息。

连接日志文件夹,几分钟内即可运行您的第一个查询。免费套餐,无需信用卡,服务器上无需安装任何软件。

只读 · 仅限出站连接 · 您的日志保留在您的服务器上