一.检查现有资源使用情况、分片数量、分片策略、索引数量
优化从配置文件调整、分片调整、索引数量及大小入手、(原则尽量合理利用物理资源,降低资费开销)
1.几个重要原则
elasticsearch的Jvm分配的内存为系统内存的一半(不可分配过大内存,因为底层Lucnce使用到内存进行文件操作)系统剩余内存太小会导致响应变慢。
在条件具备的情况下(机器资源充足),尽量将master节点独立出去。(master nodes在一起,master容易受到nodes占用资源的影响)
索引的大小及数量控制 索引数量建议单节点不超过600(在某些文档中找到,但是实际使用可能超过1000,尽量控制不要太高),索引的大小,10-30g(太小会增加不必要开销,太大会导致查询响应问题)也就是说要找到日志写入的规律,根据具体情况创建索引(按日或月或年)以控制好大小及数量。
jvm池的使用
Jvm池内存使用率跟分片数量关系很大,分片数量过多,当查询时,会导致gc。cpu及内存使用飙升。导致es down机。
二、索引合并
索引合并的脚本

!/bin/bash

1定义变量

echo "date "+%Y-%m-%d %H:%M:%S" start reindex elasticsearch logs"
###################################################################
reindexlog=/tmp/reindex.log
echo "mk reindex log file......"
if [ ! -f $reindexlog ];then
echo "${reindexlog}文件不存在,现在开始创建"
touch ${reindexlog}
else
echo "${reindexlog} 文件已存在"
fi
####################
curlfile=/tmp/curlfile.txt
echo "check fullgc file......"
if [ ! -f $curlfile ];then
echo "${curlfile}文件不存在,现在开始创建"
touch ${curlfile}
else
echo "${curlfile} 文件已存在"

清空内容

echo >${curlfile}
fi

function reindex_logs {
#######所有项目列表######
project_list=( 'index1' 'index2' );
for project in ${project_list[]}
do
#######################################
while :
do
sleep 5s
reindex=`curl -XPOST 'http://192.168.20.2:9200/_reindex?pretty' -H 'Content-Type: application/json' -d'
{
"conflicts": "proceed",
"source": {
"index": "'${project}'-2020-09-
"
},
"dest": {
"index": "'${project}'-2020-09",
"op_type": "create"
}
}
'`
echo "date "+%Y-%m-%d %H:%M:%S" ${reindex}" >>$reindexlog
if [[ "$reindex" =~ '"failures" : [ ]' ]];then

break
fi
echo "date "+%Y-%m-%d %H:%M:%S" ${project}-2020-09 retry" >>$reindexlog
done
echo "date "+%Y-%m-%d %H:%M:%S"---------- ${project}-2020-09 success---------------" >>$reindexlog
#################################################################
done
}
reindex_logs
#########
注意合并成功返回结果如下:
"took" : 6936,
"timed_out" : false,
"total" : 1986,
"updated" : 0,
"created" : 1986,
"deleted" : 0,
"batches" : 2,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ] #注意这里为空,如果这里不为空出现503或其它项目,代表合并失败。
}
合并后原索引的删除
curl -XDELETE 'http://192.168.20.2:9200/index1-2020-09-'
{"acknowledged":true}返回结果为ture 代表成功
[root@confluence_elk-es shell]# curl http://192.168.20.2:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1620227282 06:44:42 elkes green 5 5 10018 5009 0 0 0 0 - 100.0%
[root@confluence_elk-es shell]# curl http://192.168.20.2:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.10.2 62 95 30 2.39 1.87 1.74 mdi - server5
192.168.20.2 57 99 5 0.38 0.42 0.50 mdi
server3
192.168.30.2 65 97 27 0.61 0.53 0.65 mdi - server1
192.168.40.2 61 98 26 0.76 0.72 0.78 mdi - server4
192.168.50.2 52 98 14 0.55 0.51 0.54 mdi - server2
[root@confluence_elk-es shell]#

最后修改日期:2021年1月11日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。