elk5.2升级到7.17的问题
5.2.x ——》 5.6 ——》 6.8 ——》 7.17.12
5.2.x ——》 5.6,直接下载5.6版本的elasticsearch(后面简说成es)、kibana、logstash,然后修改es的data目录指向原5.2的版本就能正常启动。
直到遇到5.6升级到6,6升级到7,开始就比较麻烦了(尤其到7,要解决各个索引重建的问题,因为新版本的索引跟5版本是不兼容的!)
先说下一个非常非常重要的点:升级失败会污染数据,导致不可用,而且还不可逆!什么意思?es配置文件:elasticsearch.yml 有个配置参数 path.data,上面说过,5.2到5.6的升级,5.6版本的es参数path.data直接指向5.2的就能用。但如果好巧不巧,例如后面想走捷径从5.6直接升到7(实际操作就是rpm 安装es、kibana、logstash的包),path.data改成5.6版本的(实际就是5.2的数据目录)启动的时候发现es再也无法启动了,你想用回5.6甚至是5.2的elk去启动也起不来。因为这个path.data 被新版本的es污染了,导致无法回退!!!
所以其实最正确的方法是,我们从最原始的5.2的path.data (假设叫A path.data)复制一份一摸一样的,假设叫B path.data,升级时,es是指向B的,而不是原来的A。
问题一:5.6升级到6.8.23
最大的问题是6版本的kibana起不来,说kibana索引需要重建,令人欣慰的是,不是数据索引要重建(我的测试环境有十几个)。虽然6版本的kibana起不来,但是6版本的es是能起来的,如果想看kibana控制台的,可以用回 5.6 的kibana启动。
kibana 6 起不来报错图:
PUT .kibana/_settings {"index.blocks.write":true}
3、重新索引.kibana 为 .kibana-6(linux命令行执行的)
curl -X POST "localhost:9500/_reindex?pretty" -H 'Content-Type: application/json' -d' { "source": { "index": ".kibana" }, "dest": { "index": ".kibana-6" }, "script": { "inline": "ctx._source = [ ctx._type : ctx._source ]; ctx._source.type = ctx._type; ctx._id = ctx._type + \":\" + ctx._id; ctx._type = \"doc\"; ", "lang": "painless" } } '
curl -X POST "localhost:9500/_aliases?pretty" -H 'Content-Type: application/json' -d' { "actions" : [ { "add": { "index": ".kibana-6", "alias": ".kibana" } }, { "remove_index": { "index": ".kibana" } } ] }
(1)未处理前叫:.kibana
(2)处理后叫:.kibana-6
问题二:6.8.23升级到7.17.12
官方及网上很多都叫用kibana自带的7.0升级助手来实现,长这样:
有些索引可以自动处理(处理后,会新建一个一摸一样前缀为 reindex_ 的索引),但有些(譬如我设置了nginx日志格式,在5.2的版本通过filebeat写入的)说无法重建,只能手动处理(又是考英文的时候)
手动处理这些无法自动重建的索引时,记得先做好es的快照(具体可以百度)
赶着睡觉,直接贴步骤
PUT /索引A/_settings { "index": { "refresh_interval": "-1", "number_of_replicas": "0" } }
3、恢复及创建索引访问别名
PUT /new-索引A/_settings { "index": { "refresh_interval": "5s", "number_of_replicas": "1" } } POST /_aliases { "actions" : [ { "add" : { "index" : "new-索引A", "alias" : "索引A_latest" } }, { "remove" : { "index" : "索引A", "alias" : "索引A_latest" } } ] } 删除旧索引 DELETE /索引A
然后我们访问既可以是 new-索引A 也可以是 索引A _latest
参考:
https://zhuanlan.zhihu.com/p/548858458
https://blog.csdn.net/qq_22049773/article/details/103243852
最后,我是建议大家非不得已,能用6.8就用6.8吧,7的kibana上有很多新功能,也涉及很多权限报错问题,要逐一解决,例如下面这个,而且用起来非常不习惯。