Expanding Perspectives: Logs as Evidence of Historical Activity

在数据的核心:

就像一棵实体树的年轮揭示了它的生命历程一样–厚的年轮表示好的年份,薄的年轮表示有挑战性的年份–数字日志提供了系统活动的历史记录。

日志是系统内事件的记录。 这些记录提供了系统一直在执行的操作的详细说明,捕获各种事件,例如用户登录、文件访问、系统错误、网络连接以及数据或系统配置的更改。

虽然具体细节可能因日志类型而异,但日志条目通常包含以下信息:

 记录事件的时间戳
 生成日志条目的系统或应用程序的名称
 发生的事件类型
 有关事件的其他详细信息,例如发起事件的用户或生成事件的设备的 IP 地址

此信息通常存储在日志文件中,其中包含系统上任何给定时间发生的事件的聚合条目。

然而,由于数字交互是连续且快节奏的,日志文件的大小可能会根据系统上记录的活动呈指数级增长。

阅读的真正力量:语境相关性

单个日志条目本身可能看起来微不足道。但是,当日志数据被汇总、分析并与其他信息源交叉引用时,它就成为了一种强有力的调查工具。客户可以回答有关事件的关键问题,例如:

  • What happened?
  • When did it happen?
  • Where did it happen?
  • Who is responsible?
  • Were their actions successful?
  • What was the result of their action?

下面的假设场景可以说明这一方面。假设一名学生据称访问了大学网络上的不适当内容。通过查看日志,系统管理员可以回答以下问题:

Question Answer
What happened? 一个对手被证实已经访问了SwiftSpend Financial的GitLab实例。
When did it happen? 发生了吗 访问于2023年9月8日星期三22:10开始。
Where did it happen? 该事件源自VPN用户网段(10.10.133.0/24)内IP地址为10.10.133.168的设备。
Who is responsible? 在检查网络日志时,观察到由用户代理“Mozilla/5.0(X11; Ubuntu; Linux x86_64; rv:109.0)Gecko/20100101 Firefox/115.0”标识的设备被分配了IP地址10.10.133.168。
Were they successful? 是的,因为发现GitLab实例上公开了一个APIKey。此外,网络代理日志确认对手设备到达并通过其上传的网络外壳保持访问。
What is the result of their action? 攻击者在gitlab.swiftspend.finance上实现了远程代码执行,并执行了攻击后活动。

面的例子强调了日志如何有助于拼凑事件的全貌,从而增强我们的理解和有效应对的能力。

Types, Formats, and Standards

日志类型

特定的日志类型可以提供有关系统操作、性能和安全性的独特视角。虽然有各种各样的日志类型,但我们将重点介绍最常见的类型,它们涵盖了大约80%的典型用例。

下面是一些最常见的日志类型的列表:

应用程序日志:关于特定应用程序的消息,包括状态、错误、警告等。

审计程序:与对合规性至关重要的运营程序相关的活动。

安全事件:安全事件,如登录、权限更改、防火墙活动等。

服务器日志:服务器生成的各种日志,包括系统、事件、错误和访问日志。

系统错误:内核活动、系统错误、靴子序列和硬件状态。

网络流量:网络流量、连接和其他网络相关事件。

数据库查询:数据库系统中的活动,如查询和更新。

Web服务器请求:由Web服务器处理的请求,包括URL、响应代码等。

了解各种日志类型、格式和标准对于实际日志分析至关重要。它使分析师能够有效地解析、解释日志数据并从中获得见解,从而促进故障排除、性能优化、事件响应和威胁搜索。

​ Log Formats

