纯文本应用程序日志编辑

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

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

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

要摄取、解析和关联纯文本日志

  1. 使用FilebeatElastic Agent摄取纯文本日志,并在使用摄取管道索引之前解析它们。
  2. 使用 APM 代理关联纯文本日志。
  3. 在日志资源管理器中查看日志

摄取日志编辑

使用以下运输工具之一将应用程序日志发送到 Elasticsearch

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

按照以下步骤使用 Filebeat 摄取应用程序日志。

步骤 1:安装 Filebeat编辑

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

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-darwin-x86_64.tar.gz
tar xzvf filebeat-8.14.2-darwin-x86_64.tar.gz
步骤 2:连接到 Elasticsearch编辑

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

output.elasticsearch:
  hosts: ["your-projects-elasticsearch-endpoint"]
  api_key: "id:api_key"
  1. hosts 设置为您的部署的 Elasticsearch 端点。从 帮助菜单 (帮助图标) → 连接详细信息 复制 Elasticsearch 端点。例如,https://my-deployment.es.us-central1.gcp.cloud.es.io:443
  2. 开发者工具 中,运行以下命令以创建 API 密钥,该密钥使用以下命令授予 manage 权限,用于 clusterfilebeat-* 索引

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

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

步骤 3:配置 Filebeat编辑

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

filebeat.inputs:
- type: filestream  
  enabled: true
  paths: /path/to/logs.log  

从活动日志文件读取行。

您希望 Filebeat 爬取并从中获取日志的路径。

步骤 4:设置和启动 Filebeat编辑

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

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

filebeat setup -e

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

sudo service filebeat start

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

另请参阅Filebeat 和 systemd

步骤 5:使用摄取管道解析日志编辑

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

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

PUT _ingest/pipeline/filebeat* 
{
  "description": "Extracts the timestamp log level and host ip",
  "processors": [
    {
      "dissect": { 
        "field": "message", 
        "pattern": "%{@timestamp} %{log.level} %{host.ip} %{message}" 
      }
    }
  ]
}

_ingest/pipeline/filebeat*:管道的名称。更新管道名称以匹配您的数据流的名称。有关更多信息,请参阅数据流命名方案

processors.dissect:添加一个解析处理器,以从您的日志消息中提取结构化字段。

field:您要从中提取数据的字段,在本例中为 message

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" 

pipeline 输出和您的管道的名称添加到输出中。

使用 Elastic Agent 摄取日志编辑

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

步骤 1:将自定义日志集成添加到您的项目编辑

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

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

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

  1. 从自定义日志集成中,选择 集成策略 选项卡。
  2. 选择您在上一步中创建的集成策略。
  3. 单击 更改默认值 → 高级选项
  4. 摄取管道 下,单击 添加自定义管道
  5. 使用解析处理器 创建一个摄取管道,以从您的日志消息中提取结构化字段。

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

    {
      "description": "Extracts the timestamp log level and host ip",
      "processors": [
        {
          "dissect": { 
            "field": "message", 
            "pattern": "%{@timestamp} %{log.level} %{host.ip} %{message}" 
          }
        }
      ]
    }

    processors.dissect:添加一个解析处理器,以从您的日志消息中提取结构化字段。

    field:您要从中提取数据的字段,在本例中为 message

    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 摄取的日志,请从主菜单中转到 发现,并基于 filebeat-* 索引模式创建数据视图。有关更多信息,请参阅 创建数据视图

要查看由 Elastic Agent 摄取的日志,请单击可观察性主菜单中的 日志 下的 资源管理器,转到日志资源管理器。有关在 Kibana 中查看和过滤日志的更多信息,请参阅 过滤和聚合日志 文档。