您的位置:首页 > Web前端 > Node.js

Nodejs心跳包(二)监控elasticsearch服务器状态--学习笔记

2017-02-10 18:10 741 查看
知识点:
在Elasticsearch监控集群健康(cluster health),集群健康有三种状态:green、yellow或red。
green表示:所有主要分片和复制分片都可用
yellow表示:所有主要分片可用,但不是所有复制分片都可用
red表示:不是所有的主要分片都可用
从以上的解释来看只有当status值为red时服务器会有问题。yellow表示可用,但是复制分片部分有问题。
{ 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
function  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: