前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云 Elasticsearch 实战篇(十九) 使用 Curator 管理索引

腾讯云 Elasticsearch 实战篇(十九) 使用 Curator 管理索引

原创
作者头像
南非骆驼说大数据
修改2020-03-14 15:00:31
3.3K0
修改2020-03-14 15:00:31
举报

前言 |

Curator 是 Elastic 官方发布的一个管理 Elasticsearch 索引的工具,可以完成许多索引生命周期的管理工作,例如清理创建时间超过7天的索引、每天定时备份指定的索引、定时将索引从热节点迁移至冷节点等等。那么今天我们就来讲讲Curator的入门、操作、使用.

一、Curator到底能做什么?

首先, 我们访问一下Curator官网: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html

通过官网我们可以知道,Curator目前最新版本是5.8 ,它具有以下这些功能:

curator功能
curator功能

那么curator的功能总结如下:(对索引的管理维护!)

  • 为别名(Alias)添加或移除索引
  • 创建索引
  • 删除索引
  • 关闭索引
  • 删除快照
  • 打开已经关闭的索引
  • 更改分片路由配置
  • 强制合并索引
  • 重建索引(包括从远程的集群)
  • 更改索引每个分片的副本数量
  • 为索引创建快照
  • 从快照还原
  • rollover indices(当某个别名指向的实际索引过大的时候,自动将别名指向下一个实际索引)

其次:我们来看一下 ES---Curator 版本间的对应关系

ES-Curator对应关系
ES-Curator对应关系

因为我们的ES最新版已经到了7.6了,所以,我们的curator版本也不能太低了,所以一般都是选择5.6或者5.8 ,那么本文将以ES 6.8.2 、Curator5.8来讲解他们之间的应用。

二、Curator的安装、使用

安装条件:CVM云主机 腾讯ES集群(也可以自己搭建虚拟环境) CVM与ES同在一个VPC

第一步:在CVM上,通过 pip 安装 curator 包 使用命令:pip install elasticsearch-curator (注意:如果提示pip命令无法找到,则需要先安装PIP工具包,可以参考链接:https://www.jianshu.com/p/ee5b116914bb

安装curator工具包
安装curator工具包

在安装的最后,发现报错“ERROR: Cannot uninstall 'requests'. It is a distutils installed project and thus we cannot accurat”

curator报错
curator报错

解决办法:执行这条命令添加参数: sudo pip install elasticsearch-curator --ignore-installed requests

查看一下curator 版本 使用命令:curator --version

curator版本信息
curator版本信息

那么到此,curator安装完毕。接下来怎么使用?它有三种使用方式:

1,命令行 CLI 工具 使用curator_cli 开头后面接参数,我们可以通过--help查看,如下:

curator_cli使用工具
curator_cli使用工具

它的好处: 无需配置文件,一行命令即可成功;坏处:不能便捷的适应复杂的操作

2,以配置文件的方式运行

它的格式如下:curator --config /path/config.yml /path/action.yml (注意配置文件一定要写绝对路径)

config.yml 是配置文件,用于配置ES集群信息。action.yml 用来执行索引操作的配置信息。

这几个配置文件在系统安装完毕后,默认是没有配置文件的。我们需要去官网COPY。那我们去官网看看:地址如下https://www.elastic.co/guide/en/elasticsearch/client/curator/5.8/configfile.html

CONFIG.YML 官方配置文件如下:

代码语言:javascript
复制
---
# Remember, leave a key empty if there is no value.  None will be a string,
# not a Python "NoneType"
client:
  hosts:
    - 127.0.0.1  ----》ES集群的IP,多个IP间用","隔开
  port: 9200    ------》ES端口
  url_prefix:    ------》保持默认
  use_ssl: False  -----》默认即可
  certificate:
  client_cert:
  client_key:
  ssl_no_validate: False
  http_auth:
  timeout: 30
  master_only: False

logging:
  loglevel: INFO
  logfile: -------》这里要改成你自己的日志文件的目录
  logformat: default
  blacklist: ['elasticsearch', 'urllib3']---》保持默认

它的核心配置: 1)集群IP; 2)安全认证信息; 3)日志信息。

那看看我得这个怎么配置的?

config.yml文件
config.yml文件

再来看看Action.yml官方配置文件地址为: https://www.elastic.co/guide/en/elasticsearch/client/curator/5.8/actionfile.html

由于内容较多,建议大家看官网,这里列出部分,如下:

代码语言:javascript
复制
---
# Remember, leave a key empty if there is no value.  None will be a string,
# not a Python "NoneType"
#
# Also remember that all examples have 'disable_action' set to True.  If you
# want to use this action as a template, be sure to set this to False after
# copying it.
actions:
  1:--------------》要采取的动作1    ###action.yml 用来执行索引操作的配置信息。
    action: ACTION1
    description: OPTIONAL DESCRIPTION
    options:
      option1: value1
      ...
      optionN: valueN
      continue_if_exception: False
      disable_action: True
    filters:
    - filtertype: *first*
      filter_element1: value1
      ...
      filter_elementN: valueN
    - filtertype: *second*
      filter_element1: value1
      ...
      filter_elementN: valueN
  2:-----------------------------要采取的动作2,依次类推,都再这里定义
    action: ACTION2
    description: OPTIONAL DESCRIPTION

