为了账号安全,请及时绑定邮箱和手机立即绑定

ES 数据没了?谁动了我的数据?

背景

我们在使用 Elasticsearch 的时候,可能会遇到数据“丢”了的情况。有可能是数据没成功写入 ES 集群,也可能是数据被误删了。

针对数据被误删,有没有好的解决办法呢?

其实我们可以把“删除数据”这个操作管理起来。当 ES 集群接收到删除数据命令的时候,先不执行该命令,而是生成一条删除数据的记录,经过管理人员批准后,该命令才会执行。这样不仅可以管理数据的删除,还可以进行删除操作的追踪:什么人,什么时间,发送了什么样的删除指令,从哪个 IP 发送的,以什么身份登录的等等。

要实现这个解决办法,我们可借助 INFINI Gateway 和 Console 的帮助。

方案架构

方案效果

  • INFINI Gateway 作为 ES 集群的代理,接收所有请求
  • INFINI Gateway 对删除数据操作进行拦截,在 Console UI 界面生成记录
  • 管理人员 在 Console UI 界面审批操作记录,审批通过操作被执行

方案演示

测试数据准备

测试索引 test1,一共有 3 条数据。message 内容分别是"line 1",“line 2"和"line 3”。

启动 INFINI Gateway 及 Console

网关配置新增内容

增加对 DELETE 操作的捕获,不直接执行,写入队列中。后续由队列生成特定的记录。

router:
  - name: my_router
    default_flow: default_flow
    tracing_flow: logging_flow
    rules:
      - method:
          - "DELETE"
        pattern:
          - "/{any_index}"
          - "/{any_index}/{any_type}"
          - "/{any_index}/{any_type}/{any_docid}"
        flow:
          - audit_flow
      - method:
          - "*"
        pattern:
          - "/{any_index}/_delete_by_query"
          - "/_delete_by_query"
        flow:
          - audit_flow
flow:
  - name: audit_flow
    filter:
      - logging:
          queue_name: del_queue
pipeline:
  - name: del_queue_ingest
    auto_start: true
    keep_running: true
    processor:
      - json_indexing:
          input_queue: "del_queue"
          idle_timeout_in_seconds: 1
          elasticsearch: "logging-server"
          index_name: "del_requests"
          worker_size: 1
          bulk_size_in_kb: 1

执行删除操作

ES 支持多种删除操作,简单总结归纳如下:

  1. 删除指定文档 id
  2. 删除索引
  3. 根据查询删除指定数据(_delete_by_query)

执行删除操作之前,先通过 INFINI Gateway 访问 ES 集群,证明可正常访问数据。

执行上述的几种删除命令,注意要发给 INFINI Gateway 的 8000 端口。

数据查询验证数据还在

Console 界面查看未批准的删除记录

所有删除操作,都被记录,待审批

Console 界面进行审批通过

选择一条记录,批准执行。Operation-approve

数据查询验证数据

“message”: "line 2"的文档已被删除。

Console 界面查看历史记录

继续批准测试

批准删除一条文档

“message”: “line 1” 的文档不在了。

批准删除索引

索引不在了。

至此我们演示了如何利用 INFINI Gateway 和 Console 对 ES 集群删除操作进行管控,本文只是抛砖引玉,相信还有更多有意思的场景等待大家发掘。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消