日志转发 log-forwarding

NOTE
双向TLS (mTLS)身份验证测试版适用于Splunk、Elasticsearch/OpenSearch和HTTPS目标,还适用于AEM日志(包括Apache/Dispatcher)和CDN日志。 若要加入,请发送电子邮件至aemcs-logforwarding-beta@adobe.com,其中包含您的项目ID和环境ID。 请参阅双向TLS (mTLS)身份验证。
NOTE
现在,日志转发是以自助方式配置的,不同于传统方法,后者需要提交Adobe支持票证。 如果您的日志转发是由Adobe设置的,请参阅正在迁移部分。
NOTE
AEM as a Cloud Service还支持通过OpenTelemetry (OTLP)发送日志,作为OpenTelemetry (有限可用性)的一部分。 如果在同一目标处启用这两个选项,则会在该处接收重复的日志消息 — 有关详细信息,请参阅该页。

如果客户拥有带日志记录供应商的许可证或托管日志记录产品,则可以将AEM日志(包括Apache/Dispatcher)和CDN日志转发到关联的日志记录目标。 AEM as a Cloud Service支持以下日志记录目标:

日志技术
AEM
Dispatcher
CDN
mTLS
Amazon S3
是
是
Beta [1]
否
Azure Blob存储
是
是
是
否
Datacog
是
是
是
否
Dynatrace
是
是
Beta [1]
否
Elasticsearch
OpenSearch
是
是
是
Beta
HTTPS
是
是
是
Beta
New Relic
是
是
Beta [1]
否
Splunk
是
是
是
Beta
Sumo逻辑
是
是
是
否

[1] CDN日志转发到Amazon S3、Dynatrace和New Relic的功能处于测试阶段。 若要请求访问,请使用您的项目ID向aemcs-logforwarding-beta@adobe.com发送电子邮件。 启用访问后,您还可以为具有cdn.enabled: true的每个目标打开CDN日志。 查看Amazon S3、Dynatrace和New Relic (测试版)的CDN日志。

NOTE
mTLS列中标记为​ Beta ​的日志技术支持AEM、Dispatcher和CDN日志的客户端证书身份验证(双向TLS)。 mTLS为测试版;若要请求访问,请发送电子邮件至aemcs-logforwarding-beta@adobe.com,其中包含您的项目ID和环境ID。 请参阅双向TLS (mTLS)身份验证。

日志转发以自助方式配置,方法是在Git中声明配置,并且可以通过Cloud Manager配置管道部署到开发、暂存和生产环境类型。 可以使用调用命令行工具将配置文件部署到快速开发环境(RDE)。

AEM和Apache/Dispatcher日志可以选择通过AEM的高级网络基础架构(如专用出口IP)进行路由。 CDN日志始终直接从CDN发送,不使用高级联网。 请参阅传输和高级网络。

本文的结构 how-organized

本文按以下方式组织:

  • 设置 — 适用于所有日志记录目标
  • 传输和高级网络 — 在创建日志记录配置之前,应考虑网络设置
  • 双方TLS (mTLS)身份验证(测试版) — 使用客户端证书向Splunk、Elasticsearch/OpenSearch和HTTPS目标进行身份验证
  • 记录目标配置 — 每个目标的格式略有不同
  • Amazon S3、Dynatrace和New Relic的CDN日志(测试版) — 如何请求访问这些目标的CDN日志并启用它们
  • 日志条目格式 — 有关日志条目格式的信息
  • 从旧版日志转发迁移 — 如何从Adobe之前设置的日志转发迁移到自助方法

设置 setup

  1. 创建名为 logForwarding.yaml 的文件。 它应包含元数据,如配置管道文章中所述(kind​应设置为LogForwarding,版本应设置为“1”),其配置类似于以下内容(我们使用Splunk作为示例)。

    code language-yaml
    kind: "LogForwarding"
    version: "1"
    data:
      splunk:
        default:
          enabled: true
          host: "splunk-host.example.com"
          token: "${{SPLUNK_TOKEN}}"
          index: "AEMaaCS"
    
  2. 将文件放置在名为​ config ​或类似的顶级文件夹下,如使用配置管道中所述。

  3. 对于RDE(使用命令行工具)以外的环境类型,在Cloud Manager中创建目标部署配置管道,如此部分所引用;请注意,全栈管道和Web层管道不部署配置文件。

  4. 部署配置。

配置中的令牌(如${{SPLUNK_TOKEN}})表示不应存储在Git中的密钥。 请将其声明为Cloud Manager 机密环境变量。 确保选择​ 全部 ​作为“已应用服务”字段的下拉列表值,以便可以将日志转发到作者、发布和预览层。

通过在​ default ​块后添加额外的​ cdn ​和/或​ aem ​块,可以设置CDN日志和AEM日志(包括Apache/Dispatcher)之间的不同值,其中属性可以覆盖​ default ​块中定义的属性;只需要启用的属性。 一个可能的用例可能是对CDN日志使用不同的Splunk索引,如下面的示例所示。

   kind: "LogForwarding"
   version: "1"
   data:
     splunk:
       default:
         enabled: true
         host: "splunk-host.example.com"
         token: "${{SPLUNK_TOKEN}}"
         index: "AEMaaCS"
       cdn:
         enabled: true
         token: "${{SPLUNK_TOKEN_CDN}}"
         index: "AEMaaCS_CDN"
