Elastic Stack5.2.2升级到6.0.0注意事项

最近把Elastic Stack从5.2.2版本升级到6.0.0版本,性能确实有所提高,文档记录了升级过程中需要注意的一些问题。


架构图

一、Filebeat

6.0版本filebeat prospectors中的document_type被禁用,原来的topic: '%{[type]}'获取文档类型的方式不可用,但是引入了fields,后面映射模板也会用到。 1、document_type: yewuname 原来的Index名字为filebeat-yewuname-2018.01.19这样的按照天分割的,升级后document_type不支持了,需要修改为字段加type的形式如下fields: document_type: yewuname 2、输出kafka也需要修改topic: '%{[fields.document_type]}' 3、logstash生成index也需要由原来的index => "filebeat-%{type}-%{+YYYY.MM.dd}"改为index => "filebeat-%{[fields][document_type]}-%{+YYYY.MM.dd}",最终index命名为filebeat-yewuname-* 4、最后和Elasic支持人员沟通后得知,客户端filebeat不升级也可以,不影响使用

二、Logstash

1、主要是自定义映射模板需要修改,模板这块儿改动比较大,可以先使用默认的获取格式后再修改,然后得出自己的模板运用,使用了geoip定位,相关类型需要修改,最终模板如下:

cat /etc/logstash/templates/nginx_template
{
  "template" : "filebeat-*",
  "settings" : {
    "index.refresh_interval" : "5s",
     "index.number_of_shards": "8",
     "index.number_of_replicas": "1"
  },
    "mappings": {
      "_default_": {
        "properties": {
          "@timestamp": {
            "type": "date"
          },
          "@version": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "agent": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "beat": {
            "type": "object"
          },
          "clientRealIp": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "geoip": {
            "properties": {
              "city_name": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "continent_code": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "country_code2": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "country_code3": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "country_name": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "dma_code": {
                "type": "long"
              },
              "ip": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "latitude": {
                "type": "float"
              },
              "location": {
                    "type": "geo_point"
              },
              "longitude": {
                "type": "float"
              },
              "postal_code": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "region_code": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "region_name": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "timezone": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          },
          "http_host": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "method": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "referrer": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "request_uri": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "responsetime": {
            "type": "float"
          },
          "size": {
            "type": "long"
          },
          "status": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "type": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "upstreamhost": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "url": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
}

2、输出到elasticsearch有些参数不支持了,需要注释flush_size,否则会报错The setting flush_size in plugin elasticsearch is obsolete and is no longer available. This setting is no longer available as we now try to restrict bulk requests to sane sizes. See the 'Batch Sizes' section of the docs.

output {    
  elasticsearch {
    hosts => ["192.168.88.240:9200","192.168.88.241:9200","192.168.88.242:9200","192.168.88.243:9200","192.168.88.244:9200"]
    index => "filebeat-%{[fields][document_type]}-%{+YYYY.MM.dd}"
    manage_template => true
    template_overwrite => true
    template_name => "nginx_template"
    template => "/etc/logstash/templates/nginx_template"
    #flush_size => 20000
    #idle_flush_time => 5
  }
} 

三、Elasticsearch

主要变更是该版本的一个Index只支持一个type了 官方提供有滚动升级,按照这个步骤尝试了下没有成功,后删数据硬升级,如果大家想尝试,步骤如下 滚动升级 https://www.elastic.co/guide/en/elasticsearch/reference/5.6/rolling-upgrades.html

1、Disable shard allocation 例子:

curl -XPUT '192.168.88:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}
'

例子:

curl -XPUT '192.168.88:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
> {
>   "transient": {
>     "cluster.routing.allocation.enable": "none"
>   }
> }
> '
{
  "acknowledged" : true,
  "persistent" : { },
  "transient" : {
    "cluster" : {
      "routing" : {
        "allocation" : {
          "enable" : "none"
        }
      }
    }
  }
}

2、Stop non-essential indexing and perform a synced flush (Optional) curl -XPOST '192.168.88:9200/_flush/synced?pretty' 可选的,忽略

3、Stop and upgrade a single node /etc/init.d/elasticsearch stop rpm -e elasticsearch-5.2.2-1.noarch rpm -ivh elasticsearch-6.0.0.rpm chkconfig --add elasticsearch chkconfig elasticsearch on cp elasticsearch.yml.rpmsave elasticsearch.yml 注意权限,卸载rpm包再安装rpm包后elasticsearch的uid与gid会变化 chown elasticsearch:elasticsearch /data/eslog/ -R chown elasticsearch:elasticsearch /data/esngx1/ -R chown elasticsearch:elasticsearch /data/esngx2/ -R

4、Upgrade any plugins 没有第三方插件,忽略

5、Start the upgraded node curl -XGET '192.168.88:9200/_cat/nodes?pretty'

6、Reenable shard allocation

curl -XPUT '192.168.88:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}
'

7、Wait for the node to recover curl -XGET '192.168.88:9200/_cat/health?pretty' curl -XGET '192.168.88:9200/_cat/recovery?pretty'

8、Repeat

四、Kibana

1、index名字是字段type加通配 2、导出老visualize模板后所有的visualize里面.raw改成.keyword,然后导入时dashboard需要与index一一对应

五、Grafana

同样修改数据源的index名字与查询语法.raw关键字为.keyword即可

六、Elastalert

由于https://github.com/Yelp/elastalert/releases 安装部署是最新版本是v0.1.25还不支持elasticsearch6.0,后参考https://github.com/Yelp/elastalert/pull/1426 修

改/root/elastalert-0.1.25/elastalert目录下elastalert.py、create_index.py、ruletypes.py、test_rule.py四个文件,最后安装(备注以后安装后可以直接复制该目录到其他服务器上

安装,不需要再修改源码) 现在v0.1.26版本更新就支持elasticsearch6.0了,直接更新新版本就行。

七、其他的kafka、nginx等不需要调整。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漫漫全栈路

Nginx配置文件nginx.conf详解

最近折腾Ubuntu比较多,也基本原理了Windows和IIS了,论一个软狗的堕落史。既然换到Ubuntu系统上来,勉强算个web开发人员的我当然用的最多的就...

5437
来自专栏python学习指南

python爬虫(六)_urllib2:handle处理器和自定义opener

本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib...

2768
来自专栏极客猴

Django 实战2:利用 Session 实现自动登录机制

上篇文章中讲到 Django 如何启动以及配置 sessions 功能。sessions 功能用是跟踪用户的状态,经常结合 Cookie 功能实现自动登录功能。...

1923
来自专栏along的开发之旅

windows下安装调教ubuntu 17.10步骤

安装ubuntu好多次了, 每次安装都有一些重复步骤要走, 但是这些步骤又比较细, 不用的时间一长就忘记了, 所以在这里单独记录一下, 省的每次都要google...

732
来自专栏木头编程 - moTzxx

Laravel+Layer 图片上传功能整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

5632
来自专栏Script Boy (CN-SIMO)

Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

转载请注明出处:CN_Simo。 题解:   本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界。 本来计划是讲解Qt源码静态编译...

4151
来自专栏jojo的技术小屋

原 荐 七牛 JSSDK 配置+常见问题

作者:汪娇娇 时间:2017年7月7日 一、铺垫 依靠七牛上传图片,其实有很多方法,先说说有哪些方法,以及这些方法各自的优缺点吧(移动端)。 way1:前端只负...

6725
来自专栏andychai

前端静态资源缓存策略

页面加载提速是战场,首当其冲要优化的就是 静态资源(js|css) 的加载速度。我们小组去年基于Vue开发了一个积分商城单页面应用。本文旨在与大家分享在单页应用...

6299
来自专栏Jed的技术阶梯

Linux集群系统时间同步

要做到服务器集群的时间同步,集群中各台机器的时区必须相同的,我们在国内就使用中国时区,如果你的机器的时区不是"Asia/Shanghai",需要修改时区

8854
来自专栏恰同学骚年

.NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控

  App.Metrics是一款开源的支持.NET Core的监控插件,它还可以支持跑在.NET Framework上的应用程序(版本 >= 4.5.2)。官方...

1981

扫码关注云+社区