工程

从 Splunk 迁移到 Elastic Stack:数据迁移

Splunk 在大约 20 年前刚发布的时候,凭借基于每天所采集数据量的定价模式,的确帮助很多公司/组织发挥了日志的强大效力,提供了业务洞见。在过去二十年间,系统和用户所产生数据的规模和种类,以及产生数据的速度均呈指数增长。业务和运营部门的需求很快便不再局限于合规性和基础报告。开发方法和监测要求都在飞速发展,同时由于越来越需要通过 Machine Learning 来从数据中获得洞见,人们对实时搜索能力提出了要求。 

公司/组织达到了数据上限(亦叫做“Splunk 峰值”)

如今,公司/组织需要能够在几毫秒内搜索 PB 量级的数据,从而获得有关运营的实时洞见,为 Machine Learning 系统提供支持,并基于业务发展速度进行扩展。由于 Splunk 采用基于所采集数据量的定价体系,费用之高让人不禁望而生畏。再加上 Splunk 技术在可扩展性方面比较困难,很多公司/组织都遇到了“Splunk 峰值”问题,也就是他们再也无法承担向系统中添加更多数据所需的成本。这些公司/组织通常需要舍弃对安全和可观测性用例而言十分宝贵的数据。让事情更为复杂的是,Splunk 的付费应用程序采用不同的定价模式,而且其中有一些是在完全不同的平台和架构上构建起来的,致使人们在使用这些迥然不同的工具时很难预估成本,也很难管理基础设施。Splunk 最近弃用了永久许可证,这一点也促使很多公司搜索新的解决方案。

Elastic 创建之初所针对的就是搜索用例,所以产品的基本理念便是注重速度和可扩展性。速度和可扩展性方面的优势也推动我们推出了越来越多的解决方案,且所有这些解决方案均基于单一堆栈构建而成。由于 Elastic 采用灵活的开源许可证模式,同时针对付费产品采用基于资源的公平定价模式,这两点使得越来越多的公司/组织选择从 Splunk 迁移到 Elastic。

Elastic 的一大关键优势是其采用开源许可证模式,通过这一模式,用户无需购买许可证便能上手使用。这一许可证授予了很多权限,甚至允许开发人员将 Elasticsearch 集成到自身产品中。如果开发人员决定利用付费功能,例如 Machine Learning、APM、跨集群复制、端点安全性或编排工具,他们只需简单地升级许可证。开发人员无需部署其他工具、单独的基础设施或者其他硬件。另外,开源模式还有助于降低成本,让您在管理与开发、测试和生产相关的多个环境时,更好地控制相关费用。

简单四步将 Splunk 数据迁移至 Elastic

由于 Elastic 与 Splunk 相比有很多独特优势,很多公司/组织都纷纷改用 Elastic。在迁移过程中,这些公司/组织中有很多都向我们咨询最佳实践事宜。尽管不能通过简单的一键式操作便完成数据平台的迁移,但还是有一些简单的技巧可供参考。

第 1 阶段:找出尚未采集到 Splunk 中的数据源

第一步很简单,看看哪些数据源尚未采集到 Splunk 中,无论是出于费用考虑(许可证),还是存在技术限制。这些通常都是数据量很大的数据源,例如 DNS、DHCP、端点以及应用程序日志。开始将这些之前并未触及的数据源采集到 Elastic 中,这能够允许公司/组织在上手使用 Elastic Stack 的同时,构建新用例。您很快便能开启使用之旅,既可下载免费的 Elastic Stack 基础版分发包,也可免费试用 Elasticsearch Service on Elastic Cloud 以便快速完成部署。

第 2 阶段:清点需从 Splunk 迁移至 Elastic 的数据源

如需为迁移至 Elastic 做好充分规划,很重要的一点就是清点 Splunk 目前从哪些数据源采集数据。通过下面的 SPL 查询可以很轻松地进行清点:

| eventcount summarize=false index=* index=_* 
| dedup index
| fields index
| map maxsearches=100 search="|metadata type=sourcetypes index=\"$index$\"
| eval index=\"$index$\""
| fields index sourcetype

在 Splunk Search 应用程序中运行该查询后,您可以选择将数据源列表以各种不同格式导出。

第 3 阶段:将现有的数据流从 Splunk 迁移至 Elastic

Beats 是我们的数据采集器系列产品,可用来将数据从数千个系统发送到 Elastic。然而,很多 Splunk 用户可能已在系统中使用 Splunk 的 Universal Forwarder(通用转发器)。在迁移之初,您可以使用 Splunk Universal Forwarder 将数据分流至 Elastic Stack。遗憾的是,针对如何通过 Universal Forwarder 将数据发送至第三方系统,Splunk 设置了技术和许可限制,因此您最好查看一下相关文档和许可证以确定最佳方法。您逐渐地应该能够用 Beats 模块替代 Universal Forwarder,从而改善灵活性、安全性和可靠性。Elastic 咨询团队在应对难以处理的自定义数据源方面拥有丰富经验,可在迁移过程中为您提供协助。

第 4 阶段:将旧数据从 Splunk 迁移到 Elastic

尽管大部分公司/组织开始时会使用新数据,但通常也有一些用例需要将旧数据从 Splunk 迁移至 Elastic。要实现这一目的,有很多种方法可供选择,具体取决于您的数据量。最简单的方法就是从 Splunk 界面中将数据导出,请参阅 Splunk 文档。 

将较小的数据集以 CSV 或 JSON 格式导出,并导入 Elasticsearch

您还可以使用 Splunk API 来导出数据,或者通过 ODBC 建立连接。方法有很多,具体取决于您的用例、数据量以及您所处理的数据类型。

迁移方面的最佳实践

尽管上面的四步能够帮助贵公司/组织进行规划并将数据从 Splunk 迁移至 Elastic,但您还需要对团队进行培训。我们的 Kibana for Splunk SPL Users(面向 Splunk SPL 用户 Kibana)培训课程旨在帮助您的团队完成这一过渡。我们还提供咨询服务来帮助您完成迁移过程。 如果您想看一下其他公司如何成功地从 Splunk 改用 Elastic,并且提升了投资收益率、速度和可扩展性,欢迎查看来自网约车公司 Lyft 的成功案例。同时您还可以在 Splunk 替代方案页面上了解更多信息;如有具体疑问,欢迎随时与我们联系。