NOTE
对于Amazon S3、Dynatrace和New Relic,CDN日志为测试版。 仅当您的程序有权访问测试版并且cdn块设置enabled: true时,才会转发它们。 查看Amazon S3、Dynatrace和New Relic (测试版)的CDN日志。

另一种方法是禁用CDN日志或AEM日志(包括Apache/Dispatcher)的转发。 例如,要仅转发CDN日志,可以配置以下内容:

   kind: "LogForwarding"
   version: "1"
   data:
     splunk:
       default:
         enabled: true
         host: "splunk-host.example.com"
         token: "${{SPLUNK_TOKEN}}"
         index: "AEMaaCS"
       aem:
         enabled: false

传输和高级网络 transport-advancednetworking

有些组织选择限制日志记录目标可以接收哪些流量,而有些组织则可能需要使用HTTPS (443)以外的端口。 如果是,则在部署日志转发配置之前,需要配置高级网络。

根据您是否使用端口443以及是否需要从固定IP地址显示日志,使用下表查看高级联网和日志配置的要求。 该表适用于AEM日志(包括Apache/Dispatcher)。 有关CDN日志,请参阅CDN日志和IP允许列表。

目标端口
需要从固定IP显示日志?
需要高级联网
需要LogForwarding.yaml端口定义
HTTPS (443)
否
否
否
是
是,专用出口
否
非标准端口(如8088)
否
是,灵活出口
是
是
是,专用出口
是
NOTE
是否从单个IP地址显示日志取决于您选择的高级联网配置。 必须使用专用出口实现此目的。
高级网络配置是两步流程,需要在程序和环境级别启用。
根据下面的说明,不能将日志转发与高级网络VPN连接一起使用。

对于AEM日志(包括Apache/Dispatcher),如果您已配置高级网络,则可以使用aem.advancedNetworking属性从专用出口IP地址转发它们。

以下示例说明如何使用高级联网在标准HTTPS端口上配置日志记录。

kind: "LogForwarding"
version: "1"
data:
  splunk:
    default:
      enabled: true
      host: "splunk-host.example.com"
      port: 443
      token: "${{SPLUNK_TOKEN}}"
      index: "aemaacs"
    aem:
      advancedNetworking: true

CDN日志和IP允许列表 cdn-ip-allowlist

CDN日志直接从CDN (Fastly)发送,而不是从AEM as a Cloud Service发送。 这适用于每个日志记录目标:

  • CDN日志从Fastly的共享IP地址范围发送,发布在https://api.fastly.com/public-ip-list。 绝不会从您的专用出口IP地址发送它们。
  • advancedNetworking属性仅适用于AEM日志(包括Apache/Dispatcher)。 它对CDN日志没有影响。 如果设置了advancedNetworking并为同一目标启用了CDN日志转发,则将部署配置并警告作为提醒。
  • 如果您的日志记录目标仅接受来自特定IP地址的流量,则除了AEM日志的专用出口IP地址之外,还向其允许列表添加​ 所有 ​的Fastly已发布的IPv4和IPv6范围。 仅允许专用出口IP地址的目标不会接收CDN日志。
  • Fastly的IP地址范围会随着时间的推移而改变,有时会在几周内改变。 定期查看已发布的列表并使允许列表保持最新。
  • Amazon S3对CDN日志还有其他注意事项。 查看Amazon S3 CDN日志。

如果共享IP地址列表太大而无法列入允许列表,请考虑将CDN日志发送到https服务器或(非Adobe)Azure Blob存储区,其中可以写入逻辑以将已知IP的日志发送到其最终目标。

NOTE
CDN日志不可能显示自AEM日志显示来源的IP地址,这是因为日志是直接从Fastly而不是AEM Cloud Service发送的。
因此,不能将日志转发与高级网络VPN配置一起使用。

双向TLS (mTLS)身份验证(测试版) mtls

NOTE
用于日志转发的mTLS是测试版功能。 若要使用它,请发送电子邮件至aemcs-logforwarding-beta@adobe.com,其中包含您的项目ID和环境ID。

Splunk、Elasticsearch/OpenSearch和HTTPS目标支持双向TLS (mTLS)。 通过使用mTLS,AEM as a Cloud Service在连接到您的日志记录目标时提供客户端证书,以便目标可以验证日志是否来自您的环境。 mTLS适用于AEM日志(包括Apache/Dispatcher)和CDN日志。

mTLS可与目标的现有身份验证配合使用。 保留目标的现有身份验证属性,如token (Splunk)或user和password (Elasticsearch/OpenSearch)。 对于转发CDN日志的HTTPS目标,authHeaderName和authHeaderValue是必需的。

配置 mtls-configuration

