Devops's Blog

Запрос в elk

Получим число запросов на index haproxy-logs-*, за определенное время

image

Копируем json запрос и правим под себя

image

Получился такой 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 , для ослеживание ошибок в логах