纯文本应用程序日志

编辑

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

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

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

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

  1. 使用 FilebeatElastic Agent 摄取纯文本日志,并在使用摄取管道进行索引之前对其进行解析。
  2. 使用 APM Agent 关联纯文本日志。
  3. 在 Logs Explorer 中查看日志

摄取日志

编辑

使用以下一种传输工具将应用程序日志发送到 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.17.0-darwin-x86_64.tar.gz
tar xzvf filebeat-8.17.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 密钥,该密钥使用 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) 兼容的字段。

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

要查看 Elastic Agent 摄取的日志,请单击 Observability 主菜单下的 日志 下的 Explorer,转到 Logs Explorer。有关在 Kibana 中查看和筛选日志的更多信息,请参阅筛选和聚合日志文档。