現(xiàn)平臺已大量使用Elastalert
作為ELK日志告警器,上周出現(xiàn)某個index告警查詢異常;導(dǎo)致無法正常告警,在還沒計劃好構(gòu)建高可用方案前,先確保能夠第一時間知道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ā)現(xiàn)與Elastalert
告警查詢異常時間吻合,所以我們只需要用Zabbix
監(jiān)控該index就OK.
查詢十五分鐘內(nèi)的數(shù)據(jù),生成自發(fā)現(xiàn)字典格式
由于我的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
}
腳本傳送門
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。