正在加载

ECS 格式化的应用程序日志

Elastic Stack Serverless

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

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

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

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

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

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

设置日志 ECS 重新格式化

  1. 启用 APM 代理重新格式化
  2. 使用 Filebeat 或 Elastic Agent 摄取日志
  3. 在 Discover 中查看日志

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

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

  • Filebeat:一种轻量级的数据传送器,可将日志数据发送到您的项目。
  • Elastic Agent:用于日志、指标、安全数据和威胁防御的单个代理。 使用 Fleet,您可以直接从您的项目集中管理 Elastic Agent 策略和生命周期。

按照以下步骤使用 Filebeat 摄取应用程序日志。

通过运行与您的系统对齐的命令,在要监视的服务器上安装 Filebeat

curl -L -O https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-amd64.deb
sudo dpkg -i filebeat-9.0.0-amd64.deb
curl -L -O https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-x86_64.rpm
sudo rpm -vi filebeat-9.0.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-darwin-x86_64.tar.gz
tar xzvf filebeat-9.0.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.0.0-linux-x86_64.tar.gz
tar xzvf filebeat-9.0.0-linux-x86_64.tar.gz
  1. 下载 Filebeat Windows zip 文件

  2. 将 zip 文件的内容提取到 C:\Program Files 中。

  3. 将 *filebeat-9.0.0-windows-x86_64* 目录重命名为 *Filebeat*

  4. 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标并选择 以管理员身份运行)。

  5. 从 PowerShell 提示符中,运行以下命令以将 Filebeat 安装为 Windows 服务

    PS > cd 'C:\Program Files\{filebeat}'
    PS C:\Program Files\{filebeat}> .\install-service-filebeat.ps1
    

如果您的系统上禁用了脚本执行,则需要设置当前会话的执行策略以允许脚本运行。 例如:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1

使用 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 密钥授予访问权限

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

filebeat.inputs:
- type: filestream
  enabled: true
  paths: /path/to/logs.log
  1. 从活动的日志文件中读取行。
  2. 您希望 Filebeat 抓取和获取日志的路径。

从 Filebeat 安装目录,通过运行与您的系统对齐的命令来设置 索引模板

./filebeat setup -e
./filebeat setup -e
PS > .\filebeat.exe setup -e
filebeat setup -e
filebeat setup -e

从 Filebeat 安装目录,通过运行与您的系统对齐的命令来启动 filebeat

sudo service filebeat start
注意

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

另请参阅 Filebeat 和 systemd

sudo service filebeat start
注意

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

另请参阅 Filebeat 和 systemd

./filebeat -e
./filebeat -e
PS C:\Program Files\filebeat> Start-Service filebeat

默认情况下,Windows 日志文件存储在 C:\ProgramData\filebeat\Logs 中。

添加自定义日志集成以使用 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
    
    1. 来自解码的 JSON 对象的值会覆盖 Elastic Agent 通常添加的字段(类型、源、偏移量等),以防发生冲突。
    2. 如果发生 JSON 取消封送错误,Elastic Agent 将添加“error.message”和“error.type: json”键。
    3. Elastic Agent 将递归地取消解码的 JSON 中的键,并将它们扩展为分层对象结构。
    4. 默认情况下,解码的 JSON 放置在输出文档中的“json”键下。 设置为 true 时,键将复制到输出文档的顶层。
    5. 设置为 true 时,自定义字段将存储为输出文档中的顶级字段,而不是分组在字段子字典下。
    6. 您正在从中收集日志的服务的 service.name(必需)、service.version(可选)和 service.environment(可选),用于日志关联。
  10. 为您的代理策略命名。 代理策略定义您的 Elastic Agent 收集的数据。

  11. 保存您的集成以将其添加到您的部署。

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

© . All rights reserved.