七、ES故障排查

在这里记录一下排查es服务故障的思路

1、查看端口

es服务会开启9200跟9300端口
kibana会开启5601端口
es-head会开启9100端口

ss -lntup | grep 9200
ss -lntup | grep 9300
ss -lntup | grep 5601
ss -lntup | grep 9100

2、curl查看

在服务器上使用curl查看是否有数据显示
七、ES故障排查

在浏览器上查看是否有数据显示
七、ES故障排查

这两步可以排除es是否在服务器上是否运行,以及是否是因为防火墙等原因,浏览器访问不到

3、检查配置文件

常用的配置如下所示

$ grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml 
cluster.name: tz_linux_es #集群名
node.name: es01.tzlinux.com #节点名
path.data: /var/lib/elasticsearch #数据存放路径
path.logs: /var/log/elasticsearch #日志存放路径
bootstrap.memory_lock: true #锁定内存
network.host: 10.154.0.110,127.0.0.1 #本机IP地址
http.port: 9200 #端口
discovery.seed_hosts: ["es01.tzlinux.com","es02"] #允许发现主机域名或IP
cluster.initial_master_nodes: ["es01.tzlinux.com"] #master主机域名或IP
http.cors.enabled: true #跨域配置
http.cors.allow-origin: "*" #跨域配置

如果在配置文件中使用的是域名,则需要检查解析是否正确

ping es01.tzlinux.com

4、查看日志

日志分为系统日志、es服务日志、es集群日志三种

#实时查看系统日志
tail -f /var/log/messages

#实时查看es服务日志
tail -f /var/log/elasticsearch/elasticsearch.log

#实时查看es集群日志
tail -f /var/log/elasticsearch/tz_linux_es.log

注意,es集群日志是使用配置文件里设置的集群名命名的,我的集群名是tz_linux_es

也可使用less命令查看

less /var/log/elasticsearch/elasticsearch.log

5、es-head插件问题

我是用es-head插件连接es数据库,发现有时候连接不上,这里总结一下原因。

1、集群存活主机少于预定个数
假设配置了两台es服务器,一台主一台从,主或从其中一台宕机了,即使主未宕机,使用es-head也是连接不上。

2、未设置跨域
这里看第3步,加入倒数两行配置即可。

注意,设置完跨域后,需要耐心等待几分钟才能连接上,不要一直重启服务

3、集群主机宕机后恢复正常
例如我有两台es服务器,10.154.0.110跟10.154.0.111,110是主,111是从
111宕机再恢复后,这时es-head插件时连接不上110的,但是可以连接111
我看了下110的服务状态都是正常的,就是当时死活连不上,需要过一段时间才行(这段时间得好几分钟),这时连接111即可

6、排错案例

这里的环境是

es01 10.0.0.80
es02 10.0.0.81
es03 10.0.0.82

1)第一个问题案例
遇到问题不要慌,先查看系统日志,系统日志叫你查看集群日志
七、ES故障排查

查看集群日志,这里主要查看ERROR的内容,集群日志叫你检查配置文件IP
七、ES故障排查

发现10.0.0.81机器的配置文件中写的是80的地址,改为81的地址即可
七、ES故障排查

2)第二个问题案例
查看es服务日志,发现配置文件被拒绝访问
七、ES故障排查

问题起因,scp复制配置文件到其他机器,文件的权限会被改为root属主跟root属组,这样es就不能访问配置文件了。
七、ES故障排查

es配置文件原来权限,注意我是用rpm包安装的,属主是root,严格来说es配置文件属主跟属组都应该是elasticsearch;
rpm包安装完成后会自动创建elasticsearch用户,我们只要改改属主跟属组即可,另外很多文章说es必须使用es用户来启动,我这里如果是在工作环境中是不规范的,需要注意。
七、ES故障排查

问题解决方式一

#使用scp -p复制配置文件可保留原来文件的权限
scp -p /etc/elasticsearch/elasticsearch.yml 10.154.0.111:/etc/elasticsearch/elasticsearch.yml

问题解决方式二

#修改文件权限
chown root.elasticsearch /etc/elasticsearch/*
chmod 660 /etc/elasticsearch/elasticsearch.yml

参考资料
老男孩教育_day105_视频