Получим число запросов на index haproxy-logs-*, за определенное время
Копируем json запрос и правим под себя
Получился такой json
[root@srv user]# cat /root/json_request/test.json
{
"size": 5000,
"version": true,
"script_fields": {},
"stored_fields": [
"*"
],
"runtime_mappings": {},
"_source": false,
"query": {
"bool": {
"must": [],
"filter": [
{
"range": {
"@timestamp": {
"format": "strict_date_optional_time",
"gte":"now-3h",
"lte": "now"
}
}
}
],
"should": [],
"must_not": []
}
}
}
Пишем скрипт который будет отправлять json
[root@srv user]# cat /root/es.sh
#!/bin/bash
if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
echo "Vvedite data"
exit
fi
readonly DIR_SEP_1=" "
srv_ru_ha_logs="http://elastic:12345678@127.0.0.1:30006/haproxy-log-*/_search/?pretty"
message=$3
time_n=$2
switch_srv()
{
case $1 in
srv_ru_ha_logs)
srv=$srv_ru_ha_logs
esac
}
FILES_1=$(ls /root/json_request )
contains_word='hits'
err_log='err_es_full.log'
array_v1=(${FILES_1[$i]//${DIR_SEP_1}/})
switch_srv $1
for ((i=0; i<${#array_v1[@]}; i++))
do
if [[ ${array_v1[$i]} = $message ]]; then
sed -i -e s%\"gte\":.*\"now-.*\"%\"gte\":\"now-$time_n\"% /root/json_request/${array_v1[$i]}
arv=$(curl -s -XGET $srv -H 'Content-Type: application/json' -d @/root/json_request/${array_v1[$i]})
if [[ "$arv" == *"$contains_word"* ]]; then
count=$(echo $arv | grep -o "_index" | wc -l)
echo "$count"
else count=-10
echo -e "`date` $srv $time_n ${array_v1[$i]}\n $arv" >> $err_log
echo "$count"
fi
fi
done
Запускаем скрипт и передаем ему три параметра
1. Название переменной которая обращается к нашему индексу
2. Время которое подставляется в X now-X
3. Название файла с json
Навыходе число будет отличаться т.к. трафик не стоит на месте
[root@srv user]# /root/es.sh srv_ru_ha_logs 3h test.json
2946
Удобно использовать в zabbix , для ослеживание ошибок в логах