正在加载

纯文本应用程序日志

Elastic Stack Serverless

采集和解析来自任何编程语言或框架的纯文本日志(包括现有日志),无需修改您的应用程序或其配置。

纯文本日志需要一些结构化日志不需要的额外设置

  • 要有效地搜索、过滤和聚合,您需要使用采集管道来解析纯文本日志,以提取结构化字段。解析基于日志格式,因此您可能需要为不同的应用程序维护不同的设置。
  • 关联纯文本日志,您需要将 ID 注入到日志消息中,并使用采集管道解析它们。

要采集、解析和关联纯文本日志

  1. 使用 FilebeatElastic Agent 采集纯文本日志,并在使用采集管道进行索引之前解析它们。
  2. 使用 APM Agent 关联纯文本日志。
  3. 在 Discover 中查看日志

使用以下任何一种传送工具将应用程序日志发送到 Elasticsearch

  • Filebeat 一个轻量级的数据传送器,将日志数据发送到 Elasticsearch。
  • Elastic Agent 一个用于日志、指标、安全数据和威胁防御的单一代理。与 Fleet 结合使用,您可以直接从 Kibana 集中管理 Elastic Agent 策略和生命周期。

按照以下步骤使用 Filebeat 采集应用程序日志。

通过运行与您的系统一致的命令,在您要监视的服务器上安装 Filebeat

curl -L -O https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-amd64.deb
sudo dpkg -i filebeat-9.0.0-amd64.deb
curl -L -O https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-x86_64.rpm
sudo rpm -vi filebeat-9.0.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-darwin-x86_64.tar.gz
tar xzvf filebeat-9.0.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-linux-x86_64.tar.gz
tar xzvf filebeat-9.0.0-linux-x86_64.tar.gz
  1. 下载 Filebeat Windows zip 文件

  2. 将 zip 文件的内容提取到 C:\Program Files 中。

  3. 将 *filebeat-9.0.0-windows-x86_64* 目录重命名为 *Filebeat*。

  4. 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标并选择**以管理员身份运行**)。

  5. 从 PowerShell 提示符中,运行以下命令以将 Filebeat 安装为 Windows 服务

    PS > cd 'C:\Program Files\Filebeat'
    PS C:\Program Files\{filebeat}> .\install-service-filebeat.ps1
    

如果您的系统上禁用了脚本执行,您需要为当前会话设置执行策略以允许脚本运行。例如:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1

使用 API 密钥连接到 Elasticsearch 以设置 Filebeat。在 filebeat.yml 文件中设置以下信息

output.elasticsearch:
  hosts: ["your-projects-elasticsearch-endpoint"]
  api_key: "id:api_key"
  1. hosts 设置为您的部署的 Elasticsearch 端点。从**帮助菜单(help icon)→ 连接详细信息**复制 Elasticsearch 端点。例如,https://my-deployment.es.us-central1.gcp.cloud.es.io:443

  2. 从**开发者工具**,运行以下命令以创建一个 API 密钥,该密钥授予 clusterfilebeat-* 索引的 manage 权限,使用

     POST /_security/api_key {
      "name": "filebeat_host001",
      "role_descriptors": {
        "filebeat_writer": {
          "cluster": ["manage"],
          "index": [
            {
              "names": ["filebeat-*"],
              "privileges": ["manage", "create_doc"]
            }
          ]
        }
      }
    }
    

    有关更多信息,请参阅使用 API 密钥授予访问权限

将以下配置添加到您的 filebeat.yaml 文件以开始收集日志数据。

filebeat.inputs:
- type: filestream
  enabled: true
  paths: /path/to/logs.log
  1. 从活动的日志文件中读取行。
  2. 您希望 Filebeat 抓取和获取日志的路径。

Filebeat 附带用于解析、索引和可视化您的数据的预定义资产。要加载这些资产

从 Filebeat 安装目录,通过运行与您的系统一致的命令来设置索引模板

./filebeat setup -e
./filebeat setup -e
PS > .\filebeat.exe setup -e
filebeat setup -e
filebeat setup -e

从 Filebeat 安装目录,通过运行与您的系统一致的命令来启动 filebeat

sudo service filebeat start
注意

如果您使用 init.d 脚本来启动 Filebeat,则无法指定命令行标志(请参阅命令参考)。要指定标志,请在前台启动 Filebeat。

另请参阅Filebeat 和 systemd

sudo service filebeat start
注意

如果您使用 init.d 脚本来启动 Filebeat,则无法指定命令行标志(请参阅命令参考)。要指定标志,请在前台启动 Filebeat。

另请参阅Filebeat 和 systemd

./filebeat -e
./filebeat -e
PS C:\Program Files\filebeat> Start-Service filebeat

默认情况下,Windows 日志文件存储在 C:\ProgramData\filebeat\Logs 中。

