七、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是否在服务器上是否运行,以及是否是因为防火墙等原因,浏览器访问不到
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)第一个问题案例
遇到问题不要慌,先查看系统日志,系统日志叫你查看集群日志
查看集群日志,这里主要查看ERROR的内容,集群日志叫你检查配置文件IP
发现10.0.0.81机器的配置文件中写的是80的地址,改为81的地址即可
2)第二个问题案例
查看es服务日志,发现配置文件被拒绝访问
问题起因,scp复制配置文件到其他机器,文件的权限会被改为root属主跟root属组,这样es就不能访问配置文件了。
es配置文件原来权限,注意我是用rpm包安装的,属主是root,严格来说es配置文件属主跟属组都应该是elasticsearch;
rpm包安装完成后会自动创建elasticsearch用户,我们只要改改属主跟属组即可,另外很多文章说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_视频