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.17.0-darwin-x86_64.tar.gz
tar xzvf filebeat-8.17.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:将自定义日志集成添加到您的项目
编辑

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

  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 时,自定义字段将存储为输出文档中的顶层字段,而不是分组在字段子词典下。

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

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

查看日志

编辑

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