使用采集管道将日志内容解析为结构化的、Elastic Common Schema (ECS) 兼容的字段。

创建一个采集管道,该管道定义一个 dissect 处理器,以从您的日志消息中提取结构化的 ECS 字段。在您的项目中,导航到**开发者工具**并使用类似于以下示例的命令

 PUT _ingest/pipeline/filebeat* <1> {
  "description": "Extracts the timestamp log level and host ip",
  "processors": [
    {
      "dissect": {
        "field": "message",
        "pattern": "%{@timestamp} %{log.level} %{host.ip} %{message}"
      }
    }
  ]
}
  1. _ingest/pipeline/filebeat*:管道的名称。更新管道名称以匹配您的数据流的名称。有关更多信息,请参阅数据流命名方案
  2. processors.dissect:添加一个 dissect 处理器,以从您的日志消息中提取结构化的字段。
  3. field:您要从中提取数据的字段,在本例中为 message
  4. pattern:日志数据中元素的模式。该模式因您的日志格式而异。%{@timestamp} 是必需的。%{log.level}%{host.ip}%{{message}} 是常见的 ECS 字段。此模式将匹配以下格式的日志文件:2023-11-07T09:39:01.012Z ERROR 192.168.1.110 Server hardware failure detected.

有关使用采集管道解析您的日志数据的更多信息,请参阅提取结构化字段

创建管道后,在 filebeat.yml 文件中指定 filebeat 的管道

output.elasticsearch:
  hosts: ["your-projects-elasticsearch-endpoint"]
  api_key: "id:api_key"
  pipeline: "your-pipeline"
  1. pipeline 输出和您的管道的名称添加到输出。

按照以下步骤使用 Elastic Agent 和 Fleet 采集并集中管理您的日志。

要将自定义日志集成添加到您的项目

  1. 在主菜单中查找**集成**,或使用全局搜索字段
  2. 在搜索栏中键入 custom 并选择**自定义日志**。
  3. 单击**添加自定义日志**。
  4. 单击页面底部的**安装 Elastic Agent**,然后按照您系统的说明安装 Elastic Agent。
  5. 安装 Elastic Agent 后,从**添加自定义日志集成**页面配置集成。
  6. 为您的集成提供一个有意义的名称和描述。
  7. 添加**日志文件路径**。例如,/var/log/your-logs.log
  8. 为您的代理策略命名。代理策略定义您的 Elastic Agent 收集的数据。
  9. 保存您的集成以将其添加到您的部署。

要聚合或搜索纯文本日志中的信息,请将采集管道与您的集成一起使用,以将日志内容解析为结构化的、Elastic Common Schema (ECS) 兼容的字段。

  1. 从自定义日志集成中,选择**集成策略**选项卡。

  2. 选择您在上一步中创建的集成策略。

  3. 单击**更改默认值 → 高级选项**。

  4. 在**采集管道**下,单击**添加自定义管道**。

  5. 创建一个包含 dissect 处理器 的采集管道,以从您的日志消息中提取结构化字段。

    单击**导入处理器**并添加类似于以下示例的 JSON

    {
      "description": "Extracts the timestamp log level and host ip",
      "processors": [
        {
          "dissect": {
            "field": "message",
            "pattern": "%{@timestamp} %{log.level} %{host.ip} %{message}"
          }
        }
      ]
    }
    
    1. processors.dissect:添加一个 dissect 处理器,以从您的日志消息中提取结构化的字段。
    2. field:您要从中提取数据的字段,在本例中为 message
    3. pattern:日志数据中元素的模式。该模式因您的日志格式而异。%{@timestamp}%{log.level}%{host.ip}%{{message}} 是常见的 ECS 字段。此模式将匹配以下格式的日志文件:2023-11-07T09:39:01.012Z ERROR 192.168.1.110 Server hardware failure detected.
  6. 单击**创建管道**。

  7. 保存并部署您的集成。

将您的应用程序日志与跟踪事件关联以

  • 查看日志的上下文以及用户提供的参数
  • 查看属于特定跟踪的所有日志
  • 在调试应用程序问题时轻松地在日志和跟踪之间移动

日志关联在两个级别上工作

  • 在服务级别:使用 service.nameservice.versionservice.environment 进行注释,使您可以将日志与 APM 服务链接
  • 在跟踪级别:使用 trace.idtransaction.id 进行注释,使您可以将日志与跟踪链接

了解有关在特定于代理的采集指南中关联纯文本日志的信息

要查看 Filebeat 采集的日志,请从主菜单转到**Discover**,并创建一个基于 filebeat-* 索引模式的数据视图。您还可以从**数据视图**菜单中选择**所有日志**,因为它默认包含 filebeat-* 索引模式。有关更多信息,请参阅创建数据视图

© . All rights reserved.