Elasticsearch索引增量统计及定时邮件实现

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 随着ELKStack在应用系统中的数据规模的急剧增长,每天千万级别数据量(存储大小:10000000*10k/1024/1024=95.37GB,假设单条数据10kB,实际远大于10KB)的累积成为日常需求。 如何以相对简单的图形化效果展示数据的增量呢? 本文给出思路和实现。

0、需求

随着ELKStack在应用系统中的数据规模的急剧增长,每天千万级别数据量(存储大小:10000000*10k/1024/1024=95.37GB,假设单条数据10kB,实际远大于10KB)的累积成为日常需求。

如何以相对简单的图形化效果展示数据的增量呢?
本文给出思路和实现。

1、问题分解

1.1 ES集群的数据量统计

ES自带的命令行统计举例:

  curl 'localhost:9200/_cat/indices?v'

1.2 如何实现增量?

简化思路:
1)每天的固定时间,如早晨0:00统计一次当天的数据量,形成日志文件存储如:20180228-08:00.log
2)20180228的增量为:20180229-00:00.log的数据值-20180228-00:00.log的数据量。(下一天-前一天)

1.3 如何实现统计

简化思路:
1)shell脚本获取每天统计的数据量
2)Excel公式简单计算增量

1.4 如何实现定时邮件统计

简化思路:
1)java + 邮件程序 + 读取脚本实现。
2)crontab实现定时任务处理。

2、具体实现

2.1 单日数据量统计

#!/bin/sh
echo "curTime: "`date '+%Y-%m-%d %H:%M:%S'`
rm -f ./tmp.rst
curl -s -XGET '192.168.1.21:9200/_cat/indices?v&pretty' | grep "open" | grep "index_*" | sort -n -k7 | tee ./tmp.rst
echo "total:" `awk '{sum += $7};END {print sum}' ./tmp.rst`
rm -f ./tmp.rst

返回结果如下:

2.2 Java读取Shell脚本

public static String getShellCont(){
String strRst = "";
try {

String shpath="/home/mail_print.sh";
Process ps = Runtime.getRuntime().exec(shpath);

ps.waitFor();

BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();

Strig line;
while ((line = br.readLine()) != null) {
//特殊字符替换
line = line.replace("\t", "&nbsp&nbsp");
line = line.replace(" ", "&nbsp&nbsp");
sb.append(line).append("<br>");

}

strRst = sb.toString();
System.out.println(strRst);
}

catch (Exception e) {
e.printStackTrace();
}
return strRst;
}

2.3 增量数据统计

步骤1:单日数据统计。

image.png

步骤2:增量数据统计。

image.png

步骤1,步骤2数据可以Excel统计得出。
其中单日数据的拷贝shell脚本如下:

cat 20180102-00000*.log | grep count | awk -F "count:" ' { print $2 }'

步骤3:Excel生成图表。

image.png

3、难点

4、小结

通过shell脚本+Excel数据统计,简单实现了数据增量可视化。
通过java+邮件处理+定时任务,实现了数据的定时统计以及定时邮件预警功能。可以,在此基础上,做更多的扩展应用,比如:

1)集群监控状态监控;
2)集群堆内存使用监控;
3)开发中其他相关物理机器内存、CPU、磁盘读写性能等指标的监控等。


更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
(每周至少更新一篇!)


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
存储 API 数据库
检索服务elasticsearch索引(Index)
【8月更文挑战第23天】
39 6
|
15天前
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
|
25天前
|
存储 搜索推荐 数据建模
Elasticsearch 的数据建模与索引设计
【9月更文第3天】Elasticsearch 是一个基于 Lucene 的搜索引擎,广泛应用于全文检索、数据分析等领域。为了确保 Elasticsearch 的高效运行,合理的数据建模和索引设计至关重要。本文将探讨如何为不同的应用场景设计高效的索引结构,并分享一些数据建模的最佳实践。
50 2
|
1月前
|
存储 运维 搜索推荐
运维开发.索引引擎ElasticSearch.倒序索引的概念
运维开发.索引引擎ElasticSearch.倒序索引的概念
40 1
|
1月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
1月前
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
33 0
|
2月前
|
存储 搜索推荐 数据可视化
【Elasticsearch】Elasticsearch索引创建与管理详解
【Elasticsearch】Elasticsearch索引创建与管理详解
234 10
|
1月前
|
运维 安全 网络协议
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
运维.索引引擎ElasticSearch.记录一个小异常:received plaintext http traffic on an https channel
134 0
|
2月前
|
存储 SQL 自然语言处理
Elasticsearch 索引与文档的常用操作总结二:复杂条件查询
Elasticsearch 索引与文档的常用操作总结二:复杂条件查询
90 0
|
2月前
|
JSON API 数据格式
Elasticsearch 索引与文档的常用操作总结一
Elasticsearch 索引与文档的常用操作总结一
35 0