ECS 格式化应用程序日志

编辑

以 Elastic Common Schema (ECS) 格式化的日志无需手动解析,并且配置可以在应用程序之间重复使用。ECS 格式化的日志与 APM 代理结合使用时,允许您将日志与跟踪相关联,以便轻松查看属于特定跟踪的日志。

您可以通过以下方式将日志格式化为 ECS 格式

  • ECS 记录器:用于日志记录库的插件,可将您的日志重新格式化为 ECS 格式。
  • APM 代理 ECS 重格式化:Java、Ruby 和 Python APM 代理会自动将应用程序日志重新格式化为 ECS 格式,无需使用记录器。

ECS 记录器

编辑

ECS 记录器会将您的应用程序日志重新格式化为与 ECS 兼容的 JSON,从而无需手动解析。ECS 记录器需要配置 Filebeat 或 Elastic Agent 来监控和捕获应用程序日志。此外,将 ECS 记录器与框架的 APM 代理配对,可以将日志与跟踪相关联,以便轻松查看属于特定跟踪的日志。

开始使用 ECS 记录器
编辑

有关将 ECS 记录器添加到应用程序的更多信息,请参阅框架指南

APM 代理 ECS 重格式化

编辑

Java、Ruby 和 Python APM 代理可以自动将应用程序日志重新格式化为 ECS 格式,而无需 ECS 记录器或修改应用程序。APM 代理还允许进行日志关联,以便您可以轻松查看属于特定跟踪的日志。

要设置日志 ECS 重格式化

启用日志 ECS 重格式化
编辑

日志 ECS 重格式化由 log_ecs_reformatting 配置选项控制,默认情况下处于禁用状态。有关启用信息,请参阅框架指南

摄取日志
编辑

启用日志 ECS 重格式化后,请使用以下运输工具之一将应用程序日志发送到您的项目

  • Filebeat:一个轻量级数据发送器,可将日志数据发送到您的项目。
  • Elastic Agent:一个用于日志、指标、安全数据和威胁防护的单一代理。借助 Fleet,您可以直接从项目集中管理 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:连接到您的项目
编辑

使用 API 密钥连接到您的项目以设置 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"]
            }
          ]
        }
      }
    }

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

步骤 3:配置 Filebeat
编辑

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

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

从活动日志文件读取行。

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

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

在 Filebeat 安装目录中,通过运行与您的系统相符的命令设置索引模板

filebeat setup -e

在 Filebeat 安装目录中,通过运行与您的系统相符的命令启动 filebeat

sudo service filebeat start

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

另请参阅Filebeat 和 systemd

使用 Elastic Agent 摄取日志
编辑

添加自定义日志集成以使用 Elastic Agent 和 Fleet 摄取和集中管理您的日志

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

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

  1. 在主菜单中查找集成,或使用全局搜索字段
  2. 在搜索栏中键入 custom 并选择自定义日志
  3. 单击页面底部的安装 Elastic Agent,然后按照系统说明安装 Elastic Agent。
  4. 安装 Elastic Agent 后,单击保存并继续以从添加自定义日志集成页面配置集成。
  5. 为您的集成提供有意义的名称和描述。
  6. 添加日志文件路径。例如,/var/log/your-logs.log
  7. 单击高级选项
  8. 处理器文本框中,添加以下 YAML 配置以添加增强数据的处理器。有关更多信息,请参阅处理器

    processors:
      - add_host_metadata: \~
      - add_cloud_metadata: \~
      - add_docker_metadata: \~
      - add_kubernetes_metadata: \~
  9. 自定义配置下,添加以下 YAML 配置以收集数据。

      json:
        overwrite_keys: true 
        add_error_key: true 
        expand_keys: true 
        keys_under_root: true 
      fields_under_root: true 
      fields:
        service.name: your_service_name 
        service.version: your_service_version 
        service.environment: your_service_environment 

    解码的 JSON 对象中的值会覆盖 Elastic Agent 通常在发生冲突时添加的字段(类型、源、偏移量等)。

    如果 JSON 反序列化错误,Elastic Agent 会添加“error.message”和“error.type: json”键。

    Elastic Agent 会递归地取消解码 JSON 中的点分隔键,并将它们扩展为分层对象结构。

    默认情况下,解码的 JSON 会放在输出文档中的“json”键下。设置为 true 时,键会复制到输出文档的顶层。

    设置为 true 时,自定义字段将存储为输出文档中的顶级字段,而不是分组在 fields 子字典下。

    您要从中收集日志的服务的 service.name(必需)、service.version(可选)和 service.environment(可选),用于日志关联。

  10. 为您的代理策略命名。代理策略定义 Elastic Agent 收集的数据。
  11. 保存您的集成以将其添加到您的部署中。

查看日志

编辑

有关在 Kibana 中查看和筛选日志的更多信息,请参阅筛选和聚合日志文档。