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

知识点:
在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();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小游戏-斗地主是一款在微信平台上非常受欢迎的游戏,它结合了斗地主经典玩法和微信社交功能,让玩家可以与好友一起斗智斗勇。 在开发这款游戏时,使用了Node.js作为服务器端的开发语言。Node.js是一个基于JavaScript运行时的平台,它可以使我们使用JavaScript编写服务器端应用程序。这样一来,我们在开发微信小游戏-斗地主时可以使用JavaScript作为统一的开发语言,既方便了前端开发,又方便了后端开发。 通过使用Node.js作为服务器端,我们可以实现以下功能: 1. 用户管理:服务器可以管理玩家的注册、登录、信息保存等操作。每个玩家可以通过微信登录游戏,并在服务器上保存他们的游戏数据和好友列表。 2. 匹配系统:服务器可以实现玩家之间的匹配。玩家可以选择与好友进行对战,也可以选择与随机玩家进行匹配。服务器会根据玩家的匹配方式进行配对,确保游戏的公平性。 3. 游戏逻辑:服务器可以实现斗地主游戏的核心逻辑。它可以管理玩家的手牌、出牌规则、出牌顺序等游戏细节。服务器会实时更新玩家的游戏状态,保证游戏的顺畅进行。 4. 实时通信:服务器可以实现玩家之间的实时通信。玩家可以通过服务器发送消息给对方,例如邀请好友进行游戏、发送表情等。服务器可以将这些消息及时传递给游戏中的玩家,保证玩家之间的互动性。 通过使用Node.js作为服务器端,我们可以构建一个稳定高效的微信小游戏-斗地主平台。玩家可以通过微信小程序平台轻松进入游戏,与好友一起畅玩斗地主,享受竞技乐趣。同时,服务器的管理功能还可以确保游戏的公平性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值