将mtls块与目标的其他属性一起添加:

  • cert — 必需。 客户端证书,采用PEM格式。 它可以后跟中间CA证书,客户端证书优先。
  • key — 必需。 客户端证书的私钥(PEM格式)。 RSA和EC密钥受支持、未加密或加密。 请参阅支持的密钥格式。
  • ca — 可选。 CA证书(PEM格式),用于验证目标的服务器证书。 它可以包含多个证书,如证书链。 当服务器证书由专用CA颁发时设置它。
  • keyPasswd — 可选。 私钥的密码。 仅在密钥已加密时设置此项。

以下示例使用mTLS将AEM和CDN日志转发给Splunk:

kind: "LogForwarding"
version: "1"
data:
  splunk:
    default:
      enabled: true
      host: "splunk-host.example.com"
      token: "${{SPLUNK_TOKEN}}"
      index: "aemaacs"
      mtls:
        cert: "${{SPLUNK_MTLS_CERT}}"
        key: "${{SPLUNK_MTLS_KEY}}"
        ca: "${{SPLUNK_MTLS_CA}}"

以下规则适用:

  • cert和key必须一起提供。 仅包含ca或keyPasswd的mtls块被拒绝。
  • 每个mtls属性都必须是机密引用,如${{SPLUNK_MTLS_CERT}},不能是其他内容。 直接放在文件中的证书或密钥文本被拒绝。
  • 将每个密钥声明为Cloud Manager 密钥环境变量,如设置中所述。 粘贴完整的PEM文本,包括-----BEGIN和-----END行。 如果将值粘贴到Cloud Manager中时删除了换行符,则会自动恢复这些换行符。 要提供多个证书,请将它们逐个粘贴到同一密码中。
  • 部署时将检查客户端证书。 它必须是有效的PEM并在其有效期内。 如果cert包含多个证书,则客户端证书必须放在首位,并且证书必须构成有效链。 如果检查失败,则部署失败。

支持的关键格式 mtls-key-formats

键的PEM文本的第一行显示其格式:

密钥格式
PEM文本的第一行
RSA,PKCS#1
-----BEGIN RSA PRIVATE KEY-----
EC, SEC1
-----BEGIN EC PRIVATE KEY-----
PKCS#8(RSA或EC)
-----BEGIN PRIVATE KEY-----
加密的PKCS#8(RSA或EC)
-----BEGIN ENCRYPTED PRIVATE KEY-----
加密的较旧格式(RSA或EC),带AES或三重DES (DES-EDE3-CBC)
-----BEGIN RSA PRIVATE KEY-----或-----BEGIN EC PRIVATE KEY-----,后跟Proc-Type: 4,ENCRYPTED和DEK-Info行

对于加密密钥,也将keyPasswd设置为其密码。

建议对加密密钥使用加密的PKCS#8。 要转换旧格式的密钥,请使用以下命令,该命令要求输入当前密码,然后输入新密钥的密码:

openssl pkcs8 -topk8 -v2 aes-256-cbc -in client.key -out client-pkcs8.key

将client-pkcs8.key的内容存储在key引用的密码中,并将其密码存储在keyPasswd引用的密码中。

CDN日志 mtls-cdn

与其他属性一样,default下的mtls块同时适用于AEM日志和CDN日志。 若要对CDN日志使用其他证书,请在cdn块中设置mtls属性。 若要仅将mTLS用于AEM日志或仅用于CDN日志,请将mtls块放在aem或cdn块中,而不是default。

在部署可启用CDN日志转发到目标的配置后,可能需要几分钟才能到达第一个CDN日志。 对于HTTPS目标,只有在服务器完成HTTPS中描述的一次性质询后,CDN日志投放才会启动。 质询请求随同一客户端证书一起发送,因此您的服务器也必须接受质询路径上的该证书。

证书轮换和到期 mtls-rotation

要轮换证书,请更新包含证书的Cloud Manager机密环境变量(如果密钥已更改,则更新密钥),然后重新运行配置管道。 如果日志转发配置文件本身未更改,则也需对其进行更改,以便再次应用配置。 例如,将新值存储在新的机密环境变量中,并在mtls块中引用这些名称。

您还可能在客户端证书过期前21天收到主动操作中心通知。 自行跟踪证书到期日期,而不是依赖此通知。

记录目标配置 logging-destinations

下面列出了受支持的日志记录目标的配置以及任何特定注意事项。

Amazon S3 amazons3

Amazon S3的CDN日志处于测试阶段。 若要请求访问,请使用您的项目ID向aemcs-logforwarding-beta@adobe.com发送电子邮件。 请参阅Amazon S3、Dynatrace和New Relic (测试版)的CDN日志以了解如何启用它们,并参阅Amazon S3 CDN日志以了解文件布局和注意事项。

NOTE
在收集100 MB的日志时或10分钟后(以先发生者为准),针对每种日志文件类型,将AEM日志(包括Apache/Dispatcher)上传到S3。 这可能会导致切换功能后将日志写入S3的初始延迟。 有关此行为的详细信息。 CDN日志的编写方式不同;请参阅Amazon S3 CDN日志。
kind: "LogForwarding"
version: "1"
data:
  awsS3:
    default:
      enabled: true
      region: "your-bucket-region"
      bucket: "your-bucket-name"
      accessKey: "${{AWS_S3_ACCESS_KEY}}"
      secretAccessKey: "${{AWS_S3_SECRET_ACCESS_KEY}}"

