知识点:
在Elasticsearch监控集群健康(cluster health),集群健康有三种状态:green、yellow或red。
green表示:所有主要分片和复制分片都可用
yellow表示:所有主要分片可用,但不是所有复制分片都可用
red表示:不是所有的主要分片都可用
从以上的解释来看只有当status值为red时服务器会有问题。yellow表示可用,但是复制分片部分有问题。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{ cluster_name: 'elasticsearch', status: 'green', timed_out: false, number_of_nodes: 3, number_of_data_nodes: 3, active_primary_shards: 30, active_shards: 60, relocating_shards: 0, initializing_shards: 0, unassigned_shards: 0, delayed_unassigned_shards: 0, number_of_pending_tasks: 0, number_of_in_flight_fetch: 0, task_max_waiting_in_queue_millis: 0, active_shards_percent_as_number: 100 }
ESLogsServer.js
主要函数介绍
接收日志数据:acceptLogData
ES写日志:esCreateFiles
监控启动:timerStart
获取集群健康状态:getClientHealth
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81function acceptLogData(){ app.post('/ES', function(req, res) { var content = ''; req.on('data', function (data) { content += data; }); req.on('end', function () { var data = JSON.parse(content); logs.info(data); try { if(appConfig.debug){ console.log(data); } esCreateFiles(data); } catch (error){ console.log("[error]:"+error.name+error.message); hbs.state =false; logs.error(error); res.end("false"); } res.writeHead(200, { "Content-Type": "text/plain;charset=utf-8" }); res.end("true"); }); }); } var esCreateFiles=function(data) { client.create(data , function (error, response) { if (error != undefined) { console.log("[异常]" + error); logs.error(error); logs.info(data); } }); }; function timerStart(millisecond) { var timerToken = setInterval(function () { getClientHealth(); }, millisecond ); } function getClientHealth(){ client.cluster.health(function (err, resp) { if (err) { hbs.state = false ; console.error(err.message); } else { if(resp.status=='red'){ hbs.state = false; }else{ hbs.state = true; } if(appConfig.debug){ console.dir(resp); } } }); } var appConfig =require('../AppConfig.js'); var log4js = require('log4js'); log4js.configure(appConfig.log4js); var logs = log4js.getLogger('normal'); var express = require("express"); var app = express(); var elasticsearch = require('elasticsearch'); var client = elasticsearch.Client(appConfig.elasticSearch); var heartbeatService =require('./HeartBeatService'); var hbs=heartbeatService.getInstance(app); function init(){ getClientHealth(); timerStart(1000*5); acceptLogData(); app.listen(8000); } init();
Nodejs心跳包代码详见:
http://blog.csdn.net/gzy11/article/details/54949531
代码下载地址:
http://download.csdn.net/detail/gzy11/9752158
最后
以上就是无情机器猫最近收集整理的关于Nodejs心跳包(二)监控elasticsearch服务器状态--学习笔记的全部内容,更多相关Nodejs心跳包(二)监控elasticsearch服务器状态--学习笔记内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复