Q:非洲食人族的酋长吃什么?

logstash 时间问题

Logstashxiaoke 回复了问题 • 4 人关注 • 3 个回复 • 2971 次浏览 • 2018-12-04 20:28 • 来自相关话题

Elasticsearch配置Watcher运行时报动态方法找不到

回复

Elasticsearchzyy 发起了问题 • 1 人关注 • 0 个回复 • 3426 次浏览 • 2018-12-04 09:45 • 来自相关话题

elasticsearch的索引消费慢问题。

Elasticsearchgodma 回复了问题 • 5 人关注 • 7 个回复 • 2265 次浏览 • 2018-12-10 15:27 • 来自相关话题

Elasticsearch 6.0 命令行Option -E启动报错,求大佬指导,感谢!

Elasticsearchrochy 回复了问题 • 2 人关注 • 1 个回复 • 4018 次浏览 • 2018-12-03 18:54 • 来自相关话题

logstash5.6.13启动后一直刷WARN日志

Logstashericaguo 回复了问题 • 2 人关注 • 1 个回复 • 10168 次浏览 • 2019-01-30 17:20 • 来自相关话题

kafka不出数

Beatszqc0512 回复了问题 • 3 人关注 • 2 个回复 • 2057 次浏览 • 2018-12-11 15:32 • 来自相关话题

关于java api使用deleteByQuery的问题?

回复

Elasticsearchvikooooooo 回复了问题 • 1 人关注 • 2 个回复 • 4023 次浏览 • 2018-12-03 17:17 • 来自相关话题

子聚合全局排序

Elasticsearchzz_hello 回复了问题 • 3 人关注 • 2 个回复 • 2949 次浏览 • 2018-12-13 10:32 • 来自相关话题

deprecation.log的作用?

Elasticsearchrochy 回复了问题 • 2 人关注 • 1 个回复 • 2539 次浏览 • 2018-12-03 19:06 • 来自相关话题

5.X版本ES的主分片个数怎么修改

Elasticsearchdbdb5269 回复了问题 • 4 人关注 • 4 个回复 • 6233 次浏览 • 2018-12-03 18:24 • 来自相关话题

【告警设置】如何配置watcher检测同一用户一小时内登录失败超过5次,具体的input配置怎么写?(以AD认证日志为例)

Kibanaxiaoyanghapi 回复了问题 • 2 人关注 • 1 个回复 • 2429 次浏览 • 2018-12-27 16:03 • 来自相关话题

CVE-2018-17244 这个漏洞如果已经使用search-guard-ssl进行加固后,还会存在这个问题吗?

Elasticsearchzqc0512 回复了问题 • 3 人关注 • 2 个回复 • 3464 次浏览 • 2018-12-03 17:14 • 来自相关话题

es能查看请求操作那个索引吗?

Elasticsearchzz_hello 回复了问题 • 2 人关注 • 1 个回复 • 1705 次浏览 • 2018-12-03 11:14 • 来自相关话题

社区日报 第467期 (2018-12-03)

社区日报cyberdak 发表了文章 • 0 个评论 • 1619 次浏览 • 2018-12-03 10:09 • 来自相关话题

1. Opbeat已死,请用Elastic APM
http://t.cn/EyhRQRJ

2.Amazon Elasticsearch Service 中的韩语分析程序支持
http://t.cn/EyhmEHc

3. Elasticsearch在华泰证券内部的应用实践
http://t.cn/EyhuaFC

编辑:cyberdak
归档:https://elasticsearch.cn/article/6169
订阅:https://tinyletter.com/elastic-daily

Day 3 - kibana二次开发tips

Adventvvv 发表了文章 • 2 个评论 • 13656 次浏览 • 2018-12-03 09:11 • 来自相关话题

介绍


大家好,我是vvv,这个名字和王者荣耀AG超玩会中的vv没有一毛钱关系,随意取的一个的名字,后来发现貌似不能改了。做过一些数据产品,正是这段时间里开始接触elasticstack,对kibana做过一些二次开发。今天主要想写一些开发过程中的一些tips,希望可以给大家带来一些帮助。


技术栈分析


既然我们的主题是kibana,我们先来看下kibana的主要技术栈。很早开始kibana就开始基于nodejs (hapi框架) + angular(1.x)来进行开发,后来引入了react。kibana本身的代码也经过了多次重构剥离。现在的kibana的代码结构更加清晰


前提

elasticstack发展迅速,现在已经是6.5版本了。我们今天要介绍的是6.x系列的版本,6.x各个版本会有一些细微差异,但大致一样


tips


