开放公开,火力全开:Elastic 宣布公开其商业产品 X-Pack 的源代码

medcl 发表了文章 • 21 个评论 • 6788 次浏览 • 2018-02-28 12:47 • 来自相关话题

by Elastic CEO Shay Banon [原文](https://www.elastic.co/blog/doubling-down-on-open)

IMG_4009.JPG



我很高兴的宣布,我们将公开我们 X-Pack 特性的所有代码 - Security、Monitoring、Alerting、Graph、Reporting、专门的 APM UI、Canvas、Elasticsearch SQL、Search Profiler、Grok Debugger、Elastic Maps Service zoom levels 以及 Machine Learning - 为了促进我们与客户及社区的更大的协作,正如我们今天为我们的开源代码所做的一样。

我为我们公司围绕我们的开源产品而自豪,一直以来我们都没有破坏创新或放弃对开放的承诺。当我们展望未来的时候,我们看到了一个机会,让我们更加坚信开放,甚至更加彻底,同时引入一个新的、更加高效的模式来构建一个成功的、可持续的围绕开源的商业模式。

这篇博客概述了我们做出这些改变的想法和细节,不过,让我澄清一件事 - 我们是一家开源软件公司。我们将继续保持为一家开源软件公司。我们比以往任何时候都要更加开放,我个人,我的团队,整体而言,都致力于此。

为什么开源?


当我第一次开始写 Elasticsearch 的时候,我知道它必须是开源的。开源作为一种开发模式和分发方式,提供了接触更多人的机会。所有这些人都能做出贡献。当然,通过代码可以做出贡献,但也可以通过使用免费的软件,持续不断的推进可能的边界。

与社区的合作可以确保,当你的项目成功时,会有一群热情的、专门的开发者指导你的特性开发,并将产品推向新的有趣的方向。例如,将聚合功能引入 Elasticsearch 让其可被当做一个可扩展的用于数据分析的产品。而像 Kibana 和 Logstash 这样的项目,以及后来的 Beats 的加入,无不令人鼓舞。随着我们用户的需求变得更加深入和专业,我们总能找到新的方法来支持他们,有些是通过新的功能、有些是产品,比如机器学习、APM 和站内搜索。

我们对开源的承诺深入了。这是我们花费大部分工程力量投入的地方,我们的社区贡献者和用户对我们创新进程也同样至关重要。但是,像我们这样快速推进产品的发展,需要大量的投资,这也是我们围绕这些技术成立一家公司的原因。

为什么商业软件?


那么,如果我们对开源软件已有如此深的见解,那为什么还是编写了商业软件呢?

我们是一家企业。作为企业的一部分,我们相信那些能够付款给我们的企业,应该付款给我们。而那些不能的,他们也不必付款给我们。作为回报,我们有义务确保我们继续添加功能和价值给我们所有的用户,并确保与我们的商业关系对客户有益。这是一家健康的公司所需要的平衡。

销售支持订阅服务是一个常见的开源软件的商业模式。可悲的是,只有支持的商业模式会朝向关于什么对用户最好以及什么对公司最好这样的冲突之中。在这种情况下,公司将没有动力让他们的产品更加简单好用,更加稳固和可扩展,因为那意味着这将吞噬其技术支持的利益。我们从来没有,也永远不会忍受为了确保公司继续经营而不让我们的软件变的更好。我们想要继续改进,我们支持服务的目标是让你的项目成功,然后你能成为你自有 Elastic Stack 部署的专家。

另外一种办法 -- 如果你们听过我的演讲,你们可能听我讨论过这个问题 -- 即构建一个‘企业版’的软件。这种,从本质上来讲,导致了社区的分裂,并在客户和用户之间产生了分歧。它的结果就是创建一种版本 -- 要么企业版,要么社区版 -- 被认为是权威的,往往滞后 master 很多。一个缺少特性的版本。一个在不同周期测试和发布的版本。一个有效的关闭了源代码的版本,因为您无法知道为了支持商业特性而更改了哪些内容。在 Elastic,所有我们的客户同时也是我们开源软件用户,使用相同版本的软件产品。我们不会创建一个社区版与企业版的版本。

那还有什么?识别高价值特性并将其作为核心软件的商业扩展。这种商业模式,我们有时候叫它“open core”,这是我们创造 X-Pack 的最终产物。为了构建和集成由我们维护知识产权(IP)的特性和功能,并提供订阅服务或免费的基础授权。保持我们对知识产权的控制,使我们能够有能力投资我们大部分的工程资源和时间,可以继续改进我们的核心,我们的开源产品。

这种方法使我们能够在世界各地建立一个分布式的公司,让我们感到惊讶的是,Elastic Stack 是如何被用来解决各种实际的、具体的问题的。添加适用于我们用户的特性和功能,并开发一些使我们能够持续到未来的功能。

但是这种方法也存在挑战…

更加开放


你是否知道 X-Pack 提供了一层免费的功能?这些能力诸如 Monitoring、Search Profiler、Grok Debugger 以及额外的 Elastic Maps 缩放级别。你是否知道我们还将在这一层继续添加更多功能,如 Canvas 和 Elasticsearch SQL?

当我们往X-Pack 里添加免费功能的时候,我们这么做是因为我们知道这些功能可以帮助用户更好的使用 Elastic Stack。不幸的是,太多功能你都不知道 -- 也许知道 -- 或得益于这些功能。所以这意味着有很大一部分用户在使用我们软件的时候往往不是最佳实践。

我们也知道,获得这个免费软件的过程是一个糟糕的用户体验,涉及到一个完整的集群重启。并且如果你想查看代码,抱歉,不可以。尤其是这些免费功能和很大一部分用户相关,你会问我们一些很好但是很难的问题,比如:“我如何就这些免费功能与你们交互?”,“我如何开启一个 issue 或是贡献代码?”

而我们没有很好的答案。

通过公开 X-Pack 的代码,我们解决了这些我们部分产品开源以及部分产品不是的问题。很快,所有的免费的和商业的特性你都可以开启一个 issue、查看特性讨论、检查源代码、与我们协助和提交一个 pull request。

具体细节


这意味着什么,技术上来说?

自 6.3 版本起,所有 $PRODUCT(项目)仓库(Elasticsearch, Logstash, Kibana, Beats) :

  • 所有现存的 Apache 2.0 协议的代码都将保持相同的协议,什么都不用动。
  • 我们会创建一个新的 X-Pack 目录,将 x-pack-$PRODUCT 的代码放入到该目录,基于 Elastic EULA 协议,允许相应的衍生和贡献。
  • 我们将修改最顶层的协议为一个简单的 Elastic License,包含这个仓库里面那些文件是Apache 2.0,那些是 Elastic EULA 的详细细节。

    同时,X-Pack 功能将打包到默认的发行版里面。所有免费的功能都包含在里面且默认开启且永远不会出现‘过期’,而商业特性则可以通过试用证书可选的启用。因为免费的证书永远不会过期,所以你再也不用通过注册来就直接获取它了。除此以外,一个只包含 Apache 2.0 协议代码的包也会同样会创建并提供下载。

    更多信息以及常见问题,可以在 [Opening X-Pack](http://elastic.co/products/x-pack/open) 页找到。

    总结


    我们相信开源。作为一种分布模式。作为一种建立企业的方法。作为我们公司的未来。
    我们承诺并保持我们将保持开放,并对我们将在 6.3 比以往任何时候都更加开放而感到兴奋。


    感谢你们对我们的信任。

Elastic 在年度用户大会 Elastic{ON} 2018 上发布众多新功能和技术预览

medcl 发表了文章 • 1 个评论 • 1138 次浏览 • 2018-02-28 12:39 • 来自相关话题

IMG_0533.JPG



下载超过 2.25 亿次,Elastic 公开 X-Pack 源代码


旧金山 (Elastic{ON} 2018) – 2018 年 2 月 27 日 – Elastic,Elasticsearch 和 Elastic Stack背后的公司,今天宣布其产品累计下载次数达到 2.25 亿次的里程牌,去年累计下载次数是 1 亿。除此之外,Elastic 宣布公开其X-Pack 的源代码作为策略的一部分,让用户更容易地下载、检查和与 Elastic 工程团队一起在 X-Pack 特性开发上进行协作。给用户更简单的下载、检查及协助。X-Pack 目前包括了 security、alerting、monitoring、Graph 和machine learning 等众多功能。


“我们的产品被数以百万计的开发人员和成千上万的客户所依赖,他们依靠这些产品来驱动关键型业务,这令我们受宠若惊,” Elastic 创始人兼 CEO Shay Banon 表示, “正如他们与我们开源的产品打交道的一样,公开我们的 X-Pack 源代码能给我们的用户完全的透明度和具备与我们一起协助的能力。这样可以激励每一位开发人员、客户和使用我们软件的合作伙伴,帮助我们创造更好的产品和特性以及允许我们构建一个可持续发展的商业模式。”

Elastic 在过去18个月内收购了三家新公司,并在全世界发展了超过 100,000 多位开发者的技术社区。 Elastic{ON} 2018, 是一个最大型的 Elasticsearch 用户聚集的大会。在三天的时间里,超过 2500 名与会者聚在一起学习和分享创意,观看新功能的发布,并获得即将发布的新技术的预览。

  • Elastic APM: 这是 Elastic APM 第一个可被用于生产环境的版本,作为 Elastic 产品栈进入应用性能监控领域的一个延伸。它允许应用程序开发人员和 devops 工程师能够监视和分析特定的代码行对系统和业务性能的影响。这不仅仅是提升速度,同时也能扩展调试流程,将代码性能变化与操作历史有机结合。Elastic APM 将数据存储到 Elasticsearch 的索引里面,允许将 APM 数据与来自 Logstash 或者 Beats 的日志和监控指标进行关联分析,包含针对 Nodejs、Python、Ruby 和 JavaScript 的服务端组件和探针。还提供一个 APM 分析应用来实施典型的 APM 工作流。Elastic APM 已经作为 6.2 发布的一部分可被下载。

  • Swiftype App Search: 为开发者构建用以为他们的应用程序提供强大的搜索能力,Swiftype App Search 交付一系列稳健的 API 和额外的搜索相关的特性,如搜索结果重排、同义词和容错等。Swiftype App Search 是一个一站式的 Saas 解决方案,不需要基础设施、管理和维护,提供一个简单上手的用户体验。 Swiftype App Search 现已公测。

  • Machine Learning Forecasting: Elastic 机器学习能力的第一个主要扩展,用于预测分析领域。用户可以对时间序列数据进行建模,并使用复杂的、现成的机器学习算法来预测未来可能发生的结果。借助按需预测,用户可以使用现有的机器学习工作,并使用内置的预测模型,来准确预测改模型在预测周期内的增长情况。预测结果被写入到 Elasticsearch 的索引中,用户可用来和实际的数据进行比较。Elastic 的机器预测能力已包含在 6.2 的版本里面。

  • GIS App: Elastic 的一个全新研究项目,GIS(地理信息系统)是一个被设计用来捕获、存储、操作、分析、管理和呈现所有地理类型数据的系统。作为 Kibana 的一部分,这个 应用让你以一种全新的方式来执行特定的地理位置分析,在 Dashboard 里面加入内置的增强地图可视化组件。它的核心特性包括,多层地图的支持,映射独立的坐标点和用户端样式自定义。GIS App 目前已提供技术预览版。

  • SQL for Elasticsearch: 这个新特性为世界上最成熟的 SQL 数据库开发人员打开了释放 Elastic Stack 强大能力的大门,允许用户用熟悉的 SQL 语法来查询 Elasticsearch 里面的数据。JDBC 协议的支持,大大的简化了将 Elasticsearch 导出到外部 SQL 环境使用的情况。通过允许 Elasticsearch 通过 RESTful 协议理解 SQL,Elasticsearch SQL 允许你使用 SQL 语法来查询 Elasticsearch 里面的数据,以 SQL 引擎一致的表格形式返回那些查询结果,并提供一个用户接口来探索这些数据。Elasticsearch SQL 去年还只是作为一个概念被推出,现在马上将发布 alpha 和 beta 版本。

  • Canvas: Canvas 为下一代数据可视化和数据呈现展现了一个全新的篇章。随着 Kibana 越来越受欢迎,Canvas 展现了一种新的方式,可以将数据从 Elasticsearch 中获得的洞察赋予在线的、实时的仪表盘、幻灯片演示和信息图表。Canvas 能让用户能以一种前所未有的方式来表达 Elasticsearch 数据背后的故事,消除将数据导出到 Excel 中的详尽、重复和耗时的过程,来构建 PowerPoint。 Canvas 同样也是可插拔的,允许用户带来新的数据源、可视化类型和 UI 可视化组件。Canvas 去年作为一个概念被提出,目前已提供技术预览版可被下载。

  • Rollups: 一般来说,具备关联的指标和日志数据需要长时间保存,rollups 可以让用户存储有限的数据集,减少历史数据的磁盘占用。Elasticsearch 的 rollup 作业可以让用户配置一个定时任务来对数据进行 “rollup” 或预聚合,并保存结果到一个索引。举一个指标监控的例子,如:“web 服务器每小时的平均负载”,也就是说,平均数据被 rollup 起来并存储,但是其它原始数据,如特定用户、页面、IP 信息却不会。该功能将很快在 Elasticsearch 里面提供测试版本并随后在 Kibana 里面提供支持。

  • Flexible Deployment Configurations: 随着客户将随着越来越多的数据放进 Elasticsearch 并扩展越来越多的使用场景,Elastic 引入 “sliders” 功能来让用户获得定制他们集群配置的能力。Elastic Cloud 和 Elastic Cloud Enterprise (ECE) 客户将获得这些新能力:支持多种类型的硬件可供选择;支持集群模板和 hot/warm 集群;给现有集群添加机器学习节点、独立 master 节点和 APM 节点的能力。这些新特性很快将能在 Elastic Cloud 和 Elastic Cloud Enterprise 上可用。

  • Logstash Azure Monitoring Module: 通过与微软合作,Logstash Azure 监控模块目前是借助 Elastic Stack 监控你的 Azure 基础设施和服务的最简单的方式。新模块集成了 Azure 的集中式日志服务来标准化 Azure 日志和指标,并转换成 JSON 格式。使用 Logstash 来消费这些数据录入到 Elasticsearch。同时借助 Kibana,用户能够分析基础设施的改变和授权信息;识别可疑的行为和潜在的恶意用户;通过调查用户行为来执行根源分析;监控和优化 SQL 数据库的部署。该功能将很快提供 beta 版本。

    最后,Elastic 宣布一个新的、官方的 Elastic 认证计划。在用户要求获得专业认证的推动下,Elastic 将为用户提供新的培训课程,让他们成为专家,并通过 Elastic 认证。新课程 Elasticsearch Engineer I 和 Elasticsearch Engineer II 将为用户提供安装、管理和优化 Elasticsearch 集群的第一手知识,也包括,开发新的解决方案来分析他们的数据。这些课程是成为一名 Elastic 认证工程师的基础,包括动手、技术和基于性能的认证考试,通过考试将获得由官方颁发的 Elastic 电子认证徽章。


    了解更多


    Elastic Opening X-Pack Blog
    Opening X-Pack FAQ
    Elastic Certification
    Elastic Cause Awards

    关于 Elastic


    Elastic 致力于构建大规模实时数据处理软件,场景主要涵盖搜索、日志、安全与数据分析等领域。公司成立于 2012 年,旗下拥有产品包括开源的 Elastic Stack(Elasticsearch、Kibana、Beats 和 Logstash)、 X-Pack (商业特性)和 Elastic Cloud (一种托管服务)。迄今为止,这些产品的累积下载次数已超过 2.25 亿。Elastic 由 Benchmark Capital、Index Ventures 及 NEA 投资,投资额超过 1 亿美金。Elastic 拥有超过 800 位员工,分布于世界上 30 多个国家和地区。欲了解详情请访问:elastic.co。

    媒体联系人:


    Michael Lindenberger

    Reidy Communications for Elastic

    Michael@reidycommunications.com

    (415) 531-1449

    亚太地区
    Jeff Yoshimura

    Communications @ Elastic

    pr@elastic.co

社区搜索试运行

medcl 发表了文章 • 29 个评论 • 1871 次浏览 • 2017-12-25 11:31 • 来自相关话题

访问地址:
https://index.elasticsearch.cn

badge.png

 
姑且叫做:Elastic 情报局!
这个东西有什么用?
聚合 Elastic 社区的各种资源,
  • Elastic 官网资料、文档、博客、视频
  • Elastic 中文社区
  • Elastic 英文社区
  • Github 仓库的最新事件
  • 其他社区的相关主题,如 StackOverflow、Reddit等

用来提供一站式的垂直搜索,
方便提供您更好的学习和寻找参考资料。

Snip20171225_3.png

 
基于开源爬虫 GOPAElasticsearch 搭建,目前试运行,功能和数据正在完善中,欢迎反馈。

Elastic Stack 全新推出 6.0.0

medcl 发表了文章 • 2 个评论 • 1678 次浏览 • 2017-11-15 13:34 • 来自相关话题

1510725544562.jpg



[https://www.elastic.co/cn/blog ... eased](https://www.elastic.co/cn/blog ... leased)

全新推出 6.0.0。

无需多说。你应该立即下载试用,或者通过你最喜欢的托管式 Elasticsearch 和 Kibana 提供平台 [Elastic Cloud](https://www.elastic.co/cn/cloud/as-a-service/signup) 亲身体验。

如果你在过去几个月没有跟上我们的发布节奏,可能会对今天的公告感到意外。今天标志着成千上万的 pull 请求和成百上千位代码提交者的努力终见成效。期间共有两个 alpha 版本、两个 beta 版本、两个候选版本以及最终的通用版本 (GA)。这个里程碑离不开 Elastic 各路团队的努力。还要感谢参与[先锋计划](https://www.elastic.co/cn/blog ... am-6-0)的用户提出的意见和反馈。

今天,我们不仅发布了整套 Elastic Stack,还发布了 [Elastic Cloud Enterprise 1.1](https://www.elastic.co/cn/cloud/enterprise),其中包括 6.0 支持、离线安装,并且对用户体验进行了一系列改进,旨在简化集群的配置、管理和监控。同天发布多款产品的正式版本还不够……还有仍是 Alpha 版本的 APM ,我们邀请大家在 6.0.0 中对它进行测试。

一个版本有如此多的亮点,该从哪里说起呢?你们撰文细述也好,提供详情链接也好,祝你们有愉快的阅读体验……更重要的是……祝你们有愉快的搜索、分析和可视化体验。

Elasticsearch


全新零停机升级体验,增加了序列 ID、改进了对稀疏数据的处理、加快了查询速度、分布式执行 watch 等等。功能摘要请查看[详情](https://www.elastic.co/cn//blo ... leased)。

Kibana


支持 “Dashboard Only” 模式,支持 “全屏” 模式,能够将保存的搜索结果导出到 .csv,X-Pack 黄金版及以上版本支持通过 UI 创建告警,X-Pack 基础版提供迁移助手,我们还通过调整对比度、支持快捷键来产品易用性,让用户使用起来更方便。数据交互的未来详见[此贴](https://www.elastic.co/cn/blog ... leased)。

Logstash


单一 Logstash 实例中可存在多个自成体系的管道,另有新增 UI 组件 - X-Pack 基础版中的管道查看器,以及 X-Pack 黄金版中的 Logstash 管道管理。了解详情,[点这里](https://www.elastic.co/cn/log/ ... leased)。

Beats


Beats <3 容器以及 Beats <3 模块(并且改进了适用于这些模块的仪表板)。再结合全新命令和配置布局,在 Metricbeat 实现更高效的存储。此外,全新推出 Auditbeat。细节详见[这里](https://www.elastic.co/cn/blog/beats-6-0-0-released)。

ES-Hadoop


对Spark的结构化数据流的一流支持已经降落到了 6.0,并重新编写了连接器映射代码以更好地支持多个映射。支持读写新的连接字段也被添加了。用户现在也可以利用非内联脚本类型的更新操作。[详细信息](https://www.elastic.co/blog/es ... leased)。

立即获取!


欢迎参加Elastic的Meetup线下活动问卷调查

medcl 发表了文章 • 1 个评论 • 1525 次浏览 • 2017-02-23 11:25 • 来自相关话题

问卷调查直达链接:https://www.surveymonkey.com/r/elastic-china17 
 
同学们,乡亲们:
    想要今年的Elastic线下活动来到您身边么,快参加我们的问卷调查吧,如果您的城市不在下拉列表,记得添加进去,问卷调查比较简单啦,大概只需要花费您几分钟时间,快来吧:https://www.surveymonkey.com/r/elastic-china17
 
   另外Elastic也在寻找各个城市的演讲者、场地赞助、协办方、志愿者。如果您有项目用到了任何Elasticsearch、Kibana、Logstash或Beats,并且有兴趣分享您的经验故事(不管是5分钟还是50分钟)请让我们知道,我们非常愿意与我们的社区一起分享您的故事。不管是哪种参与方式都欢迎,请在问卷内留下联系方式或联系我:medcl123(添加注明来意)。


我们感谢您参与本次问卷调查!问题集中在您想参加的线下活动类型,调查结果将被用来使组织者更好地安排活动计划。本调查预计需要花费2 - 5分钟才能完成。我们将与所有参与调查的人分享任何有趣的发现。所有收集的信息将保持匿名。为了鼓励大家花费这一天中的几分钟时间,将随机抽取五个人赢得 $50 美元的亚马逊礼品卡和十五个人将赢得 Elastic Stack 特别版T恤。为了进行抽奖活动,我们会在调查结束时要求您提供电子邮件,但只会用它来让您知道如果您中奖了。


 
除了这个问卷调查,我们在也同时更新了 Elastic 用户组的行为准则(Code of Conduct)。参加我们的活动意味着您同意我们的准则。完整的准则可以访问:https://www.elastic.co/community/codeofconduct。所有的细节可以这个链接页找到。如果您还要其他问题,也欢迎告知我们:) — 我们会一直在这里提供帮助!  :)
 
timg.jpeg

对话 Kibana 之父:如果需要,你应该自己动手编写工具

medcl 发表了文章 • 2 个评论 • 3015 次浏览 • 2017-01-11 11:45 • 来自相关话题

转载:http://www.infoq.com/cn/news/2 ... nTool
Elastic 中国开发者大会 2016上,ELK 正式宣布更名为“Elastic Stack”,Elastic公司称其开源项目累计已经有8000万次下载。Elastic Stack 最新版本为5.0,从此,Elastic公司会对Elasticsearch、Kibana、Logstash、Beats、X-Pack进行统一规划以同版本号码发布。会上,Kibana 的原作者 Rashid Khan 进行了题为《Kibana 5.0: The Window into the Elastic Stack》。 PPT下载:http://elasticsearch.cn/article/122 

IMG_4857.gif


早在2001年,Rashid 就接触了运维工作,他的第一份工作是在摩根大通集团做网络运维管理分析员。2012年,Rashid 在美国一家媒体公司担任架构工程师,并且研发了 Kibana 的初始版本,那时他的目的是专门设计界面以适配 Logstash,如今 Kibana 已经逐渐演变成了 Elasticsearch 的分析平台。运维出身的他是在怎样的情况下开始了 Kibana 开发,Kibana 走到今天经历了什么,将来 Kibana 的发展会是怎样的?InfoQ 对 Rashid 进行了采访,以下文章来自于采访稿件的整理。

作为运维人员,我亟须优化日志搜索

开始的时候做运维工作遇到很多问题,on call待命,甚至在凌晨2点被叫醒;这种工作状态让我感到很厌烦。往往,在日志中可以发现问题所在,但是需要花费好久时间才能找到。

于是,我寻找有哪些开源软件可以做基本的日志搜索,然后发现了Logstash和与之配合使用的Elasticsearch。经过测试,我发现Elasticsearch速度很快并且提供我所需要的功能;然后我就开始编写一套非常简单的interface作为补充展示,大概花费了我几天的时间。这就是第一版Kibana的诞生过程,当时是采用PHP编写的,功能是可以展示日志并配有搜索入口,目的是把这个工具可以交付给我的boss,使得他无需我的参与便可以使用这个interface。需要提一句的是,Elasticsearch 对于Web编程很友好,并且日志数据按照日期排列。

在全职投入 Kibana 为 Elastic 公司工作之前,我一直从事运维工作并且我非常喜欢运维工作。因为这段实践经验帮助我体会到了运维人的问题和困难,这让我知道了需要创造一个什么样的工具。我依然认为运维是一个非常有挑战的工作,让所有的东西都正常地运转起来。

编程吧,动手创造自己的工具

的确,我是运维人员,但是我还自己动手开发工具。这在美国越来越普遍了,因为大家意识到,如果你可以编写代码,你的工作会轻松很多,代码可以代替你进行重复工作。通过代码实现自动化是正确的途径,没有人愿意不停地做同样的事情。

编写Kibana是因为我当时没有发现一个适合我的工具,于是我决定自己动手。第一版Kibana是用PHP写的,第二版是用Ruby,第三版之后是用JavaScript。我不害怕学习心得语言,因为学语言并不难,Ruby或者JavaScript的语言掌握仅仅是简单的熟悉语法,并没有接触到实际项目中复杂的事情。而重写Kibana的工作也并不复杂,因为其实Elasticsearch做的工作最重。

“哪种编程语言最好?”说实话,其实这个问题的讨论对我而言并不重要。重要的是,为你的工作选择恰当的语言。PHP在我心中仍然有一席之地,我认为它依然是一个好的语言,可能很多人有异议,但是我认为它简单易上手、稳定变化慢,相关工具也很容易上手。Node.js相对来说,比较复杂;Node社区也意识到这个问题,并且正在改进。比如说,当时我选择了Ruby重写Kibana,是因为Logstash是用JRuby写的,Elasticsearch 使用Java写的(JRuby可以理解为Ruby可以跑在JVM里面)。当时想把 Kibana 的 Ruby那个版本是因为想放到Logstash中,但是没有成功。所以,接下来我们研发了Kibana 3 。

在开发Kibana之前,我用过Graphite,但是为什么依然不满足呢?首先,Graphite很棒,所有关于数字、指标、时间序列的事情。但是那个时候,我需要的是一个可以做日志搜索的东西,需要有一个Dashboard可以给出一个图片。我非常希望从日志中获得信息并且把它们和预定的指标绑定在一起,实际上这些幕后工作都是Elasticsearch做的,并且速度真的快很多。此外需要考虑到扩展性,Graphite对于它适合的大小还算可以,即使超过了极限,更多的数据对应着更多的CPU消耗;但是想扩展很多的话,就很困难了,这一点上Graphite还有很多可以提升的空间,Elastic Stack就可以很轻松地实现。

不过,我依然很喜欢Graphite,我也依然认为这是一个有需求的工具,并且它其实是可以和Elasticsearch、Kibana结合在一起使用的。Architecture dependent的问题困扰了很多人, 比如32bit和64bit两者之间,即便是传输一个文件也不能工作,这是一个非常可怕的事情。Graphite 解决了这个问题,并且界面很美,功能强大 。Kibana也解决了很多相似的问题, 尤其是加上了Elasticsearch的配合,解决了许多我在做运维工作时总是非常想做的工作。

从来没有犹豫过是否开源

12岁的时候就开始接触开源项目了,所以在写Kibana的时候从来没有犹豫过要不要把它开源。

开始的时候我们只是把需求写在纸上,然后一条条做。放到Github之后,看到下载量不断上升我们感到很吃惊。我们没有想到,原来这么多人都面临这同样的问题,没有想到大家对这样的一个开源项目如此需要。开源的目的就是为了能帮助人们,最初我也曾疑惑有可能根本没有人用;然后发现越来越多的人在讨论、使用它。现在Elastic Stack是一个开源整体,把个人的事业career放在服务其他人的开源项目上,并能收获到好的反馈,这让我们感到很开心、很欣慰。

当时的小愿望,现在的大公司

Kibana第一版存在仅仅几周。是因为我开始使用Ruby进行重写,这大概花费了两周的时间。因为Logstash使用Ruby写的(即便当时我并不会Ruby),而我的目的就是让Kibana适配Logstash和Elasticsearch,让三者在一起可以协作获得更多的信息。当时我的想法就是让三个工具可以无缝衔接起来好似一个工具一样,有趣的是,这仅仅是当时我自己的一个愿望,后来Elasticsearch的人联系我问要不要合并在成为同一家公司,我们才发现彼此的看法竟然不谋而合。

elastic-logo-H-full-color.jpg


我现在依然是on call的。在 Elastic 公司,我们有on call轮班制。其实这是与用户交流的机会,这是我们 Elastic 每一个开发者都非常珍视的机会。在对用户支持的过程中,我们可以更清晰地了解用户的需求和真实使用情况;还有一些其他方式,比如会议、沙龙、见面会等,任何可以帮助我们与社区连接的。在我看来,在用户发生问题时,你在他身边并且帮助修复问题:没有比这个更好的工作方式。所以,on call不是折磨,是机会。

Kibana的下一步:数据挖掘、角色报表

1、数据挖掘,精益求精

最开始在做日志分析的那个时候,坦率地讲,我并没有关联到了Data mining。因为那时只是想先把问题弄清楚。但是在把所有的问题都解决完(这些并不难,只是花时间而已),实现了最初我们想要的Kibana之后,运维的工作量就大大减少了。

一切都运转得很顺利之后,我们开始思考怎样能把事情做得越来越好,尽量少地产生问题。我们可以获得数据,并且发现了一些问题发生的规律:问题的发生节点,比如说往往半夜三点、发布新版本之后;问题的发生频率,哪些问题非常热门,我们需要把对应的工作放在CDN上;问题的优化处理,发生问题之后如何最快地回滚。机器学习很强有力,而且对于运维人员而言,越少的红色提示越幸福。但是目前我的考虑是,能做到提前预警就已经很棒了。

基于这些思考,我们认为需要开始进行数据挖掘的工作了,这样才把事情做得越来越好,才能更大程度地帮助公司用户。在五六年前,很少会有人想到运维团队可以给出商业业务的指导意见,但是现在这开始越来越普遍。

2、接下来,Dashboard不会只有public一种

此前Kibana的Dashboard是完全公开的,没有角色区分。我知道一些其他的工具提供了包边权限区分的功能。最初的时候,只是想保持事情的简单化,Kibana并没有考虑到把Dashboard做成基于角色的,我们考虑更多的是产品易用性、功能,而没有打算触及安全模块。对于我们自己而言,这并不是过去那些年优先级第一的事项。最开始Kibana的主要矛盾是怎样把内容展现出来,打造Elasticsearch的良好用户界面,所以那个时候是界面是对所有用户可见的。而权限的控制我们是在Elasticsearch上面实现的,搜索、索引、集群操作添加是在Elasticsearch,也就是说我们首先Elasticsearch中实现数据层的安全。

接下来,我们考虑怎样把安全性延展到Kibana中,对不同角色进行区分化的搜索展示。(此前,有一个插件可以满足在Kibana中进行 Elasticsearch 用户的控制。代码是开源的,任何公司都可以编写自己的安全模块,并且我们也乐意帮助他们)在决定做一件事情之后我们就希望把一件事情做得非常好,而不是半途而废。

Kibana in Elastic Stack 5.0

Snip20170111_11.png


研发情况

研发出新功能的第一版本通常很快,但是需要不断的测试确保所有运转正常。Elastic Stack5.0 的所有功能大概花费了9个月的研发时间。在决策哪些功能需要研发时,我们有几周的考虑时间,还会参考社区中的反馈。然后我们还会给开发者一些自主空间,我们试着避免总是给某些人下发某些任务。我们认为最好主意并不来自与管理层或者经理,而是来自于那些与用户交流频繁的软件工程师,花费很多时间做客户支持的同事。会面通常是远程的,因为我们是个分布式的公司,公司成员分布于30多个国家,一共470多人。Kibana部分的研发、测试和运营人员一共有20多人。

如果有两个程序员所做的事情是一样的话,没有关系这不是重复劳动,反而可以让产品更加优化,两个人可以互相讨论加速功能研发;否则的话产品会被程序员打上过强的个人烙印,最终让产品交付给客户的是整个团队。

会一直并且只是配合Elasticsearch

是的,我们没有其他 datasource 的计划,因为我们大部分的使用case是要有时间序列的。

最开始融合在一起的是 Elasticsearch 和 Logstash,然后 Kibana 参与进来。在这个融合的过程中,遇到任何冲突或者改变,我们的评判标准都是怎样对用户而言更友好。举例说明,安全问题最佳的解决是在数据层,搜索非常占用内存,使用ES可以做很复杂的事情,在旧版本的 Kibana 中,可以使用 Elasticsearch 的 API,但是这拖缓了速度,并且用户可能会做一些危险的事情。在 Kibana 和 Elasticsearch 融合之后,我再也没有那样做了,对于一些重的内存需求工作不会在UI层(Kibana)而是会放到数据层(ES),用最少的内存,让尽可能多的计算脱离 JVM heap ,放入socket breaker,让我们管理更简洁干净并做到在UI可追踪。

Kibana的美学

Kibana最初的设计师只是我一个人,现在当然我们有了自己的很优秀的设计师,这是很被看重的部分,没有外包出去。因为我们需要和设计团队频繁地交流,不断地给予反馈,和工程团队。这是我们公司文化的一个重要部分。

你想一想这是运维人员需要终日面对的工具,没有人愿意一直看着丑的东西;此外,也希望Kibana可以让运维人员的boss们感到惊艳,我们希望可以帮助使用者产生非常美的工作。

写在最后

在采访结束时,InfoQ问Rashid是否可以给广大读者一些建议,Rashid想了想说:


如果你有一个想法,把它code出来,build起来。不要等其他人的开源代码,有可能你会等到,但是有可能你永远等不到。在你写出来之后,你没准会收获惊喜。


 
1.png