1.问题描述 elk节点宕机 重启节点 及logstash后报错信息
(Elasticsearch存储空间不够导致索引只读的解决方法)

报错信息资料描述:

Elasticsearch索引只读
今天添加索引时发现kibana添加索引不生效,页面也没有报错,没有创建成功只是一闪而过。

另外发现各项目日志与当前时间差异很大,filebeat一直报错io timeout

具体报错如下:

filebeat无法给logstash传输数。

ip使用x代替

logstash/async.go:235 Failed to publish events caused by: read tcp 172.17.x.x:39092->172.17.x.x:5044: i/o timeout
logstash报错如下,logstash无法给es传输数据,es一直在拒绝所有的请求

[INFO ][logstash.outputs.elasticsearch] Retrying individual bulk actions that failed or were rejected by the previous bulk request. {:count=>1}
[INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({“type”=>“cluster_block_exception”, “reason”=>“blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];”})
报错索引只读

index read-only / allow delete (api)];"}
es报错,es报错也是索引只读错误

处理方案及原因

解决办法1
在kibana开发控制台执行下面语句即可
PUT _settings
{
“index”: {
“blocks”: {
“read_only_allow_delete”: “false”
}
}
}
解决方法2
如果kibana无法执行命令,可以使用下面命令解决

curl -XPUT -H “Content-Type: application/json” http://localhost:9200/_all/_settings -d ‘{“index.blocks.read_only_allow_delete”: null}’
一旦在存储超过95%的磁盘中的节点上分配了一个或多个分片的任何索引,该索引将被强制进入只读模式

如图所示

问题2:启动kibana后关闭shell窗口后kibana自动关闭
后台启动kibana(加上&)
kibana-4.5.2-linux-x64/bin/kibana &
注意:这时加上了&虽然执行了后台启动,但是还是有日志打印出来,使用ctrl+c可以退出。
但是如果直接关闭了Xshell,这时服务也会停止,访问http://yourip:5601就失败了。

解决方法:
执行了kibana-4.5.2-linux-x64/bin/kibana &命令后,不使用ctrl+c去退出日志,
而是使用exit;这样即使关闭了shell窗口kibana服务也不会挂了。

问题3 logserch 启动报错

[root@iZ2zeh34kd1eac516l8ukqZ config]# /data/logstash-5.3.1/bin/logstash -f /data/logstash-5.3.1/config/logstash.conf &
[1] 91848
[root@iZ2zeh34kd1eac516l8ukqZ config]# tailf LoadError: JRuby ext built for wrong Java version in `com.purbon.jrmonitor.JRMonitorService’: java.lang.UnsupportedClassVersionError: com/purbon/jrmonitor/JRMonitorService : Unsupported major.minor version 52.0
require at org/jruby/RubyKernel.java:1040
(root) at /data/logstash-5.3.1/vendor/bundle/jruby/1.9/gems/jrmonitor-0.4.2/lib/jrmonitor.rb:4
require at org/jruby/RubyKernel.java:1040
(root) at /data/logstash-5.3.1/logstash-core/lib/logstash/instrument/periodic_poller/jvm.rb:1
require at org/jruby/RubyKernel.java:1040
(root) at /data/logstash-5.3.1/logstash-core/lib/logstash/instrument/periodic_poller/jvm.rb:5
require at org/jruby/RubyKernel.java:1040
(root) at /data/logstash-5.3.1/logstash-core/lib/logstash/instrument/periodic_pollers.rb:1
require at org/jruby/RubyKernel.java:1040
(root) at /data/logstash-5.3.1/logstash-core/lib/logstash/instrument/periodic_pollers.rb:3
require at org/jruby/RubyKernel.java:1040
(root) at /data/logstash-5.3.1/lib/bootstrap/environment.rb:70
解决方法:
在logstash或logstash.lib.sh的行首位置添加两个环境变量
export JAVA_CMD="/var/lib/jvm/bin"
export JAVA_HOME="/var/lib/jvm"

问题4.故障处理

  1. elk x-pack报错
    [2020-03-19T14:32:03,397][INFO ][o.e.x.s.a.AuthenticationService] [xjbw-node-2] Authentication of [elastic] was terminated by realm [reserved] - failed to authenticate user [elastic]
    处理方法:
    解决:
    bin / elasticsearch-setup-passwords auto | interactive
    重置密码 auto:随机密码 interactive:手动设置
    然后在es,kibana的配置文件重新指定密码 ok

问题5. gateway.recover_after_nodes 的坑
gateway.recover_after_nodes: 3
设置了最小恢复节点为3后,第一次集群启动,必须要三台节点同时启动es服务,集群才可以被访问到.否则会一直提示 登陆账号密码错误,此时不要慌张
只要集群启动了可以被访问之后,万一有节点挂掉, 集群还是可以访问到的,不会出现第一次的登录错误提示,此时重启挂掉的节点就行了.

问题6. 不能在根目录下运行的问题
elaticsearch默认不能用root用户启动,所以会报java.lang.RuntimeException: can not run elasticsearch as root异常

adduser es  #新建用户
passwd es|get@#123   #新建用户密码
#文件夹归属组
#chown -R [用户]:[所属组] 目录
chown -R es:es elasticsearch-6.3.1/ 
#修改文件夹权限
chmod 770 elasticsearch-6.3.1/
#切换到用户目录
su es
#重新执行成功
./elasticsearch -d

问题7. 虚拟机最大map数量不够
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

[root@centos7.4-64 ~]# vim /etc/sysctl.conf
添加配置:vm.max_map_count=655360,然后执行命令
[root@centos7.4-64 ~]# sysctl -p

问题8.资源不足 java内存不够
max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

[root@centos7.4-64 ~]# vim /etc/security/limits.conf
* hard nofile 65536
* hard nofile 65536

max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:

  • soft nproc 1024
    #修改为
  • soft nproc 2048

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解决:切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
然后,重新启动elasticsearch,即可启动成功。

问题9 权限问题


原因:之前用root用户启动 日志生产root权限,oom后 用普通用户无法启动

问题10.HA问题
把#node.master: false注释
三台都配置 discovery.zen.ping.unicast.hosts: [“bigdata11”,“bigdata12”,“bigdata13”]
会自动的调节自身的master,即杀死mater节点,将会自动调节其他节点成为Master节点

更多推荐

elk 问题故障处理实录