纯文本应用程序日志

编辑

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

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

  • 为了有效地搜索、过滤和聚合,您需要使用摄取管道解析纯文本日志以提取结构化字段。解析基于日志格式,因此您可能需要为不同的应用程序维护不同的设置。
  • 关联纯文本日志,您需要将 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.16.0-darwin-x86_64.tar.gz
tar xzvf filebeat-8.16.0-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 密钥,该密钥授予clusterfilebeat-*索引的manage权限,使用

    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)兼容的字段。

创建一个摄取管道,该管道定义一个dissect 处理器,以从日志消息中提取结构化的 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:添加一个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. 创建一个使用dissect 处理器从日志消息中提取结构化字段的摄取管道。

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

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

    processors.dissect:添加一个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 中查看和过滤日志的更多信息,请参阅过滤和聚合日志文档。