ECS 格式的应用程序日志
编辑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
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-linux-x86_64.tar.gz tar xzvf filebeat-8.14.2-linux-x86_64.tar.gz
- 下载 Filebeat Windows zip 文件:https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-windows-x86_64.zip[https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-windows-x86_64.zip]
- 将 zip 文件的内容解压缩到
C:\Program Files
。 - 将
filebeat-{version}-windows-x86_64
目录重命名为{filebeat}
。 - 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标,然后选择 以管理员身份运行)。
-
从 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
。
curl -L -O https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-amd64.deb sudo dpkg -i filebeat-8.14.2-amd64.deb
curl -L -O https\://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.2-x86_64.rpm sudo rpm -vi filebeat-8.14.2-x86_64.rpm
步骤 2:连接到您的项目编辑
使用 API 密钥连接到您的项目以设置 Filebeat。在 filebeat.yml
文件中设置以下信息
output.elasticsearch: hosts: ["your-projects-elasticsearch-endpoint"] api_key: "id:api_key"
- 将
hosts
设置为您的部署的 Elasticsearch 端点。从 帮助菜单 () → 连接详细信息 复制 Elasticsearch 端点。例如,https://my-deployment.es.us-central1.gcp.cloud.es.io:443
。 -
从 开发者工具 中,运行以下命令以创建 API 密钥,该密钥使用以下方法为
cluster
和filebeat-*
索引授予manage
权限POST /_security/api_key { "name": "filebeat_host001", "role_descriptors": { "filebeat_writer": { "cluster": ["manage"], "index": [ { "names": ["filebeat-*"], "privileges": ["manage"] } ] } } }
有关更多信息,请参阅 使用 API 密钥授予访问权限。
步骤 3:配置 Filebeat编辑
将以下配置添加到您的 filebeat.yaml
文件中,以开始收集日志数据。
步骤 4:设置并启动 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 摄取日志编辑
添加自定义日志集成以使用 Elastic Agent 和 Fleet 摄取和集中管理您的日志
将自定义日志集成添加到您的项目编辑
要将自定义日志集成添加到您的项目
- 从您的部署的主页中,单击 添加集成。
- 在搜索栏中键入
custom
,然后选择 自定义日志。 - 单击页面底部的 安装 Elastic Agent,然后按照您的系统的说明安装 Elastic Agent。
- 安装 Elastic Agent 后,单击 保存并继续 以从 添加自定义日志集成 页面配置集成。
- 为您的集成提供一个有意义的名称和描述。
- 添加 日志文件路径。例如,
/var/log/your-logs.log
。 - 单击 高级选项。
-
在 处理器 文本框中,添加以下 YAML 配置以添加增强数据的处理器。有关更多信息,请参阅 处理器。
processors: - add_host_metadata: \~ - add_cloud_metadata: \~ - add_docker_metadata: \~ - add_kubernetes_metadata: \~
-
在 自定义配置 下,添加以下 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
(可选),用于日志关联。 - 为您的代理策略命名。代理策略定义了您的 Elastic Agent 收集的数据。
- 保存您的集成以将其添加到您的部署。
查看日志编辑
有关在 Kibana 中查看和过滤日志的更多信息,请参阅 过滤和聚合日志 文档。