日志格式定义了日志文件中数据的结构和组织。它指定数据的编码方式、每个条目的分隔方式以及每行中包含哪些字段。这些格式可以有很大的不同,可以分为三个主要类别:半结构化,结构化和非结构化。我们将探索这些类别并通过示例说明它们的用法。

  • 半结构化日志:这些日志可能包含结构化和非结构化数据,其中可预测的组件可容纳自由格式的文本。示例包括:

    • 系统日志消息格式:一种广泛采用的系统和网络日志记录协议。

      使用Syslog格式的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat syslog.txt
      May 31 12:34:56 WEBSRV-02 CRON[2342593]: (root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi)

    • Windows事件日志(EVTX)格式:Windows系统的专有Microsoft日志。

      使用Windows事件日志(EVTX)格式的日志文件示例

                              PS C:\WINDOWS\system32> Get-WinEvent -Path "C:\Windows\System32\winevt\Logs\Application.evtx"


      ProviderName: Microsoft-Windows-Security-SPP

      TimeCreated Id LevelDisplayName Message
      ----------- -- ---------------- -------
      31/05/2023 17:18:24 16384 Information Successfully scheduled Software Protection service for re-start
      31/05/2023 17:17:53 16394 Information Offline downlevel migration succeeded.

  • 结构化日志:遵循严格和标准化的格式,这些日志有助于解析和分析。典型的结构化日志格式包括:

    • 字段分隔符:逗号分隔值(CSV)和制表符分隔值(TSV)是表格数据常用的格式。

      使用CSV格式的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat log.csv
      "time","user","action","status","ip","uri"
      "2023-05-31T12:34:56Z","adversary","GET",200,"34.253.159.159","http://gitlab.swiftspend.finance:80/"

    • JavaScript Object Notation(JSON):以其可读性和与现代编程语言的兼容性而闻名。

      使用JSON格式的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat log.json
      {"time": "2023-05-31T12:34:56Z", "user": "adversary", "action": "GET", "status": 200, "ip": "34.253.159.159", "uri": "http://gitlab.swiftspend.finance:80/"}

    • W3C扩展日志格式(ELF):由万维网联盟(W3C)定义,可定制用于Web服务器日志记录。它通常由Microsoft Internet信息服务(IIS)Web服务器使用。

      使用W3C扩展日志格式(ELF)的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat elf.log
      #Version: 1.0
      #Fields: date time c-ip c-username s-ip s-port cs-method cs-uri-stem sc-status
      31-May-2023 13:55:36 34.253.159.159 adversary 34.253.127.157 80 GET /explore 200
    • 可扩展标记语言(XML):灵活且可定制,用于创建标准化的日志格式。

      使用XML格式的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat log.xml
      <log><time>2023-05-31T12:34:56Z</time><user>adversary</user><action>GET</action><status>200</status><ip>34.253.159.159</ip><url>https://gitlab.swiftspend.finance/</url></log>

  • 非结构化日志:由自由格式的文本组成,这些日志可能具有丰富的上下文,但可能会在系统解析方面带来挑战。示例包括:

    • *NCSA Common Log Format(CLF):**用于客户端请求的标准化Web服务器日志格式。默认情况下,它通常由ApacheHTTP服务器使用。

      使用NCSA通用日志格式(CLF)的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat clf.log
      34.253.159.159 - adversary [31/May/2023:13:55:36 +0000] "GET /explore HTTP/1.1" 200 4886
    • NCSA组合日志格式(组合):CLF的扩展,添加了诸如用户代理和用户代理等字段。默认情况下,它通常由NginxHTTPServer使用。

      使用NCSA组合日志格式(组合)的日志文件示例

                              damianhall@WEBSRV-02:~/logs$ cat combined.log
      34.253.159.159 - adversary [31/May/2023:13:55:36 +0000] "GET /explore HTTP/1.1" 200 4886 "http://gitlab.swiftspend.finance/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"

重要提示:可以定制自定义格式以满足特定应用程序或用例。这些格式提供了灵活性,但可能需要专门的解析工具进行有效的解释和分析。

日志标准

日志标准是一组指南或规范,定义了如何生成、传输和存储日志。日志标准可能会指定使用特定的日志格式,但它们也涵盖了日志记录的其他方面,例如应该记录哪些事件,如何安全地传输日志,以及日志应该保留多长时间。日志标准的示例包括:

通用事件表达式(CEE):该标准由 MITRE 开发,为日志数据提供通用结构,使日志的生成、传输、存储和分析变得更加容易。
OWASP Logging Cheat Sheet:为开发人员构建应用程序日志记录机制(特别是与安全日志记录相关)的指南。
Syslog 协议:Syslog 是消息记录的标准,允许将生成消息的软件与存储消息的系统以及报告和分析消息的软件分开。
NIST 特别出版物 800-92:该出版物指导计算机安全日志管理。
Azure Monitor 日志:Microsoft Azure 上的日志监控指南。
Google Cloud Logging:Google Cloud Platform (GCP) 登录指南。
Oracle 云基础设施日志记录:Oracle 云基础设施 (OCI) 日志记录指南。
弗吉尼亚理工大学 - 信息技术日志记录标准:示例日志审查和合规性指南。

Collection, Management, and Centralisation

​ 日志收集是日志分析的一个重要组成部分,涉及到从不同来源(如服务器、网络设备、软件和数据库)收集日志。

