zoukankan      html  css  js  c++  java
  • 七、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_视频

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    02 createJS中关于图片优化的问题(推荐一个图片优化的网站)
    01 createJS代码作用域
    文件读取一些payload
    SQL注入笔记-updatexml与extractvalue
    四位数六位数字典生成
    XShell上传文件到Linux服务器上
    centos彻底删除文件夹创建文件
    2020.6.18 时间记录 总学习5.15
    2020.6.14 时间记录
    五种IT职位的介绍
  • 原文地址:https://www.cnblogs.com/tz90/p/15211022.html
Copyright © 2011-2022 走看看