Elasticsearch 监控索引数据变化方案

Posted 往日不在

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch 监控索引数据变化方案相关的知识,希望对你有一定的参考价值。

近期将es作为数据库使用,遇到一个问题需要对某个索引的某些数据进行回滚。
直接上 方案 3种
1、利用es 慢sql日志,将写请求记录输出到es的日志中,再对日志进行收集
2、开发es插件拦截记录写请求
3、开发修改es请求客户端api 对写请求记录

最好的方案就是 方案1
具体实现方式是参考了大佬的文章
打印日志
日志收集可以采用elk增加对 写请求的收集,利用kibana 进行数据修改记录查询
方案2 参考
插件开发

采用方案1 注意以下几点
1、es 写请求日志是不会记录DELETE ,只记录成功的UPDATE 和INSERT,解决方法是采用 逻辑删除增加一个status字段去判断是否删除
2、记录的写请求无法区分UPDATE 和INSERT,解决方式是根据数据进行区分,可以在 INSERT 请求时增加字段insert_time,UPDATE 请求时增加update_time,在日志收集的时候 根据status 、insert_time、update_time 对请求进行分类是哪种写请求类型
3、将所有请求都输出到慢sql日志后,按照"took":和"took_millis" 的值 去判断是否时 慢sql 语句


 日志文件 xxxx_index_search_slowlog.json 添加和修改请求 无法区别
"type": "index_indexing_slowlog", "timestamp": "2023-02-14T22:33:58,442+08:00", "level": "DEBUG", "component": "i.i.s.index", "cluster.name": "xxxx", "node.name": "x.x.x.x", "message": "[sentence_embeddings/g1b0RQSzRZyBezyFReLjvw]", "took": "1.2ms", "took_millis": "1", "doc_type": "_doc", "id": "413221961389445120", "source": "\\"sentence\\":\\"测试语句ok9\\",\\"id\\":\\"413221961389445120\\"", "cluster.uuid": "h4gKo6jKSGKlmBhQuSLLZw", "node.id": "_cVpKwRWQSO1ESE6cPZiSQ"  
"type": "index_indexing_slowlog", "timestamp": "2023-02-14T22:38:54,410+08:00", "level": "DEBUG", "component": "i.i.s.index", "cluster.name": "xxxx", "node.name": "x.x.x.x", "message": "[sentence_embeddings/g1b0RQSzRZyBezyFReLjvw]", "took": "1.2ms", "took_millis": "1", "doc_type": "_doc", "id": "413221961389445120", "source": "\\"sentence\\":\\"测试修改\\",\\"id\\":\\"413221961389445120\\"", "cluster.uuid": "h4gKo6jKSGKlmBhQuSLLZw", "node.id": "_cVpKwRWQSO1ESE6cPZiSQ"  

以上是关于Elasticsearch 监控索引数据变化方案的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch-运维-文件缓存

使用canal监控mysql数据库实现elasticsearch索引实时更新

基于HBase+ ElasticSearch的海量交通数据实时存取方案设计

Elasticsearch指标监控说明

Elasticsearch索引监控之Indices Segments API与Indices Sha

运维工程师监控工作之Elasticsearch关键指标采集方法