线上ELK运行一段时间了,但是各种小问题不断,logstash经常挂掉,kibana查询缓慢等等,现在决定升级ELK组件到最新版本,看看效果。


一 升级Elasticsearch

Elasticsearch原来的版本是1.7.1,Elasticsearch最新版本是2.3.3

在升级之前首先查看的就是官方文档关于升级的注意事项

1.查看Breaking Changes说明

Elasticsearch的升级总体原则就是:

  大版本升级需要重启整个Elasticsearch集群

  小版本升级可以一次升级一个集群节点

由于我们这次升级的版本跨度比较大,所以需要详细地了解版本变更


2.使用elasticsearch-migration插件帮助诊断升级

elasticsearch-migration这个插件可以帮助检查是否可以直接升级当前版本到下一个版本,或者是否在升级之前对现有的数据或者集群做一些更改。

目前遇到一个需要更改的,Elasticsearch2.0之后不能使用带" ." 的字段,例如nginx.client这种字段是不能再用了,可以改成nginx_clent这种形式。


Elasticsearch2.0以下版本安装插件

./bin/plugin -i migration -u https://github.com/elastic/elasticsearch-migration/releases/download/v1.18/elasticsearch-migration-1.18.zip


通过http://xxxx:9200/_plugin/migration/

这种url访问,然后根据提示操作


3.升级之前备份数据


4.升级新版本,重启整个Elasticsearch


在升级的过程中注意查看日志,看看是否有报错信息,对于每个报错信息搜索相应的解决办法.








二 升级Logstash

Logstash由版本1.5.5升级到2.3.3

新版本增加了些有用的功能,修复了之前的一些BUG,详细的可以查看官方文档

可以动态加载配置文件

从Logstash2.3开始可以设置Logstash自动检查和加载配置文件

bin/logstash -f apache.config --auto-reload

Logstash默认会每隔3秒检查配置变更,可以通过 --reload-interval 指定检查间隔时间

如果想要强制重新加载可以使用SIGHHUP信号


可以在配置文件中引用变量

input {
  tcp {
    port => "${TCP_PORT:54321}"
  }
}


核心组件使用Java重写,性能得到提升

升级ELK到最新版本_earch

升级ELK到最新版本_logstash_02



使用bin/logstash-plugin替代bin/plugin



三 升级Kibana

wget https://download.elastic.co/kibana/kibana/kibana-4.5.1-linux-x64.tar.gz








升级完后,再也没有收到logstash 挂掉的报警了









参考文档:

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/setup-upgrade.html

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/breaking-changes.html

https://github.com/elastic/logstash/blob/2.3/CHANGELOG.md#233-june-14-2016

https://github.com/elastic/elasticsearch-migration/tree/1.x