要转发AEM日志和CDN日志(测试版中的CDN日志),请执行以下操作:

kind: "LogForwarding"
version: "1"
data:
  awsS3:
    default:
      enabled: true
      region: "us-east-1"
      bucket: "your-bucket-name"
      accessKey: "${{AWS_S3_ACCESS_KEY}}"
      secretAccessKey: "${{AWS_S3_SECRET_ACCESS_KEY}}"
    cdn:
      enabled: true

要仅转发CDN日志(测试版),请执行以下操作:

kind: "LogForwarding"
version: "1"
data:
  awsS3:
    default:
      enabled: true
      region: "us-east-1"
      bucket: "your-bucket-name"
      accessKey: "${{AWS_S3_ACCESS_KEY}}"
      secretAccessKey: "${{AWS_S3_SECRET_ACCESS_KEY}}"
    aem:
      enabled: false
    cdn:
      enabled: true

要使用S3日志转发器,您需要为AWS IAM用户预配置用于访问S3存储段的适当策略。 有关如何创建IAM用户凭据的信息,请参阅AWS IAM用户文档。

IAM策略应允许用户使用s3:PutObject。 要转发CDN日志(测试版),还允许s3:AbortMultipartUpload。 不需要其他权限:用户不需要读取或列出存储段。 例如:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "s3:AbortMultipartUpload"
        ],
        "Resource": "arn:aws:s3:::your-bucket-name/*"
    }]
}

