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.14.2-darwin-x86_64.tar.gz
tar xzvf filebeat-8.14.2-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 端点。从 帮助菜单 (帮助图标) → 连接详细信息 复制 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 通常在发生冲突时添加的字段(类型、源、偏移量等)。

    Elastic Agent 在发生 JSON 反序列化错误时会添加 "error.message" 和 "error.type: json" 密钥。

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

    默认情况下,解码的 JSON 会放置在输出文档中的 "json" 密钥下。当设置为 true 时,这些密钥会复制到输出文档的顶层。

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

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

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

查看日志编辑

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