溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Zabbix監(jiān)控Elastalert

發(fā)布時間:2020-07-27 06:10:55 來源:網絡 閱讀:795 作者:迷失的貓妖 欄目:開發(fā)技術

Zabbix監(jiān)控Elastalert

前言

現平臺已大量使用Elastalert作為ELK日志告警器,上周出現某個index告警查詢異常;導致無法正常告警,在還沒計劃好構建高可用方案前,先確保能夠第一時間知道Elastalert狀態(tài)是否正常。

方案

Elastalert配置文件中writeback_index回寫的index,查詢同時,向ES的index記錄狀態(tài),會生成index_silence index_error index_status。

  • index_error記錄錯誤信息.
  • index_status記錄狀態(tài)信息.

在查看狀態(tài)信息記錄的時候,發(fā)現與Elastalert告警查詢異常時間吻合,所以我們只需要用Zabbix監(jiān)控該index就OK.

實施

查詢十五分鐘內的數據,生成自發(fā)現字典格式

由于我的rulename都是由字符與空格組成,所以替換成``號.

get_rules(){
    get_scroll=$(curl -s -XPOST "${ES_HOST}:${ES_PORT}/${INDEX}/_search?size=1000&_source=rule_name" \
        -H 'Content-Type: application/json' -d '
{
    "query" : {
        "match_all" : {}
    }
}')
    result=$(echo $get_scroll |grep -oP "(?<=rule_name\"\:)\"[^\"]*\""|sort|uniq|sed 's/"http://g'|sed 's/ /_/g'|tr '\n' '|')  
    data=(${result//|/ })
    length=${#data[@]}
    printf "{\n"
    printf  '\t'"\"data\":["
    for ((i=0;i<$length;i++))
    do
        item=${data[$i]}
        printf '\n\t\t{'
        printf "\"{#RULE_NAME}\":\"${item}\"}"
        if [ $i -lt $[$length-1] ];then
            printf ','
        fi
    done
    printf  "\n\t]\n"
    printf "}\n"
    exit 0 
}

查詢某個index的狀態(tài)

get_status(){
    local rule=${1//_/ }
    query=$(cat << EOF
{
  "query" : {
    "bool": {
      "must": [
        {"match" : {"rule_name": "${rule}"}},
        {"range" : {"@timestamp":{"gte":"now-15m"}}}
      ]
    }
   }
} 
EOF
)
    get_data=$(curl -s -XPOST  "${ES_HOST}:${ES_PORT}/${INDEX}/_search?size=1" \
        -H 'Content-Type: application/json' -d "${query}")
    result=$(echo $get_data |grep -oP "(?<=rule_name\"\:)\"[^\"]*\"")
    echo "${rule}" |grep -qw "${result//\"/}" && echo 0 || echo 1
    exit 0
}

后記

腳本傳送門

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI