频道栏目
首页 > 网络 > 云计算 > 正文

ES索引延时监控

2017-03-11 09:26:47           
收藏   我要投稿

本文通过ES提供的Restful Api来获取索引的最新一条数据,来简单监控其延时情况。

#!/bin/sh
export LANG=en_US.UTF-8

index="app_logs"
timeField="@timestamp"
jsonRes=`curl -XGET https://localhost:9200/$index/_search?pretty -d ' { "query": { "match_all": {}},  "size": 1, "sort": [{ "'$timeField'": {"order": "desc" }} ]}'`
parseRes("${jsonRes}" $timeField $index)

获得结果数据格式如下:

{
    "took": 65,
    "timed_out": false,
    "_shards": {
        "total": 8,
        "successful": 8,
        "failed": 0
    },
    "hits": {
        "total": 109697,
        "max_score": null,
        "hits": [{
            "_index": "app_logs",
            "_type": "blog",
            "_id": "indicator.147-1487951940",
            "_score": null,
            "_source": {
                "log_data": ""
            },
            "sort": [
                1487951940
            ]
        }]
    }
}

parseRes函数解析结果,延时超过5分钟则报警:

LATENCY_SECONDS = 5 * 60
def parseRes(jsonStr, timeField, index):
    errMsg = ""
    try:
        qjson = json.loads(jsonStr.strip())
    except Exception,e:
        errMsg = "json load error : [" + index + "] \n" + jsonStr
        return errMsg

    total = qjson.get("hits",{}).get("total","");
    if(total == ""):
        errMsg = "hits total is 0 : [" + index + "] \n" + jsonStr
        return errMsg

    timeStr = qjson.get("hits", {}).get("hits",[])[0].get("_source", {}).get(timeField, "");
    if(timeStr == ""):
        errMsg = "hists time is empty : [" + index + "] \n" + jsonStr
        return errMsg

    if(timeStr.find("T") >=0):
        timeStr = timeStr[0 : timeStr.find(".")]
        hitTime = datetime.datetime.strptime(timeStr, '%Y-%m-%dT%H:%M:%S')
        curTime = datetime.datetime.today()
        print index, hitTime, curTime
        secondsDiff = (curTime - hitTime).seconds - 8*60*60
        if(secondsDiff > LATENCY_SECONDS):
            errMsg = "The latency is more than 5 minutes : ["+index+"] \n" + jsonStr
            return errMsg

    return errMsg
上一篇:spark菜鸟学习笔记:一、helloword
下一篇:Graphx社区发现算法学习
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站