官方提供kibana下载版本主要是编译后的release版本。如果要基于kibana做二次开发,我们需要去https://github.com/elastic/kibana 上面下载对应的分支。官方有相应的文档去说明如何安装开发环境。我这里有一些tips:

设置国内yarn源

<br /> yarn config --global set 'registry <a href="https://registry.npm.taobao.or" rel="nofollow" target="_blank">https://registry.npm.taobao.or</a>g'<br />

一些耗时需要编译的包可以全局安装

<br /> yarn global add node-sass<br />

多环境nodejs版本

<br /> 不同kibana版本对nodejs版本要求也不一样,为了减少坑我们通常和官方要求的保持一致,如果你的电脑上需要运行多套不同版本的nodejs,那么你可能需要zsh + nvs, 会根据根目录的.node-version版本自动切换当前使用的node版本<br />

IDE推荐

<br /> 推荐使用vscode,轻量免费,支持很多插件。可以安装个prettier插件,帮助对代码做更好的格式化<br />

debug

如果你用的不是上面我推荐的vscode的话,请忽略这一条。对于使用vscode的同学,首先在vsocde的设置里面开启:

<br /> "autoAttach": "on"<br />

然后在vsocode里面打开一个终端,输入:

<br /> node --inspect-brk scripts/kibana.js --dev --oss --no-base-path<br />
这个时候vscode就会在启动kibana dev模式的同时attach一个进程进去用于断点调试,对于调试node层非常方便。也能帮助你更好的阅读kibana源码

本地es

我们知道kibana是长在es之上,想要运行kibana怎么少得了es。kibana又一些命令命令可以快速的启动一个es环境:

下载并启动一个当前kibana需要的es版本
<br /> yarn es snapshot<br />

灌入一些测试数据(如果需要定制灌入的数据可以看下这个脚本的帮助内容,加-h参数即可)
<br /> node scripts/makelogs<br />

编译

kibana代码在release之前是要进行编译的。kibana提供了方便的命令行进行编译,甚至跨平台的交叉编译(生成不同平台的kibana release版本)。但是呢,有几个问题:

  1. kibana在编译的时候需要去aws上下载一些安装包,会导致正常情况下国内访问十分缓慢。(编译命令提供了几个参数可以关掉下载一些如nodejs等,但是还是很慢)
  2. build十分消耗cpu/gpu (mac的iterm2启动会做gpu优化)

    解决办法:

  3. 如果你能解决网络问题,而且有性能不错的编译机器。这都不是问题
  4. 如果你对kibana的代码更改都是无侵入的(比如只是写了一些插件扩展),那么你可以去官方下载他们的snapshot版本
  5. 当然,如果你用的kibana版本就是release版本并且你的扩展都是插件,那么你直接用官方的release版本就好了

    库的选型

  6. server端:
    nodejs具有十分丰富的生态,你可以找到很多nodejs相关的库。kibana本身的后端web框架是基于node的hapi的。hapi是一个沃尔玛团队维护的企业级框架,其本身也有很多扩展。当你需要对web框架做一些扩展的时候,可以优先想到去hapi官方看下

  7. ui端:
    kibana有一套漂亮的ui,其本身也是单独剥离成了一个库,方便引入使用。当然你也可以引入一些其他的前端库来满足你的具体业务需求。推荐尽量使用原生的eui和kibana源码里面的一些封装。这样让你的引入更少,更容易维护。


    国际化

    国际化是kibana很早就开始立的一个项。这块的进度也是越来越快。新版的kibana里面用@kbn/i18n这个package来统一javascript,html, nodejs做国际化的事情(具体大家可以看下这个package的readme)。国际化这块有一些建议:
  8. 扩展插件的时候养成国际化的习惯
  9. 默认的语系不建议再次设置成一个json文件。因为最新的@kbn/i18n会提供一个默认的文本,用于默认情况下展示。所以我们是没必要重复去维护一个默认的语言翻译json
  10. 假设你的默认语言是英文(和kibana一致),只有当你想要替换kibana默认翻译的时候,才去覆写en.json
  11. 当你对原生kibana有国际化这种需求的时候,建议独立出一个i18n翻译的插件去维护各个语言翻译相关的东西
  12. 目前kibana的国际化还未100%,如果你想知道目前哪些文本内容是支持国际化的。可以尝试如下脚本:

    <br /> node scripts/extract_default_translations \<br /> --path src/core_plugins/kibana \<br /> --output /tmp<br />
  13. 各个插件的之间的翻译文件独立,即使是相同的翻译内容。插件文本内容养成预留国际化的习惯



    总结


    上面列举了一些我平时的一些经验。时间篇幅有限,未能一一列举。希望可以帮到大家吧。也希望可以和大家多多交流