我正在寻找一种在节点(和/或所有节点)上每秒获取一次搜索操作次数的方法。
有没有办法在没有Marvel插件的情况下获取此信息? 我的ElasticSearch版本 0.90.11
答案 0 :(得分:1)
Marvel通过抽样做到了。如果您编写脚本以重复运行curl http://localhost:9200/_stats/search
并解析如下所示的结果:
...
"_all" : {
"primaries" : {
"search" : {
"open_contexts" : 0,
"query_total" : 51556,
"query_time_in_millis" : 2339958,
"query_current" : 0,
"fetch_total" : 8276,
"fetch_time_in_millis" : 34916,
"fetch_current" : 0
}
},
"total" : {
"search" : {
"open_contexts" : 0,
"query_total" : 73703,
"query_time_in_millis" : 2773745,
"query_current" : 0,
"fetch_total" : 10428,
"fetch_time_in_millis" : 45570,
"fetch_current" : 0
}
}
},
...
您可以看到query_total值 - 只是以某个间隔重复查询,然后进行数学计算。
答案 1 :(得分:0)
谢谢Alcanzar。 这是我创建的脚本:
if [[ $1 == "" ]]
then
echo "Usage : $0 <refresh_interval_in second>"
echo "Example : ./$0 10"
exit 1
fi
refresh_interval=$1
while true; do
begin=$(curl --silent http://localhost:9200/_stats/search?pretty | grep '"query_total" :' | sed -n 2p | sed 's/,$//' | awk '{print $3}')
sleep $refresh_interval
end=$(curl --silent http://localhost:9200/_stats/search?pretty | grep '"query_total" :' | sed -n 2p | sed 's/,$//' | awk '{print $3}')
total=$(echo $(((( $end - $begin )) / $refresh_interval)))
echo $(date +"[%T] ")"Search ops/sec : "$total
done
例如,每10秒刷新一次,执行: sh script.sh 10