天天看點

Elasticsearch索引增量統計及定時郵件實作

1、問題分解

1.1 ES叢集的資料量統計

ES自帶的指令行統計舉例:

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

1

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`

2

3

4

5

6

傳回結果如下:

Elasticsearch索引增量統計及定時郵件實作

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;

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

2.3 增量資料統計

步驟1:單日資料統計

Elasticsearch索引增量統計及定時郵件實作

步驟1,步驟2資料可以Excel統計得出。

其中單日資料的拷貝shell腳本如下:

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

步驟3:Excel生成圖表。

Elasticsearch索引增量統計及定時郵件實作

3、難點

4、小結

通過shell腳本+Excel資料統計,簡單實作了資料增量可視化。

通過java+郵件處理+定時任務,實作了資料的定時統計以及定時郵件預警功能。

可以,在此基礎上,做更多的擴充應用,比如:

1)叢集監控狀态監控;

2)叢集堆記憶體使用監控;

3)開發中其他相關實體機器記憶體、CPU、磁盤讀寫性能等名額的監控等。