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

来源:互联网 发布:方腊手下大将排名 知乎 编辑:程序博客网 时间:2024/04/30 07:28
知识点:
在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
0 0
原创粉丝点击