​ 为了使日志有效地表示事件的时间顺序,在日志记录期间保持系统的时间准确性至关重要。利用网络时间协议(NTP)是一种实现此同步并确保日志中存储的时间轴完整性的方法。

​ 由于这是确保安全分析师有一个全面的数据集进行审查的基础步骤,因此以下是实现这一目标的简单分步过程,同时请记住需要根据重要信息对收集进行优先级排序:

  • 标识源:列出所有潜在的日志源,如服务器、数据库、应用程序和网络设备。
  • 选择日志收集器:选择适合您的基础架构的日志收集器工具或软件。
  • 配置收集参数:确保通过NTP启用时间同步以保持准确的时间线,调整设置以确定以什么间隔记录哪些事件,并根据重要性确定优先级。
  • 测试收集:配置后,运行测试以确保从所有源正确收集日志。

重要提示:请注意,基于NTP的时间同步可能无法与VM复制,因为它没有互联网连接。但是,在实践中执行此操作时,最好使用pool.ntp.org查找NTP服务器。时间同步可以在基于Linux的系统上自动执行,也可以通过执行手动启动。

ntpdate pool.ntp.org

在基于Linux的系统上使用NTP进行时间同步的示例

                        root@WEBSRV-02:~# ntpdate pool.ntp.org
12 Aug 21:03:44 ntpdate[2399365]: adjust time server 85.91.1.180 offset 0.000060 sec
root@WEBSRV-02:~# date
Saturday, 12 August, 2023 09:04:55 PM UTC
root@WEBSRV-02:~#

日志管理

高效的日志管理确保每个收集的日志都安全地存储,系统地组织,并准备快速检索。混合方法可以通过收集所有日志文件并选择性地进行修剪来提供平衡的解决方案。

一旦你整理了你的日志,对它们的有效管理是至关重要的。可以遵循以下步骤来实现这一点:

  • 存储:考虑保留期和可访问性等因素,确定安全的存储解决方案。
  • 组织:根据日志的来源、类型或其他标准对日志进行分类,以便以后更容易访问。
  • 备份:定期备份您的日志,以防止数据丢失。
  • 审查:定期审查日志,以确保它们被正确存储和分类。

日志集中

集中化对于快速日志访问、深入分析和快速事件响应至关重要。统一的系统允许使用提供实时检测、自动通知以及与事件管理系统无缝集成的工具进行高效的日志管理。

集中日志可以显著简化访问和分析。这里有一个实现它的简单过程:

  • 选择一个集中式系统:选择一个整合所有来源的日志的系统,例如Elastic Stack或Splunk。
  • 集成源:将所有日志源连接到这个集中式系统。
  • 设置监控:利用工具,提供实时监控和警报的指定事件。
  • 与事件管理集成:确保您的集中式系统可以与您现有的任何事件管理工具或协议无缝集成。

实践活动:使用rsyslog收集日志

本活动旨在介绍rsyslog并演示它如何增强日志的集中化和管理。作为收集过程的一部分,我们将配置rsyslog将所有sshd消息记录到特定的文件中,例如/var/log/websrv-02/rsyslog_sshd.log。可以遵循以下步骤来实现这一点:

  1. 打开终端。
  2. 确保rsyslog已安装:您可以通过运行以下命令来检查rsyslog是否已安装:sudo systemctl status rsyslog
  3. 创建配置文件:使用文本编辑器创建以下配置文件:gedit /etc/rsyslog.d/98-websrv-02-sshd.confnano /etc/rsyslog.d/98-websrv-02-sshd.confvi /etc/rsyslog.d/98-websrv-02-sshd.confvim /etc/rsyslog.d/98-websrv-02-sshd.conf
  4. 添加配置:/etc/rsyslog.d/98-websrv-02-sshd.conf中添加以下行,将sshd消息定向到特定的日志文件:$FileLog Mode 0644 :programname,isequal,“sshd”/var/log/websrv-02/rsyystem_sshd.log
  5. 保存并关闭配置文件。
  6. 重新启动rsyslog:使用以下命令重新启动rsyslog以应用更改:sudo systemctl restart rsyslog
  7. 验证配置:您可以通过ssh localhost启动到localhost的SSH连接或在一两分钟后检查日志文件来验证配置是否有效。

Expected Output after rsyslog configuration to monitor sshd

重要提示:如果未配置日志的远程转发,则可以使用scp / rsync等工具手动收集日志。

Storage, Retention, and Deletion

Log Storage

数据可以存储在各种位置,例如生成它们的本地系统,集中式存储库或基于云的存储。

存储位置的选择通常取决于多个因素:

​ 安全要求:确保日志的存储符合组织或监管安全协议。
​ 可访问性需求:访问日志的速度和访问者可能会影响存储的选择。
​ 存储容量:生成的日志量可能需要大量的存储空间,影响存储解决方案的选择。
​ 成本考虑因素:日志存储的预算可能决定基于云的解决方案或本地解决方案之间的选择。
​ 合规性法规:管理日志存储的特定行业法规可能会影响存储的选择。
​ 保留策略:所需的保留时间和检索的难易程度会影响决策过程。
​ 灾难恢复计划:即使在系统故障时也确保日志的可用性可能需要特定的存储解决方案。

日志保留

重要的是要认识到日志存储不是无限的。因此,必须在保留原木以满足未来的潜在需要和储存成本之间取得合理的平衡。了解热、温和冷存储的概念可以帮助您做出决策:

​ 热存储:过去 3-6 个月最容易访问的日志。 查询速度应该接近实时,具体取决于查询的复杂性。
​ 温存储:六个月到两年的日志,充当数据湖,易于访问,但不如热存储那么即时。
​ 冷存储:存档或压缩日志 2-5 年。 这些日志不易访问,通常用于追溯分析或范围界定目的。

管理存储日志的成本对组织至关重要,仔细选择热、温或冷存储策略可以帮助控制这些成本。

​ Log Deletion

必须小心执行日志删除,以避免删除可能仍然有价值的日志。日志文件的备份,特别是重要的,是必要的删除之前。

制定明确的删除政策以确保遵守数据保护法律法规至关重要。日志删除有助于:

  • 维护可管理的日志大小以供分析。
  • 遵守GDPR等要求删除不必要数据的隐私法规。
  • 保持存储成本平衡。

最佳实践:日志存储、保留和删除

  • 根据业务需求和法律的要求确定存储、保留和删除策略。
  • 根据不断变化的条件和法规,定期审查和更新指导方针。
  • 自动执行存储、保留和删除流程,以确保一致性并避免人为错误。
  • 加密敏感日志以保护数据。
  • 应定期进行备份,尤其是在删除之前。

实践活动:使用logrotate进行日志管理

本活动旨在介绍logrotate,这是一个自动化日志文件旋转、压缩和管理的工具,可确保系统地处理日志文件。它允许自动旋转、压缩和删除日志文件。作为一个例子,下面是我们如何为/var/log/websrv-02/rsyslog_sshd.log设置它:

  1. 创建配置文件:sudo gedit /etc/logrotate.d/98-websrv-02_sshd.confsudo nano /etc/logrotate.d/98-websrv-02_sshd.confsudo vi /etc/logrotate.d/98-websrv-02_sshd.confsudo vim /etc/logrotate.d/98-websrv-02_sshd.conf

  2. 定义日志设置:

    /var/log/websrv-02/rsyslog_sshd.log {
    daily
    rotate 30
    compress
    lastaction
    DATE=$(date +"%Y-%m-%d")
    echo "$(date)" >> "/var/log/websrv-02/hashes_"$DATE"_rsyslog_sshd.txt"
    for i in $(seq 1 30); do
    FILE="/var/log/websrv-02/rsyslog_sshd.log.$i.gz"
    if [ -f "$FILE" ]; then
    HASH=$(/usr/bin/sha256sum "$FILE" | awk '{ print $1 }')
    echo "rsyslog_sshd.log.$i.gz "$HASH"" >> "/var/log/websrv-02/hashes_"$DATE"_rsyslog_sshd.txt"
    fi
    done
    systemctl restart rsyslog
    endscript
    }
  3. 保存并关闭文件。

  4. 手动执行:sudo logrotate -f /etc/logrotate.d/98-websrv-02_sshd.conf

Expected Output after logrotate configuration of sshd

Hands-on Exercise: Log analysis process, tools, and techniques

日志分析过程

日志分析涉及解析、规范化、排序、分类、丰富、相关、可视化和报告。它可以通过各种工具和技术来完成,从Splunk和ELK等复杂系统到从默认命令行工具到开源工具的临时方法。

