使用 Splunk 在 AEM 云服务上进行日志搜索和监控
更新于 2025 年 1 月 15 日
尝试开发和运行一个没有日志聚合器、没有指标和图表的现代网站无异于一场充满愤怒和沮丧的诊所。某某问题是什么时候开始出现的?是在部署之前还是之后?一直都是这样吗?所有页面都慢吗?还是只有这一页慢?现在它抛出了错误 – 它总是抛出错误吗?这个错误与什么有关吗?
当您只能访问下载的日志,但无法对其进行搜索、绘制图表以及跨时间和跨多个服务器对其进行测量时,您会面临这些类型的问题。当AEM 作为云服务首次推出时,获取日志的唯一机制是通过云管理器下载整个日志。Adobe 后来提供了使用 Adobe IO 通过一个稍微复杂的过程来跟踪单个 pod 日志的功能。但现在,有第三种 更好的 方法来装备您的 AEM 云服务基础设施,那就是使用 Splunk。猜猜看,如果您资金紧张或只是想试用一下,它甚至可以免费完成。
设置方法如下:
你需要什么
为了使用 Splunk 测量 AEM 作为云服务安装,您需要:
- 付费且获得许可的 AEM 作为云服务环境: 这将适用于任何 Dev、Stage 或 Prod AEM 作为云服务环境,但不适用于您的 Adobe 合作伙伴沙盒环境。由于 AEM 云服务沙箱的设置方式,它们共享许多不同的配置,其中之一就是 Splunk 配置。因此,这仅适用于功能齐全的付费 AEMaCS 环境。
- 您具有管理员访问权限的 Splunk Free、Splunk Enterprise 或 Splunk Cloud 环境。
工作原理
AEM 作为云服务提供的日志数据首先被提取到 Adobe 拥有的 Splunk 实例中,Adobe 支持人员可以访问该实例以监控和排除您的环境故障。正确设置后,Adobe 会设置其 Splunk 实例,以使用 Splunk HTTP 事件收集器 或“HEC”将日志信息转发到 您的 Splunk 实例。
Splunk 与 AEM 云服务的示意图
设置
我将为您提供从头开始设置时要做的事情的列表。如果您是一家大公司,您可能已经拥有将要使用的 Splunk 环境,因此将跳过许多步骤。但即使您没有进行完整的企业设置,这些说明也适用于 Splunk 的免费版本,并为您提供每天 500MB 的日志记录,这实际上适用于许多小型 AEM 安装、开发安装,甚至我曾经处理过的一些生产资产安装。
以下是具体操作:
安装 Splunk
假设您还没有安装 Splunk,那么您首先需要安装 Splunk 。首先,即使是一个非常小的环境也足以让你起步。该演示是使用在具有 8GB RAM 的单 CPU T 系列 AWS VM 上运行的 Splunk Free 创建的,但任何生产环境都可能需要更多的资源。
为您的 AEMaCS 数据配置索引
在 Splunk 中,转到设置->索引并为您的 AEM 云服务数据创建索引。
为您的 AEM 创建 Splunk 索引作为云服务数据。
为 Splunk 采购外部有效的 SSL 证书
Adobe 要求 Splunk HEC 端点具有外部有效的 SSL 证书。自签名证书不起作用。有时,在服务器到服务器的连接中,人们可以在“宽松”验证模式下运行 SSL,以允许验证错误和自签名证书工作,但在这种情况下不行。
为了这个演示,我使用CentOS 上的 Certbot通过 Letsencrypt 免费创建了一个 SSL 证书。
配置 HTTP 事件连接器
下一步是在 Splunk 上配置 HTTP 事件收集器。转到 设置 -> 数据输入,然后单击 HTTP 事件收集器的“+ 添加新”。
配置端点时:
- 确保选择您之前创建的 Splunk 索引,以便 HEC 端点可以输入该索引。
- 不要选中“启用索引器确认”。如果您启用索引器确认,当您尝试转发数据时,它最终会从源 Splunk 实例抛出“数据通道丢失”错误。所以 – 不要选中它。
在 HEC 端点上配置 SSL
下一步要做的是在 Splunk 端点上配置 SSL。请注意,Splunk web(用于搜索和配置 Splunk 的 Splunk UI)和 Splunk HEC 具有完全独立的 HTTP 和 SSL 配置。因此,如果您在 Splunk Web 中打开 SSL,这 也不 会使您的 Splunk HEC 也具有 SSL。Adobe 要求对 HEC 流量进行加密,并且希望其在端口 443 上运行。 我并没有对此进行过多的反对,因此不知道如果你礼貌地询问的话,他们是否可以在备用端口上进行设置。
您可以首先通过转到 HTTP 事件收集器设置中的“全局设置”,然后单击“启用 SSL”并输入端口号来打开 SSL。
但是,您随后需要进入磁盘上的 Splunk 配置才能完成 SSL 配置。
编辑 {splunk_install_dir}/etc/apps/splunk_httpinput/local/inputs.conf 并确保它具有所需的端口和 SSL 证书配置:
[http]
disabled = 0
port = 443
serverCert = /etc/letsencrypt/live/splunk.opsinventor.com/fullchain.pem
privKeyPath = /etc/letsencrypt/live/splunk.opsinventor.com/privkey.pem
然后,重新启动 Splunk。然后,您应该能够使用以下 curl 命令对 Splunk HEC 端点进行测试:
curl -k https://your-splunk-host.com:443/services/collector -H 'Authorization: Splunk 1e238ab6-1f9d-47d4-9b0g-81c2a47e389c' -d '
{
"sourcetype": "aemerror",
"index": "aemaacs",
"event": {
"host": "172.27.60.76",
"file_path": "/var/log/aem/error.log",
"orig_time": "07.12.2020 10:07:09.895",
"level": "INFO",
"msg": "[FelixLogListener] Test SPLUNK",
"pod_name": "cm-random-pod",
"aem_program_id": "12345",
"aem_tier": "author",
"aem_env_type": "dev",
"aem_env_id": "32132",
"splunk_customer": "true"
}
}
'
在 curl 命令中,将“'Authorization: Splunk 1e238ab6-1f9d-47d4-9b0g-81c2a47e389c'”位替换为您在 Splunk (/en-US/manager/search/http-eventcollector) 中的 HTTP 事件收集器输入配置中看到的“Token Value”。
作为回应,您应该看到:
{"text": "成功", "code": 0}
这意味着您的事件收集器已成功配置。
向 Adobe 提交工单,让他们自行设置 HEC
完成上述操作后,您可以向 Adobe 支持部门开具一张票据,让他们开始将日志转发到您的 Splunk 实例。
确保具体包括:
- Splunk HEC 端点地址:( 即https://splunk.myorganization.com
- Splunk 索引:( 您创建的索引的名称)
- Splunk 端口: 443
- Splunk HEC 令牌:( 类似“1e238ab6-1f9d-47d4-9b0g-81c2a47e389c”的值,您可以从 Splunk 实例中的 /en-US/manager/search/http-eventcollector 获取)
- 您希望将哪些环境纳入 Splunk
您应该看到哪些数据(如何知道它正在工作)
在 Splunk 中,您应该能够执行如下简单搜索:
index=aemaacs
它应该显示如下结果:
您的结果中应该至少有 7 种源类型:
- aemerror:所有实例的 AEM 错误日志
- aemrequest:来自作者和出版商的 AEM 请求日志(包括时间和响应信息)
- aemaccess:来自作者和出版商的 AEM 访问日志
- httpdaccess:Apache Dispatcher 访问日志
- aemqueryrecorder:AEM 查询调试日志
- aemdispatcher:AEM Dispatcher 日志(包含缓存命中数据)
- httpderror:Apache 错误日志
AEM 云服务的示例 Splunk 仪表板
为了完善这个演示,我为这个 AEM 创建了一个示例仪表板作为云服务开发环境。
此处顶部面板显示随时间变化的访问信息、平均响应时间和缓存命中率。由于目前无法查看云服务随时间变化的平均响应时间(也就是说,直到 Adobe 允许我们访问 New Relic 或后端 APM 数据),我发现这是唯一一种按页面或资源详细了解并找出处理时间的方法。
除此之外,您还可以获得随时间变化的错误,以及前 500/400 级错误的表格,以及平均响应时间最高的资源列表。
我很快会用 Splunk 搜索来生成此仪表板,并发布一篇单独的文章 - 因为对于任何 AEM 作为云服务实现,源类型、字段等都应该相同,这意味着您只需替换索引名称即可使其工作。
更新: 与此同时,请参阅Splunk 的 Yogesh 刚刚撰写的关于在 AEM 上实施 Splunk 作为云服务的精彩博客文章- 因为他提供了引导仪表板所需的许多示例搜索。
重复一遍:这是免费的,你应该这样做
所有这些都是在没有 Adobe 额外许可费用的情况下,使用 Splunk 的 免费 版本创建的。唯一涉及的成本是托管 Splunk 所需的云 VM。
另请注意,Splunk 的免费版本有一些主要限制。首先,Splunk Free 取消了登录功能。因此,任何能够访问您的 Splunk 实例前端的人都可以看到您的所有数据。这意味着如果您实现这一点,您将需要(a)购买真正的 Splunk 版本或(b)仅通过 IP 锁定 Splunk 或使用 HTTP 基本身份验证将 Nginx/Apache 放在它前面。
第二个限制是 Splunk Free 限制每天记录 500MB。作为参考,我用于此演示的 AEMaCS Assets Dev 环境平均使用了该许可证容量的约 22%:
因此,如果您想要使用免费许可证来启动和运行它(同时您要弄清楚如何通过完整的实际 Splunk 获取采购订单),您可能只想为 Dev & Stage 创建一个单独的 Splunk 环境,为 Prod 创建一个单独的 Splunk 环境。
我希望这有帮助!
关于作者