如果存储段仅接收CDN日志,则您可以将Resource限制为arn:aws:s3:::your-bucket-name/aemcdn/*。

有关如何实施的更多信息,请参阅AWS存储段策略文档。

Amazon S3 CDN日志(测试版) amazons3-cdn

Amazon S3的CDN日志处于测试阶段。 他们需要访问您的项目和cdn.enabled: true。 查看Amazon S3、Dynatrace和New Relic (测试版)的CDN日志。

CDN日志写入存储段的aemcdn/文件夹下。 文件名格式为YYYY-MM-DDThh:mm:ss.000-<uniqueid>.log.gz。 例如:

aemcdn/
   2026-03-04T10:00:00.000-WnFWYN9BpOUs2aOVn4ee.log.gz
   2026-03-04T10:00:00.000-0pX8ub2yQcAmLs7rT1kd.log.gz
   2026-03-04T10:05:00.000-h3JkVv9ZqN2wE5sXyR0a.log.gz
  • 文件通过gzip压缩。 每个文件包含多个日志条目,每行一个JSON对象。 这些条目的属性与写入Azure Blob存储的CDN日志的属性相同。 日志条目格式在AEM as a Cloud Service日志记录下描述,每个条目还包括以下日志条目格式部分中提到的其他属性。
  • 每5分钟写入一组新文件。 CDN拥有多台服务器,每个处理流量的服务器都会写入自己的文件,因此每5分钟就要写入许多文件,即使只有很少的流量。 例如,低流量测试环境每5分钟生成约50个文件。
  • 日志条目通常在请求后1到6分钟显示在存储桶中。
  • 文件名中的时间不是精确的时间窗口,文件重叠。 例如,名为…T16:00:00.000-….log.gz的文件可以保存从15:55到16:04的条目。 使用每个条目的timestamp属性查找请求何时发生。
  • 文件在写入后不会发生更改。

客户负责处理和管理这些文件,例如,使用前缀为aemcdn/的S3生命周期规则。

CDN日志的注意事项(测试版):

  • 身份验证使用IAM用户的访问密钥。 不支持IAM角色。

  • IAM用户只需要s3:PutObject和s3:AbortMultipartUpload。 它不需要权限即可读取或列出存储桶。

  • 支持使用Amazon S3托管密钥(SSE-S3)进行默认存储段加密,然后静态加密CDN日志文件。

  • 仅支持标准AWS商业区域中的存储桶。 不支持AWS GovCloud(美国)和AWS中国地区。 region属性必须是存储段的区域。

  • 拒绝的上传未重试。 如果存储段策略或IAM用户的权限拒绝上传CDN日志,则该上传中的日志条目会在没有警告的情况下丢失。 这与AEM日志不同,日志会重试失败的上传。 请确保对存储段策略或IAM用户所做的更改不会阻止从CDN上传。

  • 我们建议使用在存储桶上仅允许s3:PutObject和s3:AbortMultipartUpload的IAM用户(或者,如果存储桶仅接收CDN日志,则仅允许使用aemcdn/前缀),并且存储桶策略不包含IP地址条件。

  • 如果您的存储段策略按IP地址限制访问,请将Fastly的所有已发布IPv4和IPv6范围添加到aws:SourceIp条件中,并使它们保持最新。 查看CDN日志和IP允许列表。

  • 仅接受通过VPC端点发送的请求(例如,具有aws:SourceVpce条件的存储段策略)的存储段无法接收CDN日志。

  • 要检测丢失的CDN日志,请考虑:

    • AWS CloudTrail数据事件或S3服务器访问日志。 它们记录来自Fastly的IP地址的PutObject请求(HTTP状态403)被拒绝。
    • 当没有新对象在aemcdn/下到达的时间比您预期的时间更长时触发的警报。 文件每5分钟写入一次。

Azure Blob存储 azureblob

kind: "LogForwarding"
version: "1"
data:
  azureBlob:
    default:
      enabled: true
      storageAccountName: "example_acc"
      container: "aem_logs"
      sasToken: "${{AZURE_BLOB_SAS_TOKEN}}

SAS令牌应该用于身份验证。 它应该从共享访问签名页面而不是共享访问令牌页面创建,并且应该使用以下设置进行配置:

  • 允许的服务:必须选择Blob。
  • 允许的资源:必须选择对象和容器。
  • 允许的权限:必须选择“读取”、“写入”、“添加”、“列表”、“创建”。
  • 有效的开始和到期日期/时间。

以下是SAS令牌配置示例屏幕截图:

Azure Blob SAS令牌配置

如果日志在之前正常工作后停止传递,请检查您配置的SAS令牌是否仍然有效,因为它可能已过期。

Azure Blob Storage CDN日志 azureblob-cdn

每个全局分布式日志服务器每隔几秒会在aemcdn文件夹下生成一个新文件。 创建后,该文件将不再附加到。 文件名格式为YYYY-MM-DDThhss.sss-uniqueid.log。 例如,2024-03-04T10:00:00.000-WnFWYN9BpOUs2aOVn4ee.log。

例如,在某个时间点:

aemcdn/
   2024-03-04T10:00:00.000-abc.log
   2024-03-04T10:00:00.000-def.log

30秒后:

aemcdn/
   2024-03-04T10:00:00.000-abc.log
   2024-03-04T10:00:00.000-def.log
   2024-03-04T10:00:30.000-ghi.log
   2024-03-04T10:00:30.000-jkl.log
   2024-03-04T10:00:30.000-mno.log

每个文件都包含多个json日志条目,每个条目位于一行中。 日志条目格式在AEM as a Cloud Service日志记录下描述,每个日志条目还包括以下日志条目格式部分中提到的其他属性。

Azure Blob Storage AEM日志 azureblob-aem

AEM日志(包括Apache/Dispatcher)显示在具有以下命名约定的文件夹下方:

  • aemaccess
  • aemerror
  • aemrequest
  • aemdispatcher
  • aemhttpdaccess
  • aemhttpderror

在每个文件夹下,将创建一个文件并将其附加到。 客户负责处理和管理此文件,以免它变得太大。

请参阅AEM as a Cloud Service的日志记录下的日志条目格式。 日志条目还将包括以下日志条目格式部分中提到的其他属性。

Datadog datadog

kind: "LogForwarding"
version: "1"
data:
  datadog:
    default:
      enabled: true
      host: "http-intake.logs.datadoghq.eu"
      token: "${{DATADOG_API_KEY}}"
      tags:
         tag1: value1
         tag2: value2

注意事项

  • 创建API密钥,而不与特定的云提供商进行任何集成。
  • 标记属性是可选的
  • 对于AEM日志,Datadog源标记设置为aemaccess、aemerror、aemrequest、aemdispatcher、aemhttpdaccess或aemhttpderror之一
  • 对于CDN日志,Datadog源标记设置为aemcdn
  • Datadog服务标记设置为adobeaemcloud,但您可以在标记部分中覆盖它
  • 如果您的摄取管道使用Datadog标记确定转发日志的适当索引,请验证这些标记在日志转发YAML文件中是否正确配置。 如果管道依赖于缺少标记,则可能会阻止成功的日志摄取。

Elasticsearch和OpenSearch elastic

kind: "LogForwarding"
version: "1"
data:
  elasticsearch:
    default:
      enabled: true
      host: "example.com"
      user: "${{ELASTICSEARCH_USER}}"
      password: "${{ELASTICSEARCH_PASSWORD}}"
      pipeline: "ingest pipeline name"

注意事项

  • 默认情况下,端口为443。 可以选择使用名为port的属性覆盖它
  • 对于凭据,请确保使用部署凭据,而不是帐户凭据。 这些是在屏幕中生成的凭据,可能与以下图像类似:

弹性部署凭据

  • 对于AEM日志,index设置为aemaccess、aemerror、aemrequest、aemdispatcher、aemhttpdaccess或aemhttpderror之一
  • 可选的pipeline属性应设置为Elasticsearch或OpenSearch摄取管道的名称,可以将其配置为将日志条目路由到相应的索引。 管道的处理器类型必须设置为​script,脚本语言应设置为​无痛苦。 以下是将日志条目路由到索引(如aemaccess_dev_26_06_2024)的脚本片段示例:
def envType = ctx.aem_env_type != null ? ctx.aem_env_type : 'unknown';
def sourceType = ctx._index;
def date = new SimpleDateFormat('dd_MM_yyyy').format(new Date());
ctx._index = sourceType + "_" + envType + "_" + date;

HTTPS https

kind: "LogForwarding"
version: "1"
data:
  https:
    default:
      enabled: true
      url: "https://example.com/aem_logs/aem"
      authHeaderName: "X-AEMaaCS-Log-Forwarding-Token"
      authHeaderValue: "${{HTTPS_LOG_FORWARDING_TOKEN}}"

注意事项

  • URL字符串必须包含​https://,否则验证将失败。
  • URL可能包含端口。 例如,https://example.com:8443/aem_logs/aem。 如果url字符串中未包含任何端口,则采用端口443(默认的HTTPS端口)。

HTTPS CDN日志 https-cdn

Web请求(POST)将使用json有效负载连续发送,该有效负载是一个日志条目数组,日志条目格式在AEM as a Cloud Service日志记录下描述。 下面的日志条目格式部分中提及了其他属性。

还有一个名为sourcetype的属性,该属性设置为值aemcdn。

NOTE
在发送第一个CDN日志条目之前,您的HTTP服务器必须成功完成一次性质询:发送到路径/.well-known/fastly/logging/challenge的请求在正文中必须以星号*和200状态代码响应。

HTTPS AEM日志 https-aem

对于AEM日志(包括apache/dispacher),将连续发送Web请求(POST),JSON有效负载为日志条目数组,其日志条目格式多种多样,如AEM as a Cloud Service日志记录中所述。 下面的日志条目格式部分中提及了其他属性。

还有一个名为Source-Type的属性,该属性设置为以下值之一:

  • aemaccess
  • aemerror
  • aemrequest
  • aemdispatcher
  • aemhttpdaccess
  • aemhttpderror

New Relic日志API newrelic-https

日志转发到New Relic可利用New Relic HTTPS日志API进行摄取。 New Relic的CDN日志处于测试阶段。 若要请求访问,请使用您的项目ID向aemcs-logforwarding-beta@adobe.com发送电子邮件。 请参阅Amazon S3、Dynatrace和New Relic (测试版)的CDN日志以了解如何启用它们。

  kind: "LogForwarding"
  version: "1"
  data:
    newRelic:
      default:
        enabled: true
        uri: "https://log-api.newrelic.com/log/v1"
        apiKey: "${{NR_API_KEY}}"

要转发AEM日志和CDN日志(测试版中的CDN日志),请执行以下操作:

  kind: "LogForwarding"
  version: "1"
  data:
    newRelic:
      default:
        enabled: true
        uri: "https://log-api.newrelic.com/log/v1"
        apiKey: "${{NR_API_KEY}}"
      cdn:
        enabled: true

要仅转发CDN日志(测试版),请执行以下操作:

  kind: "LogForwarding"
  version: "1"
  data:
    newRelic:
      default:
        enabled: true
        uri: "https://log-api.newrelic.com/log/v1"
        apiKey: "${{NR_API_KEY}}"
      aem:
        enabled: false
      cdn:
        enabled: true
NOTE
日志转发到New Relic仅适用于客户拥有的New Relic帐户。

注意事项

  • New Relic根据您的New Relic帐户配置位置提供特定于区域的端点。 将uri设置为您帐户所在地区的日志API终结点,例如https://log-api.newrelic.com/log/v1美国地区的帐户。 有关详细信息,请参阅New Relic文档。
  • 对于apiKey,使用接收日志的帐户中的New Relic许可证密钥(密钥类型​INGEST - LICENSE)。 AEM日志和CDN日志也使用相同的密钥。
  • 对于AEM日志,source属性设置为aemaccess、aemerror、aemrequest、aemdispatcher、aemhttpdaccess或aemhttpderror之一。 对于CDN日志(测试版),source设置为aemcdn,并且每个记录包含所有CDN日志属性。 例如,要查询CDN日志: FROM Log SELECT * WHERE source = 'aemcdn' SINCE 1 hour ago。
  • 在发送到New Relic的CDN日志条目(测试版)中,timestamp是一个数字:自Unix纪元以来的请求开始时间(以毫秒为单位)。 其他日志记录目标以ISO 8601字符串形式接收timestamp。
  • CDN日志(测试版)可能会为您的New Relic引入添加大量流量。 查看Amazon S3、Dynatrace和New Relic (测试版)的CDN日志。

Dynatrace日志API dynatrace-https

将日志转发到Dynatrace会利用Dynatrace HTTPS API进行摄取。 Dynatrace的CDN日志处于测试阶段。 若要请求访问,请使用您的项目ID向aemcs-logforwarding-beta@adobe.com发送电子邮件。 请参阅Amazon S3、Dynatrace和New Relic (测试版)的CDN日志以了解如何启用它们。

令牌需要​引入日志 (logs.ingest)作用域。 相同的令牌用于AEM日志和CDN日志。

  kind: "LogForwarding"
  version: "1"
  data:
    dynatrace:
      default:
        enabled: true
        environmentId: "${{DYNATRACE_ENVID}}"
        token: "${{DYNATRACE_TOKEN}}"

要转发AEM日志和CDN日志(测试版中的CDN日志),请执行以下操作:

  kind: "LogForwarding"
  version: "1"
  data:
    dynatrace:
      default:
        enabled: true
        environmentId: "${{DYNATRACE_ENVID}}"
        token: "${{DYNATRACE_TOKEN}}"
      cdn:
        enabled: true

要仅转发CDN日志(测试版),请执行以下操作:

  kind: "LogForwarding"
  version: "1"
  data:
    dynatrace:
      default:
        enabled: true
        environmentId: "${{DYNATRACE_ENVID}}"
        token: "${{DYNATRACE_TOKEN}}"
      aem:
        enabled: false
      cdn:
        enabled: true

注意事项

  • 仅支持Dynatrace SaaS环境。 environmentId是环境URL https://<environmentId>.live.dynatrace.com中的ID。 仅使用ID,而不使用URL或主机名:对于CDN日志,它不能包含点。 不支持Dynatrace Managed和ActiveGate端点。
  • 每个日志条目都包含一个source属性。 对于AEM日志,它是aemaccess、aemerror、aemrequest、aemdispatcher、aemhttpdaccess或aemhttpderror之一。 对于CDN日志(测试版),它是aemcdn。
  • CDN日志(测试版)可能会为您的Dynatrace引入添加大量流量。 查看Amazon S3、Dynatrace和New Relic (测试版)的CDN日志。

在Dynatrace(测试版)中查找CDN日志 dynatrace-cdn

Dynatrace将每个CDN日志条目作为JSON文本存储在日志记录的content中,并将该条目的timestamp用作记录时间。 CDN日志属性(如source、url和status)不是单独的日志属性。 这同样适用于转发到Dynatrace的AEM日志。 因此:

  • 传统日志查看器简单模式下的筛选器不适用于这些属性。 将忽略不存在的属性上的过滤器,因此将返回所有日志。
  • 这些记录的日志status显示NONE,因为CDN status属性是HTTP状态代码,而不是日志级别。

请改用高级模式(DQL)。 要查找过去一小时的CDN日志,请执行以下操作:

fetch logs, from: now() - 1h
| filter matchesPhrase(content, "aemcdn")

要分析CDN日志属性并显示其中的一些属性,请执行以下操作:

fetch logs, from: now() - 1h
| parse content, "JSON:cdn"
| filter cdn[source] == "aemcdn"
| fields timestamp, cdn[url], cdn[status], cdn[pop], cdn[cache], cdn[aem_tier]

Splunk splunk

kind: "LogForwarding"
version: "1"
data:
  splunk:
    default:
      enabled: true
      host: "splunk-host.example.com"
      token: "${{SPLUNK_TOKEN}}"
      index: "aemaacs"

注意事项

  • 默认情况下,端口为443。 可以选择使用名为port的属性覆盖它。
  • 根据特定日志,sourcetype字段将具有以下值之一: aemaccess,aemerror,
    aemrequest,aemdispatcher,aemhttpdaccess,aemhttpderror,aemcdn
  • 如果所需的IP已列入允许列表并且日志仍未交付,请验证是否没有实施Splunk令牌验证的防火墙规则。 Fastly执行初始验证步骤,其中有意发送无效的Splunk令牌。 如果防火墙设置为终止使用无效Splunk令牌的连接,则验证过程将失败,从而阻止Fastly将日志投放到您的Splunk实例。
NOTE
如果将从旧版日志转发迁移到此自助模型,则发送到您的Splunk索引的sourcetype字段的值可能已更改,因此请进行相应调整。

Sumo逻辑 sumologic

在配置Sumo Logic进行数据摄取时,您会看到“HTTP Source地址”,该地址在单个字符串中提供主机、接收者URI和私钥。 例如:

https://collectors.de.sumologic.com/receiver/v1/http/ZaVnC...

您需要复制URL的最后一个部分(前面没有/)并将其添加为CloudManager机密环境变量,如上面设置部分中所述,然后在您的配置中引用该变量。 下面提供了一个示例。

kind: "LogForwarding"
version: "1"
data:
  sumoLogic:
    default:
      enabled: true
      collectorURL: "https://collectors.de.sumologic.com/receiver/v1/http"
      privateKey: "${{SUMOLOGIC_PRIVATE_KEY}}"
      index: "aem-logs"
NOTE
index字段行为取决于日志类型:
  • AEM日志(包括Apache/Dispatcher):路由到index指定的分区,前提是您具有Sumo Logic Enterprise订阅。 非企业订阅路由到sumologic_default分区。
  • CDN日志:已忽略index字段,因为从技术上讲,转发到Sumo Logic的CDN日志不支持索引。 CDN日志始终路由到sumologic_default分区。
有关详细信息,请参阅Sumo逻辑分区文档。

Amazon S3、Dynatrace和New Relic的CDN日志(测试版) cdn-opt-in

转发到Amazon S3、Dynatrace和New Relic的CDN日志处于测试阶段。 将AEM日志(包括Apache/Dispatcher)转发到这些目标不会受到影响,并且不需要请求。

要将CDN日志转发到以下目标之一,请完成以下两个步骤:

  1. 请求访问您的程序。 向aemcs-logforwarding-beta@adobe.com发送电子邮件,其中包含您的项目ID以及要使用的目标。 为您的项目启用了访问权限时,Adobe会回复。
  2. 为每个目标启用CDN日志。 启用访问后,在日志转发配置中的目标的cdn块中设置enabled: true,并运行配置管道。 请参阅以下示例。

这两个步骤都是必需的:

  • 仅访问不会转发任何CDN日志。 对于大多数日志记录目标,启用的default块会转发AEM日志和CDN日志。 对于Amazon S3 (awsS3)、Dynatrace (dynatrace)和New Relic (newRelic),当cdn块显式设置enabled: true时,仅​转发CDN日志。
  • 如果在为程序启用访问之前设置cdn.enabled: true,则配置部署时不会出现错误,但不会将CDN日志转发到这些目标。

cdn块继承了default块中的所有其他属性,包括凭据,因此enabled: true是您需要添加的唯一属性:

kind: "LogForwarding"
version: "1"
data:
  newRelic:
    default:
      enabled: true
      uri: "https://log-api.newrelic.com/log/v1"
      apiKey: "${{NR_API_KEY}}"
    cdn:
      enabled: true

对于具有访问权限的程序,配置的工作方式如下:

配置
AEM日志
Amazon S3、Dynatrace、New Relic的CDN日志
CDN日志到其他目标
仅default.enabled: true
已转发
未转发(截至2027年1月26日)
已转发
default.enabled: true 和 cdn.enabled: true
已转发
已转发
已转发
default.enabled: true 和 cdn.enabled: false
已转发
未转发
未转发
default.enabled: true、aem.enabled: false 和 cdn.enabled: true
未转发
已转发
已转发

与其他目标一样,cdn块中设置的属性会覆盖default中的值。 要仅转发CDN日志,请设置aem.enabled: false,如最后一行所示。

要停止转发CDN日志,请设置cdn.enabled: false并运行配置管道。 部署配置时,发送到该目标的CDN日志转发将停止。 AEM日志不受影响。

NOTE
为什么选择加入这些目标的CDN日志
许多组织在CDN日志转发对其可用之前为AEM日志配置了Amazon S3、Dynatrace或New Relic。 CDN日志包含由CDN处理的每个请求的条目,包括从CDN缓存处理的请求,因此它们通常比AEM日志大得多。 它们也从AEM日志以外的IP地址发送(请参阅传输和高级网络)。 现在需要cdn.enabled: true意味着现有配置仅转发AEM日志,没有意外的引入成本或流量,并让您有时间做出决定。
IMPORTANT
访问请求和选择加入是临时的。 从2027年1月26日星期二起,无需访问请求,Amazon S3、Dynatrace和New Relic遵循与其他目标相同的规则:启用的default还将阻止转发CDN日志。 要仅将AEM日志转发到这些目标之一,请为其设置cdn.enabled: false。 现在即可进行设置;在该日期之前和之后,其效果相同。

在启用CDN日志之前,请估计额外的卷。 按摄取量计费的日志供应商(如Dynatrace和New Relic)对CDN日志的计费方式与AEM日志相同。

若要提供测试版的反馈,请发送电子邮件至aemcs-logforwarding-beta@adobe.com。

日志条目格式 log-formats

有关每种日志类型(CDN日志和包括Apache/Dispatcher的AEM as a Cloud Service日志)的格式,请参阅日志记录。 某些日志记录目标会在CDN日志条目中添加或更改属性,例如New Relic的timestamp格式。 通过记录目标🔗查看CDN日志条目。

由于来自多个程序和环境的日志可能会转发到同一日志记录目标,因此除了日志记录文章中所述的输出之外,每个日志条目中还将包含以下属性:

  • aem_env_id
  • aem_env_type
  • aem_program_id
  • aem_tier

例如,属性可能具有以下值:

aem_env_id: 1242
aem_env_type: dev
aem_program_id: 12314
aem_tier: author

从旧版日志转发迁移 legacy-migration

在通过自助模型实现日志转发配置之前,已请求客户打开支持工单,Adobe将在其中启动集成。

欢迎已由Adobe以这种方式设置的客户在方便时改用自助模式。 进行此过渡有几个原因:

  • 已配置新环境(例如,新的开发环境或RDE)。
  • 更改您现有的Splunk端点或凭据。
  • Adobe已在CDN日志可用之前设置日志转发,您想要接收CDN日志。
  • 有意识地决定主动适应自助服务模式,使您的组织甚至在对时间敏感的更改之前就拥有了知识。

准备迁移时,只需按照前几节所述配置YAML文件即可。 使用Cloud Manager配置管道部署到应应用配置的每个环境。

建议将配置部署到所有环境,以便所有环境都处于自助控制状态,但不是必需的。 如果没有,您可能会忘记哪些环境已由Adobe配置,哪些是自助式配置的。

NOTE
发送到Splunk索引的sourcetype字段的值可能已更改,因此请进行相应调整。
在将日志转发部署到之前由Adobe支持配置的环境时,您最多可能会收到几个小时的重复日志。 这将最终自动解决。
recommendation-more-help
experience-manager-cloud-service-help-main-toc