那看看我得action.yml是怎么配置的?

Action.yml
Action.yml

这只是一个条件,当然后面还可以以此类推。进行复合命令的操作。

3,通过Python API来操作curator,后面我们将以腾讯云SCF结合,讲它的实用。

三、curator的实际应用

比如,我需要:过滤索引名称匹配 logstash-20xx-xx-xx 格式且时间为7天前的索引,然后将这些索引删除,操作如下:

1,命令行模式 使用如下:

curator_cli --host 10.0.0.2:9200 --http_auth ‘user:passwd' delete_indices --filter_list '[{"filtertype": "pattern", "kind": "prefix", "value": "logstash-"}, {"filtertype": "age", "source": "name", "direction": "older", "timestring": "%Y.%m.%d", "unit": "days", unit_count: 7}]'

curator_cli --host 10.0.1.7:9200 --http_auth 'user:password' show_indices --verbose

2,配置文件 的方式上面本人的配置文件已经贴出来了。那么怎么执行呢?如下:

执行命令
执行命令

验证一下有没有执行成功?我们去看输出日志。日志目录我们在config.yml文件里配置了。发现删除了日志。

curator输出日志
curator输出日志

我们看一下ES集群上的索引信息是否准确?确实删除了

es集群索引信息
es集群索引信息

那我们再来改一下规则,让它删除以logstats-ngi*开头的索引信息。我们改一下配置文件。

删除成功
删除成功

定时执行 = crontab任务计划

如果我们需要在某一个时刻去定时操作清理ES上的数据,那么我们可以使用LINUX 自带的crontab功能

比如说我要每隔1分去执行命令,清理Logstash开头的索引 我们可以这样写

我们使用contab -e 打开直接添加如下命令 也可以写脚本,然后把脚本添加进crontab 去执行

任务计划语句
任务计划语句

查看日志,看计划执行没

执行成功
执行成功

写个脚本看看能否执行

脚本内容
脚本内容

将此脚本授权并放到任务计划 每1分钟执行一次。使用crontab -e 打开命令行,添加后,然后保存退出。

授权脚本执行权限
授权脚本执行权限
curator日志
curator日志

那么至此,Elastic Curator工具的使用就已经完成。curator+crontab的方式是实际生产中应用的最多的方式。接下来,我们还要再讲一种方式,那就是基于Tencent SCF 下调用基于curator工具的Python API去管理维护ES集群的索引:

四、使用Curator在腾讯云Elasticsearch中自动删除过期数据

腾讯云无服务器云函数(SCF)中,已经配置了含有Curator的模板,用户可以直接应用模板,快速开始一个curator函数的配置:便于我们快速的通过API去处理ES集群的索引信息。下面简单介绍一下:

第一步 创建云函数

进入到腾讯云无服务器函数(scf)的控制台,点击新建。

新建SCF函数
新建SCF函数

选择“Curator” 如下图

高级配置里,选择私有网络配置。注意:要跟ES集群在同一内网。

改一下代码信息
改一下代码信息

根据您购买的ES集群信息编辑模板的相关参数

  • esServer: es集群vpc内网的ip和端口
  • esPrefix: es索引的前缀,如logstash-
  • esCuratorTimeStr: 索引中的时间格式,如%Y-%m-%d。这样将会匹配形如logstash-2017-12-04为名字的索引。
  • esCuratorTimeUnit: 时间周期,可以选择小时(hours),天(days),月(months)等。
  • esCuratorTimeCount: 时间间隔,和上面的时间周期一起来配置过期索引的时间。

最后定义触发告警,每天运行依次。定时清理不要的索引信息(根据实际情况

新建触发方式告警
新建触发方式告警

在触发方式中,配置触发周期,可以配置每天触发或选择自定义触发,点击保存。

关于此节请参考官方文档:https://cloud.tencent.com/developer/article/1361207

五、总结

本节讲了从两个方面去讲了curator的使用。尤其是后面还介绍了一款腾讯云 自动化的Curator API工具。便于我们快速去维护管理在腾讯ES集群上的索引。总之,此工具非常好用,也非常强大,建议大家多操作。重点注意其原理、配置文件含义。最后还是要以下的curator使用限制:

切记: curator适用于 基于时间或者tempalte其它方式创建的索引。, 不适合单一索引存储N久历史数据的操作的场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言 |
  • 一、Curator到底能做什么?
  • 二、Curator的安装、使用
  • 三、curator的实际应用
    • 定时执行 = crontab任务计划
    • 四、使用Curator在腾讯云Elasticsearch中自动删除过期数据
      • 第一步 创建云函数
      • 五、总结
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档