Image Representation of a Data Source Data Sources 数据源是配置为记录系统事件或用户活动的系统或应用程序。这就是原木的起源。
Image Representation of Log Parsing Parsing 解析是将日志数据分解为更易于管理和理解的组件。由于日志的格式因源而异,因此必须解析这些日志以提取有价值的信息。
Image Representation of Log Normalisation Normalisation 规范化是对解析后的数据进行标准化。它涉及将各种日志数据转换为标准格式,使比较和分析来自不同来源的数据更加容易。在具有多个系统和应用程序的环境中,这是必不可少的,其中每个系统和应用程序都可能以另一种格式生成日志。
Image Representation of Log Sorting Sorting 排序是日志分析的一个重要方面,因为它允许有效的数据检索和模式识别。事件可以按时间、来源、事件类型、严重性和数据中存在的任何其他参数进行排序。正确的分类对于识别表明运营问题或安全事件的趋势和异常至关重要。
Image Representation of Log Classification Classification 分类涉及根据日志的特征将其分配到类别。通过对日志文件进行分类,您可以快速筛选并集中于对分析最重要的日志。例如,分类可以基于严重性级别、事件类型或来源。使用机器学习的自动分类可以显著增强这一过程,帮助识别可能被忽视的潜在问题或威胁。
Image Representation of Log Enrichment Enrichment 日志丰富为日志添加上下文,使其更有意义,更易于分析。它可能涉及添加地理数据,用户详细信息,威胁情报,甚至来自其他来源的数据等信息,这些数据可以提供事件的全貌。 丰富使日志更有价值,使分析师能够做出更好的决策,更准确地响应事件。与分类一样,日志丰富可以使用机器学习自动化,从而减少日志分析所需的时间和精力。
Image Representation of Log Correlation Correlation 相关性包括链接相关记录和识别日志条目之间的连接。此过程有助于检测模式和趋势,从而更容易理解各种日志事件之间的复杂关系。相关性对于确定可能未被注意到的安全威胁或系统性能问题至关重要。
Image Representation of Log Visualisation Visualisation 可视化以图表、图形或热图等图形格式表示日志数据。可视化呈现数据使识别模式、趋势和异常更容易。可视化工具提供了一种直观的方式来解释大量的日志数据,使复杂的信息更容易访问和理解。
Image Representation of Log Reporting Reporting 报告将日志数据汇总为结构化格式,以提供见解、支持决策或满足合规性要求。有效的报告包括创建清晰简洁的日志数据摘要,以满足利益相关者的需求,例如管理层、安全团队或审计员。定期报告对于监控系统运行状况、安全状况和运营效率至关重要。

日志分析工具

安全信息和事件管理(SIEM)工具,如Splunk或Elastic Search,可用于复杂的日志分析任务。

然而,在需要立即进行数据分析的情况下,例如在事件响应期间,基于Linux的系统可以使用默认工具,如catgrepsedsortuniqawk,沿着sha256sum来散列日志文件。基于Windows的系统可以利用EZ-Tools和默认的小工具Get-FileHash来实现类似的目的。这些工具支持快速解析和分析,适合这些情况。

此外,应通过在收集期间获取日志文件的散列来观察适当的获取,以确保其在法庭上的可接受性。

因此,不仅必须记录事件,而且必须确保其完整性,对事件进行分析,并从日志中吸取任何经验教训,因为组织的安全性和效率取决于它们。

日志分析技术

日志分析技术是用于解释日志数据并从中获得见解的方法或实践。这些技术可以从简单到复杂,对于识别模式,异常和关键见解至关重要。以下是一些常用的技巧:

模式识别:这涉及识别日志数据中的重复序列或趋势。它可以检测常规的系统行为或识别可能表明安全威胁的异常活动。

异常检测:异常检测侧重于识别偏离预期模式的数据点。尽早发现潜在问题或恶意活动至关重要。

相关性分析:将不同的日志条目关联起来有助于理解各种事件之间的关系。它可以揭示系统组件之间的因果关系和依赖关系,在根本原因分析中至关重要。

时间轴分析:分析一段时间内的日志有助于了解趋势、季节性和周期性行为。它对于性能监控和预测系统负载至关重要。

机器学习和人工智能:利用机器学习模型可以自动化和增强各种日志分析技术,例如分类和丰富。人工智能可以提供预测性见解,并帮助自动响应特定事件。

可视化:通过图形和图表表示日志数据,可以直观地理解和快速洞察。可视化可以使复杂的数据更容易访问,并有助于识别关键模式和关系。

统计分析:使用统计方法分析日志数据可以提供定量见解,并有助于做出数据驱动的决策。回归分析和假设检验可以推断关系并验证假设。

