logstash 时间问题
Logstash • xiaoke 回复了问题 • 4 人关注 • 3 个回复 • 2971 次浏览 • 2018-12-04 20:28
Elasticsearch配置Watcher运行时报动态方法找不到
回复Elasticsearch • zyy 发起了问题 • 1 人关注 • 0 个回复 • 3426 次浏览 • 2018-12-04 09:45
elasticsearch的索引消费慢问题。
Elasticsearch • godma 回复了问题 • 5 人关注 • 7 个回复 • 2265 次浏览 • 2018-12-10 15:27
Elasticsearch 6.0 命令行Option -E启动报错,求大佬指导,感谢!
Elasticsearch • rochy 回复了问题 • 2 人关注 • 1 个回复 • 4018 次浏览 • 2018-12-03 18:54
logstash5.6.13启动后一直刷WARN日志
Logstash • ericaguo 回复了问题 • 2 人关注 • 1 个回复 • 10168 次浏览 • 2019-01-30 17:20
关于java api使用deleteByQuery的问题?
回复Elasticsearch • vikooooooo 回复了问题 • 1 人关注 • 2 个回复 • 4023 次浏览 • 2018-12-03 17:17
子聚合全局排序
Elasticsearch • zz_hello 回复了问题 • 3 人关注 • 2 个回复 • 2949 次浏览 • 2018-12-13 10:32
deprecation.log的作用?
Elasticsearch • rochy 回复了问题 • 2 人关注 • 1 个回复 • 2539 次浏览 • 2018-12-03 19:06
5.X版本ES的主分片个数怎么修改
Elasticsearch • dbdb5269 回复了问题 • 4 人关注 • 4 个回复 • 6233 次浏览 • 2018-12-03 18:24
【告警设置】如何配置watcher检测同一用户一小时内登录失败超过5次,具体的input配置怎么写?(以AD认证日志为例)
Kibana • xiaoyanghapi 回复了问题 • 2 人关注 • 1 个回复 • 2429 次浏览 • 2018-12-27 16:03
CVE-2018-17244 这个漏洞如果已经使用search-guard-ssl进行加固后,还会存在这个问题吗?
Elasticsearch • zqc0512 回复了问题 • 3 人关注 • 2 个回复 • 3464 次浏览 • 2018-12-03 17:14
es能查看请求操作那个索引吗?
Elasticsearch • zz_hello 回复了问题 • 2 人关注 • 1 个回复 • 1705 次浏览 • 2018-12-03 11:14
社区日报 第467期 (2018-12-03)
社区日报 • cyberdak 发表了文章 • 0 个评论 • 1619 次浏览 • 2018-12-03 10:09
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
Advent • vvv 发表了文章 • 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版本)。但是呢,有几个问题:
- kibana在编译的时候需要去aws上下载一些安装包,会导致正常情况下国内访问十分缓慢。(编译命令提供了几个参数可以关掉下载一些如nodejs等,但是还是很慢)
- build十分消耗cpu/gpu (mac的iterm2启动会做gpu优化)
解决办法:
- 如果你能解决网络问题,而且有性能不错的编译机器。这都不是问题
- 如果你对kibana的代码更改都是无侵入的(比如只是写了一些插件扩展),那么你可以去官方下载他们的snapshot版本
- 当然,如果你用的kibana版本就是release版本并且你的扩展都是插件,那么你直接用官方的release版本就好了
库的选型
- server端:
nodejs具有十分丰富的生态,你可以找到很多nodejs相关的库。kibana本身的后端web框架是基于node的hapi的。hapi是一个沃尔玛团队维护的企业级框架,其本身也有很多扩展。当你需要对web框架做一些扩展的时候,可以优先想到去hapi官方看下
- ui端:
kibana有一套漂亮的ui,其本身也是单独剥离成了一个库,方便引入使用。当然你也可以引入一些其他的前端库来满足你的具体业务需求。推荐尽量使用原生的eui和kibana源码里面的一些封装。这样让你的引入更少,更容易维护。
国际化
国际化是kibana很早就开始立的一个项。这块的进度也是越来越快。新版的kibana里面用@kbn/i18n这个package来统一javascript,html, nodejs做国际化的事情(具体大家可以看下这个package的readme)。国际化这块有一些建议:- 扩展插件的时候养成国际化的习惯
- 默认的语系不建议再次设置成一个json文件。因为最新的@kbn/i18n会提供一个默认的文本,用于默认情况下展示。所以我们是没必要重复去维护一个默认的语言翻译json
- 假设你的默认语言是英文(和kibana一致),只有当你想要替换kibana默认翻译的时候,才去覆写en.json
- 当你对原生kibana有国际化这种需求的时候,建议独立出一个i18n翻译的插件去维护各个语言翻译相关的东西
- 目前kibana的国际化还未100%,如果你想知道目前哪些文本内容是支持国际化的。可以尝试如下脚本:
<br /> node scripts/extract_default_translations \<br /> --path src/core_plugins/kibana \<br /> --output /tmp<br />
- 各个插件的之间的翻译文件独立,即使是相同的翻译内容。插件文本内容养成预留国际化的习惯
总结
上面列举了一些我平时的一些经验。时间篇幅有限,未能一一列举。希望可以帮到大家吧。也希望可以和大家多多交流