ELK问题整理

ELK问题整理

1、logstash启动报错

$ journalctl  -xe | grep logstash  

Sep 13 16:37:23 am02 logstash[298460]: could not find java; set JAVA_HOME or ensure java is in PATH
Sep 13 16:37:23 am02 systemd[1]: logstash.service: main process exited, code=exited, status=1/FAILURE
Sep 13 16:37:23 am02 systemd[1]: Unit logstash.service entered failed state.
Sep 13 16:37:23 am02 systemd[1]: logstash.service failed.
Sep 13 16:37:23 am02 systemd[1]: logstash.service holdoff time over, scheduling restart.
Sep 13 16:37:23 am02 systemd[1]: start request repeated too quickly for logstash.service
Sep 13 16:37:23 am02 systemd[1]: Failed to start logstash.
【问题分析】

1、执行/usr/share/logstash/bin/logstash --path.settings /etc/logstash显示启动成功
2、步骤1后查看进程ps -ef|grep logstash,可以查到相关进程

【解决方案】

到/usr/share/logstash/bin 查看logstash.lib.sh 文件,
找到setup_java () 加上JAVA_HOME,指向对应地址,再次启动成功

setup_java() {
JAVA_HOME=/opt/java

2、elasticsearch单节点重启后报错问题

报错
org.elasticsearch.action.NoShardAvailableActionException: No shard available for [get [.tasks][task][7DrpBWixQqirLVwQUONeSg:541031]: routing [null]]
原因

由于es部署的单节点,默认情况下Elasticsearch 生成 1 个主分片和 1 个副本分片,所以重启es后会导致报错。解决该问题的根本方案是让ES单节点不产生副本分片。

排查
# 查看es单节点状态
curl -X GET 'http://192.168.1.50:9200/_cluster/health?pretty'
#发现ES单机状态为red且存在大量"unassigned_shards"的分片,各状态代表如下

绿色表示最健康的状态,代表所有的主分片和副本分片都可用; 
黄色表示所有的主分片可用,但是部分副本分片不可用; 
红色表示部分主分片不可用. (此时执行查询部分数据仍然可以查到)

查看索引,发现"unassigned_shards"的分片状态都为red

unassigned 分片问题可能的原因?

INDEX_CREATED:  由于创建索引的API导致未分配。
CLUSTER_RECOVERED:  由于完全集群恢复导致未分配。
INDEX_REOPENED:  由于打开open或关闭close一个索引导致未分配。
DANGLING_INDEX_IMPORTED:  由于导入dangling索引的结果导致未分配。
NEW_INDEX_RESTORED:  由于恢复到新索引导致未分配。
EXISTING_INDEX_RESTORED:  由于恢复到已关闭的索引导致未分配。
REPLICA_ADDED:  由于显式添加副本分片导致未分配。
ALLOCATION_FAILED:  由于分片分配失败导致未分配。
NODE_LEFT:  由于承载该分片的节点离开集群导致未分配。
REINITIALIZED:  由于当分片从开始移动到初始化时导致未分配(例如,使用影子shadow副本分片)。
REROUTE_CANCELLED:  作为显式取消重新路由命令的结果取消分配。
REALLOCATED_REPLICA:  确定更好的副本位置被标定使用,导致现有的副本分配被取消,出现未分配。
解决

改索引的副本数量,将副本数量设置为0

curl -XPUT  "http://192.168.1.50:9200/_settings"  -H 'Content-Type: application/json' -d' {  "number_of_replicas" : 0 } '

你可能感兴趣的:(elk,运维)