根据日志分析任务的具体要求和复杂性,可以单独或组合应用这些技术。理解和使用这些技术可以显著提高日志分析的有效性,从而做出更明智的决策和更强大的安全措施。

使用MySQL:实际应用

使用日志是一项复杂的任务,需要理解和操作数据。本教程涵盖两个场景。第一个是处理通过开源日志查看器工具直接访问的未解析原始日志文件。这种方法无需预处理即可进行即时分析,非常适合快速检测或保留原始格式。

第二个场景重点关注使用Unix工具(如catgrepsedsortuniqawk)创建经过解析和整合的日志文件。它涉及合并、过滤和格式化日志以创建标准化文件。通过日志查看器工具,此合并文件可提供清晰有效的数据视图,有助于识别模式和问题。

这些方法突出了日志分析在系统诊断和网络安全中的灵活性和重要性。无论是使用原始日志还是解析日志,编译、查看和分析数据的能力对于组织的安全性和效率至关重要。

未解析的原始日志文件

在处理原始日志文件时,您可以通过在URL中指定路径,直接通过日志查看器工具访问它们。下面是一个包含多个日志文件的URL示例:

http://10.10.3.201:8111/log?log=%2Fvar%2Flog%2Fgitlab%2Fnginx%2Faccess.log&log=%2Fvar%2Flog%2Fwebsrv-02%2Frsyslog_cron.log&log=%2Fvar%2Flog%2Fwebsrv-02%2Frsyslog_sshd.log&log=%2Fvar%2Flog%2Fgitlab%2Fgitlab-rails%2Fapi_json.log

将此URL粘贴到浏览器中,以使用日志查看器工具查看未解析的原始日志文件。

注意:您可以使用AttackBox或VM浏览器访问URL。但是,请注意,虚拟机上的Firefox可能需要几分钟的时间才能启动靴子。

已解析和整合的日志文件

要创建一个经过解析和整合的日志文件,您可以使用Unix工具的组合,如catgrepsedsortuniqawk。下面是一个分步指南:

  1. 使用awksed将日志条目规范化为所需的格式。在这个例子中,我们将按日期和时间排序:

    # Process nginx access log
    awk -F'[][]' '{print "[" $2 "]", "--- /var/log/gitlab/nginx/access.log ---", "\"" $0 "\""}' /var/log/gitlab/nginx/access.log | sed "s/ +0000//g" > /tmp/parsed_consolidated.log

    # Process rsyslog_cron.log
    awk '{ original_line = $0; gsub(/ /, "/", $1); printf "[%s/%s/2023:%s] --- /var/log/websrv-02/rsyslog_cron.log --- \"%s\"\n", $2, $1, $3, original_line }' /var/log/websrv-02/rsyslog_cron.log >> /tmp/parsed_consolidated.log

    # Process rsyslog_sshd.log
    awk '{ original_line = $0; gsub(/ /, "/", $1); printf "[%s/%s/2023:%s] --- /var/log/websrv-02/rsyslog_sshd.log --- \"%s\"\n", $2, $1, $3, original_line }' /var/log/websrv-02/rsyslog_sshd.log >> /tmp/parsed_consolidated.log

    # Process gitlab-rails/api_json.log
    awk -F'"' '{timestamp = $4; converted = strftime("[%d/%b/%Y:%H:%M:%S]", mktime(substr(timestamp, 1, 4) " " substr(timestamp, 6, 2) " " substr(timestamp, 9, 2) " " substr(timestamp, 12, 2) " " substr(timestamp, 15, 2) " " substr(timestamp, 18, 2) " 0 0")); print converted, "--- /var/log/gitlab/gitlab-rails/api_json.log ---", "\""$0"\""}' /var/log/gitlab/gitlab-rails/api_json.log >> /tmp/parsed_consolidated.log
  2. 可选:使用grep过滤特定条目: grep "34.253.159.159" /tmp/parsed_consolidated.log > /tmp/filtered_consolidated.log

  3. 使用sort按日期和时间对所有日志条目进行排序: sort /tmp/parsed_consolidated.log > /tmp/sort_parsed_consolidated.log

  4. 使用uniq删除重复条目: uniq /tmp/sort_parsed_consolidated.log > /tmp/uniq_sort_parsed_consolidated.log

现在,您可以使用以下URL通过日志查看器工具访问已解析和合并的日志文件:

http://10.10.3.201:8111/log?path=%2Ftmp%2Funiq_sort_parsed_consolidated.log

Expected Output after logrotate configuration of sshd