设为首页 收藏本站
查看: 1293|回复: 0

[经验分享] 【ELK】02、ElasticSearch基础

[复制链接]
发表于 2019-1-28 09:26:59 | 显示全部楼层 |阅读模式
  

  一、搜索引擎
  海量日志如何分析,需要搜索引擎(这只是其中的一种解决方案)
  索引引擎全文搜索依赖全文索引
  

  搜索引擎一般由两部分组成:
        索引组件:存储数据并构建索引
  原始内容 --> 获取 --> 构建文档 --> 文档分析(切词)--> 创建索引
        搜索组件:
  UI --> 构建查询 --> 运行查询 (结果返回给UI) 索引
  UI(搜索接口):提供用户接口,例如google的输入框
  

  搜索引擎的索引一般都是倒排索引
  倒排索引: 使用字段搜索文档
  正排索引:使用文档搜索字段
  

  二、lucene
  提供索引链功能,是一个开发库
  文档:Document
  包含了一个或多个域的容器
  field:value
  

  域有很多选项:

  索引选项:用于通过倒排索引来控制文本是否可被搜索
  Index.ANALYZED
  分析(切词)并单独作为索引项
  Index.Not_ANALYZED
  不分析(不切词),把整个内容当作一个索引项
  Index.ANALYZED_NORMS
  类似于Index:ANALYZED,但不存储token的Norms(加权基准)信息
  Index.NOT_ANALYZED_NORMS
  类似于Index.Not_ANALYZED_NORMS,但不存储token的Norms(加权基准)信息
  Index.NO:不对此域的值作索引,不可被搜索
  

  存储选项:是否需要存储域的分析前的真实值
  store.YES:存储真实值
  store.NO:不存储真实值
  

  域向量使用选项:用于在搜索期间控制该文档所有的唯一项都能完全从文档中检索时使用

  

  文档和域的加权操作:
  默认都没有加权值(或都为1),加权计算标准
  

  搜索:
  查询lucene索引时,它返回的是一个有序的scoreDoc对象,查询时,lucene会为每个文档计算出其score,
  

  lucene提供大量的API:

  IndexSearcher:搜索索引入口
  Query及其子类:
  QueryParser:查询分析器
  TopDocs:保存某一次查询操作当中score较高的前10个值
  ScoreDoc:

  

  Lucene支持多样化查询:
  IndexSearch中的search方法:

  TermQuery:对索引中的特定项进行搜索;Term是索引中最小片段,每个Term包含了一个域名和一个文本值
  TermRangQuery:在索引中的多个特定项中进行搜索,能搜索指定的多个域
  NumericRangeQuery:做数值范围搜索
  PrefixQuery:用于搜索以指定字符串开头的项
  BooleanQuery:用于实现组合查询,组合逻辑有:AND,OR,NO
  PhraseQuery:没有分词,根据位置信息对文档进行搜索
  WildcardQuery:通配符查询
  FuzzyQuery:模糊查询,匹配相似的项(域);Levenshtein,距离算法
  

  

  三、ElasticSearch
  1、ElasticSearch简介
  是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统(将1个索引切片成shard实现分布式)。它构建于Apache Lucene搜索引擎库之上。
  

  ElasticSearch是一个基于Lucene实现的开源、分布式、Restful的全文本搜索引擎,此外,它还是一个分布式实时文档存储,其中每个文档的每个field均是被索引的数据,且可被搜索;也是一个带实时分析功能的分布式搜索引擎,能够扩展至数以百计的节点,实时处理PB级的数据。
  

  2、ElasticSearch的基本组件
  索引(index):
  文档的集合(容器),索引是具有类似属性的文档的集合,类似于表,索引名必须使用小写字母
  类型(type):
  类型是索引内部的逻辑分区,其意义完全取决于用户需求,一个索引内部可定义一个或多个类型;一般来说,类型就是拥有相同的域的文档的预定义;类似于表的表结构(字段),但没有约束性,
  文档(document)
  文档是lucene索引和搜索的原子单位,它包含了一个或多个域,是域的容器,基于JSON格式表示。
  每个域的组成部分:一个名字和一个或多个值,用于多个值的域,通常称为多值域;文档可以嵌套 映射:
  原始内容存储为文档之前需要事先进行分析(例如切词,过滤掉某些词等),映射用于定义此分析机制该如何实现;除此之外,ES还为映射提供了诸如将域中的内容排序等功能,
  

  3、ES的集群组件
  Cluster:
   ES的集群标识为集群名称,默认为elasticsearch。节点就是靠此名字来决定加入到哪个集群中,一个节点只能属于一个集群
  Node:
  运行了单个ES实例的主机即为节点,用于存储数据、参与集群索引及搜索操作。
  节点的标识靠节点名
  Shard:
  将索引切割成为物理存储的组件,但每1个shard都是一个独立且完整的索引
  创建索引时,ES默认将其分割为5个shard,用户也可以按需自定义,创建完成之后不可修改。
  shard有两种类型:
  primary shard:每个索引都会被ES切割成5个primary shard
  replica shard:每个primary shard都至少应该有一个replica shard
  用于数据冗余及查询时的负载均衡(replica shard也可读写),每个primary shard的replica的副本数量可自定义,且可动态更改
  

  4、ES Cluster工作过程
   启动时,通过多播(默认)或单播方式在9300/tcp查找同一集群中的其它节点,并与之通信。

  集群中所有节点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各shards的分布方式。站在用户角度而言,每个节点均可接受并响应用户的各类请求。
  

  

  四、ElasticSearch安装
  项目官网:www.elastic.co
  1、elasticsearch的安装      
[root@node2 ~]# ls elasticsearch-5.3.0.rpm
elasticsearch-5.3.0.rpm
[root@node2 ~]# yum install elasticsearch-5.3.0.rpm
[root@node2 ~]# rpm -ql elasticsearch
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties
/etc/elasticsearch/scripts
/etc/init.d/elasticsearch
/etc/sysconfig/elasticsearch
/usr/lib/sysctl.d/elasticsearch.conf
/usr/lib/systemd/system/elasticsearch.service
/usr/lib/tmpfiles.d/elasticsearch.conf
/usr/share/elasticsearch/LICENSE.txt
/var/lib/elasticsearch
/var/log/elasticsearch
/var/run/elasticsearch  

  2、ES的配置
  ES节点,拥有相同的集群名即为同一个集群的节点,修改节点名称和对应的IP即可
  # ================= Elasticsearch Configuration ===================
  # 配置es的集群名称, es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群
  cluster.name: RK
  

  # 节点名称
  node.name: node2
  

  # 指定该节点是否有资格被选举成为node,默认为true
  node.master: true
  

  # 指定该节点是否存储索引数据,默认为true
  node.data: true
  

  # 设置绑定的ip地址还有其它节点和该节点交互的ip地址
  network.host: 0.0.0.0
  

  # 指定http端口,你使用headkopf等相关插件使用的端口,默认9200
  http.port: 9200
  

  # 设置节点间交互的tcp端口,默认是9300
  transport.tcp.port: 9300
  

  # 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
  一定要添加,否则集群找不到节点
  discovery.zen.ping.unicast.hosts: ["192.168.10.2","192.168.10.7:9300”]
  

  # 如果要使用head,那么需要增加新的参数,使head插件可以访问es
  http.cors.enabled: true
  http.cors.allow-origin: "*"

配置项要统一,要么加空格,要么都不加.
  

  3、启动elasticsearch
[root@node2 ~]# service elasticsearch start
Starting elasticsearch: Exception in thread "main" java.lang.NoClassDefFoundError: org.elasticsearch.tools.JavaVersionChecker
   at gnu.java.lang.MainThread.run(libgcj.so.10)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.tools.JavaVersionChecker not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/usr/share/elasticsearch/lib/elasticsearch-5.3.0.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.10)
   at java.lang.ClassLoader.loadClass(libgcj.so.10)
   at java.lang.ClassLoader.loadClass(libgcj.so.10)
   at gnu.java.lang.MainThread.run(libgcj.so.10)
Elasticsearch requires at least Java 8 but your Java version from /usr/bin/java does not meet this requirement
                                                           [FAILED]  elasticsearch需要运行于jvm虚拟机上,依赖于java

  JDK:
  Oracle JDK       更稳定
  OpenJDK
  这里我们使用openjdk
[root@node2 ~]# yum install java-1.8.0-openjdk
[root@node2 ~]# rpm -ql java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64/jre/lib/amd64/libawt_xawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64/jre/lib/amd64/libjawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64/jre/lib/amd64/libjsoundalsa.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64/jre/lib/amd64/libsplashscreen.so
/usr/share/applications/java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64-policytool.desktop
/usr/share/icons/hicolor/16x16/apps/java-1.8.0.png
/usr/share/icons/hicolor/24x24/apps/java-1.8.0.png
/usr/share/icons/hicolor/32x32/apps/java-1.8.0.png
/usr/share/icons/hicolor/48x48/apps/java-1.8.0.png
[root@node2 ~]# java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
[root@node2 ~]# rpm -qa|grep jdk
java-1.8.0-openjdk-1.8.0.121-1.b13.el6.x86_64                 # jre环境
java-1.8.0-openjdk-headless-1.8.0.121-1.b13.el6.x86_64        #
[root@node2 alternatives]# ls -l `\which java`
lrwxrwxrwx 1 root root 22 Apr 16 16:28 /usr/bin/java -> /etc/alternatives/java
[root@node2 alternatives]# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 46 Apr 16 16:28 /etc/alternatives/java -> /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
[root@node2 alternatives]# ls -l /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
-rwxr-xr-x 1 root root 5128 Mar 23 00:19 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
[root@sb java]# rpm -qi java-1.8.0-openjdk-devel   # 开发环境
Name        : java-1.8.0-openjdk-devel     Relocations: (not relocatable)
Version     : 1.8.0.121                         Vendor: CentOS
Release     : 1.b13.el6                     Build Date: Thu 23 Mar 2017 12:43:05 AM CST
Install Date: Sun 16 Apr 2017 04:47:46 PM CST      Build Host: c1bm.rdu2.centos.org
Group       : Development/Tools             Source RPM: java-1.8.0-openjdk-1.8.0.121-1.b13.el6.src.rpm
Size        : 42048087                         License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
Signature   : RSA/SHA1, Thu 23 Mar 2017 10:59:19 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem
URL         : http://openjdk.java.net/
Summary     : OpenJDK Development Environment
Description :
The OpenJDK development tools.

[root@sb java]# rpm -qi java-1.8.0-openjdk    # 运行环境,其实这里只要运行环境就可以了
Name        : java-1.8.0-openjdk           Relocations: (not relocatable)
Version     : 1.8.0.121                         Vendor: CentOS
Release     : 1.b13.el6                     Build Date: Thu 23 Mar 2017 12:43:05 AM CST
Install Date: Sun 16 Apr 2017 04:47:43 PM CST      Build Host: c1bm.rdu2.centos.org
Group       : Development/Languages         Source RPM: java-1.8.0-openjdk-1.8.0.121-1.b13.el6.src.rpm
Size        : 502173                           License: ASL 1.1 and ASL 2.0 and GPL+ and GPLv2 and GPLv2 with exceptions and LGPL+ and LGPLv2 and MPLv1.0 and MPLv1.1 and Public Domain and W3C
Signature   : RSA/SHA1, Thu 23 Mar 2017 11:02:09 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem
URL         : http://openjdk.java.net/
Summary     : OpenJDK Runtime Environment
Description :
The OpenJDK runtime environment.  启动elasticsearch:
[root@node2 ~]# service elasticsearch start
tcp        0      0 ::ffff:127.0.0.1:9200       :::*                        LISTEN      
tcp        0      0 ::1:9200                    :::*                        LISTEN        
tcp        0      0 ::ffff:127.0.0.1:9300       :::*                        LISTEN      
tcp        0      0 ::1:9300                    :::*                        LISTEN  参与集群选举时所使用的端口 transport.tcp.port:9300

  工作时的端口 http.port:9200

  

  五、ElasticSearch使用
  1、Restful风格API

  四类API:
      检查集群、节点、索引等是否健康一级获取其相应状态
      管理集群,节点、索引及元数据
      执行CRUD操作
      执行高级操作,例如paging,filtering等
  

  ES访问接口:9200/tcp    基于http协议工作
  

  访问格式:
   curl   -X    '://HOST:PORT/?'  -d  ''
  VERB:GET,PUT,DELETE等
  PROTOCOL:http,https
  QUERY_STRING:查询参数、例如:?pretty表示使用易读的JSON格式输出
  BODY:请求的主体
[root@node2 ~]# curl localhost:9200
{
  "name" : "VfX5IAN",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "dkcXcQERQkyBcmMTe2svtQ",
  "version" : {
    "number" : "5.3.0",
    "build_hash" : "3adb13b",
    "build_date" : "2017-03-23T03:31:50.652Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}  

  2、_cat API
[root@node2 ~]# curl localhost:9200/_cat
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
[root@node2 ~]# curl localhost:9200/_cat/nodes
127.0.0.1 5 99 0 0.00 0.03 0.13 mdi * VfX5IAN
[root@node2 ~]# curl localhost:9200/_cat/health
1492335961 17:46:01 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%
[root@node2 ~]# curl localhost:9200/_cat/nodes?v    # ?v表示显示详细信息
ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1            5          99   0    0.00    0.02     0.10 mdi       *      VfX5IAN
VfX5IAN9QVOXJVr-P5GR0w 127.0.0.1 127.0.0.1 VfX5IAN
[root@node2 ~]# curl localhost:9200/_cat/health?v
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1492336105 17:48:25  elasticsearch green           1         1      0   0    0    0        0             0                  -                100.0%  

  3、_Cluster API
  查看集群信息

  health:健康信息
  curl 'localhost:9200/_cluster/health?pretty'
  state:状态信息
   curl 'localhost:9200/_cluster/state/?pretty'
  stats:统计信息
  curl 'localhost:9200/_cluster/stats'
  节点的统计信息:
  curl 'localhost:9200/_nodes/stats'
  

  详见官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
[root@Node2 ~]# curl localhost:9200/_cluster/health
{"cluster_name":"rk","status":"green","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}[root@Node2 ~]#
[root@Node2 ~]# curl localhost:9200/_cluster/health?pretty
{
  "cluster_name" : "rk",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
[root@Node2 ~]#
[root@Node2 ~]# curl localhost:9200/_cluster/state?pretty
{
  "cluster_name" : "rk",
  "version" : 2,
  "state_uuid" : "cJ859WPFSk-_PoT0Z41UgA",
  "master_node" : "VfX5IAN9QVOXJVr-P5GR0w",
  "blocks" : { },
  "nodes" : {
    "VfX5IAN9QVOXJVr-P5GR0w" : {
      "name" : "xj",
      "ephemeral_id" : "zU4b7O6QR-SRl39YWmcLqA",
      "transport_address" : "127.0.0.1:9300",
      "attributes" : { }
    }
  },
  "metadata" : {
    "cluster_uuid" : "dkcXcQERQkyBcmMTe2svtQ",
    "templates" : { },
    "indices" : { },
    "index-graveyard" : {
      "tombstones" : [ ]
    }
  },
  "routing_table" : {
    "indices" : { }
  },
  "routing_nodes" : {
    "unassigned" : [ ],
    "nodes" : {
      "VfX5IAN9QVOXJVr-P5GR0w" : [ ]
    }
  }
}  

  

  

  

  六、ES的插件
         当前es官方推荐的拓展组件为Kibana和X-Pack,而X-Pack需要依赖于Kibana
  通过插件来扩展ES的功能:
  添加自定义的映射类型
                         自定义分析器
                         自定义发现方式
                         本地脚本
  安装插件的方式:
  1) 直接将插件(下载解压后)放置于plugins目录下:/usr/share/elasticsearch/plugins/
  2)使用elasticsearch-plugin脚本进行安装
[root@Node2 plugins]# /usr/share/elasticsearch/bin/elasticsearch-plugin -h
A tool for managing installed elasticsearch plugins
Commands
--------
list - Lists installed elasticsearch plugins
install - Install a plugin
remove - Removes a plugin from elasticsearch
Non-option arguments:
command              
Option         Description        
------         -----------        
-h, --help     show help         
-s, --silent   show minimal output
-v, --verbose  show verbose output  

  1、安装X-Pack

         X-Pack是一个Elastic Stack的扩展,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包中。在Elasticsearch 5.0.0之前,您必须安装单独的Shield,Watcher,Marve,Graph, Reportingl插件才能获得在X-Pack中所有的功能。
  
安装前提:
       Elasticsearch 5.0.2
       Kibana 5.0.2
  在Es的根目录(每个节点),运行 bin/elasticsearch-plugin install X-Pack进行安装。
[root@Node2 ~]# /usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack
[root@Node2 ~]# /usr/share/elasticsearch/bin/elasticsearch-plugin list
x-pack  

  2、安装kibana
           Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。
           kibana是一个与elasticsearch一起工作的开源的分析和可视化的平台。使用kibana可以查询、查看并与存储在elasticsearch索引的数据进行交互操作。使用kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。
kibana使得理解大容量的数据变得非常容易。它非常简单,基于浏览器的接口使我们能够快速的创建和分享显示elasticsearch查询结果实时变化的仪表盘。
在Elasticsearch 5版本之前,一般都是通过安装Kibana,而后将Marvel、Hand等各种功能插件添加到Kibana上使用。在Elasticsearch 5版本之后,一般情况下只需要安装一个官方推荐的X-pack扩展包即可。
注意:

  •   https://www.elastic.co/downloads/kibana 可以在该地址获取下载链接,一定要选择对于系统和版本。
  •   按照文档的要求,一般情况下kibana的版本必须和Elasticsearch安装的版本一致。
[root@Node2 ~]# yum install kibana-5.3.0-x86_64.rpm
[root@Node2 ~]# rpm -ql kibana
/etc/default/kibana
/etc/init.d/kibana
/etc/kibana/kibana.yml
/etc/systemd/system/kibana.service
/usr/share/kibana/LICENSE.txt
/usr/share/kibana/NOTICE.txt
/usr/share/kibana/README.txt
/usr/share/kibana/bin/kibana
/usr/share/kibana/bin/kibana-plugin
/usr/share/kibana/node/CHANGELOG.md
/usr/share/kibana/node/LICENSE
/usr/share/kibana/node/README.md
/usr/share/kibana/node/bin/node
/usr/share/kibana/node/bin/npm修改配置文件
  $ vim config/kibana.yml
  server.port: 5601
  server.host: "192.168.10.2"
  elasticsearch.url: "http://192.168.10.2:9200"
暂时先不启动
  

  marvel

  Marvel是Elastic公司推出的商业监控方案,是用来监控Elasticsearch集群,历史状态的有力工具,便于性能优化以及故障诊断。监控主要分为六个层面,分别是集群层、节点层、索引层、分片层、事件层、Sense。
       Marvel是以Elasticsearch插件的形式存在的。在最新版本中Marvel有两个组件,一个是代理,需要安装在Elasticsearch集群中,一个是Kibana的插件,需要安装在Kibana中。
  从ES 5开始,Marvel被集成至X-Pack

Marvel插件:在簇中从每个节点汇集数据。这个插件必须每个节点都得安装。

Marvel是Elasticsearch的管理和监控工具,在开发环境下免费使用。它包含了Sense。
Sense
          交互式控制台,使用户方便的通过浏览器直接与Elasticsearch进行交互。


  kibana安装x-pack插件
[root@Node2 ~]# /usr/share/kibana/bin/kibana-plugin install x-pack
[root@Node2 ~]# /usr/share/kibana/bin/kibana-plugin list
x-pack@5.3.0  安装过程比较久,耐心等待
运行kibana

启动之前需要禁用X-Pack 插件 security
  

  vim config/kibana.yml
  

  vim config/elasticsearch.yml
  

  添加以下内容
  xpack.security.enabled: false
  

先启动es节点,再启动Kibana
[root@Node2 kibana]# service kibana start  

  这里可能会因为权限问题导致kibana启动不了:

[root@Node2 kibana]# cat kibana.stderr
FATAL { Error: EACCES: permission denied, open '/usr/share/kibana/optimize/bundles/graph.entry.js'
    at Error (native)
  cause:
   { Error: EACCES: permission denied, open '/usr/share/kibana/optimize/bundles/graph.entry.js'
       at Error (native)
     errno: -13,
     code: 'EACCES',
     syscall: 'open',
     path: '/usr/share/kibana/optimize/bundles/graph.entry.js' },
  isOperational: true,
  errno: -13,
  code: 'EACCES',
  syscall: 'open',
  path: '/usr/share/kibana/optimize/bundles/graph.entry.js' }
[root@Node2 kibana]# ls -l /usr/share/kibana/optimize/bundles/graph.entry.js
-rw-r--r-- 1 root root 1555 Apr 18 08:17 /usr/share/kibana/optimize/bundles/graph.entry.js
[root@Node2 kibana]# ls -l /usr/share/kibana/
total 704
drwxr-xr-x   2 root   root     4096 Apr 18 07:26 bin
-rw-rw-r--   1 root   root      562 Mar 23 11:47 LICENSE.txt
drwxr-xr-x   6 root   root     4096 Apr 18 07:26 node
drwxr-xr-x 480 root   root    20480 Apr 18 07:26 node_modules
-rw-rw-r--   1 root   root   652779 Mar 23 11:47 NOTICE.txt
drwxr-xr-x   3 kibana kibana   4096 Apr 18 07:26 optimize
-rw-rw-r--   1 root   root      701 Mar 23 11:47 package.json
drwxrwxr-x   3 kibana kibana   4096 Apr 18 08:16 plugins
-rw-rw-r--   1 root   root     4963 Mar 23 11:47 README.txt
drwxr-xr-x  10 root   root     4096 Apr 18 07:26 src
drwxr-xr-x   3 root   root     4096 Apr 18 07:26 ui_framework
drwxr-xr-x   2 root   root     4096 Apr 18 07:26 webpackShims
### 更改相应文件的权限即可
[root@Node2 kibana]# chown kibana. -R  /usr/share/kibana/

验证X-Pack

  在浏览器上输入: http://localhost:5601,可以打开Kibana,此时需要输入用户名和密码登录,默认分别是 elastic 和 changeme。(如果上面禁用了x-pack的security功能就不需要认证)
  

  3、安装head插件
  需要先安装node,grunt
  elasticsearch 5+ 不能直接安装head插件
  由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。
  1)安装node
[root@Node2 ~]# ls node-v6.10.2-linux-x64.tar.xz
node-v6.10.2-linux-x64.tar.xz
[root@Node2 ~]# tar xf node-v6.10.2-linux-x64.tar.xz
[root@Node2 ~]# ls node-v6.10.2-linux-x64
bin  CHANGELOG.md  include  lib  LICENSE  README.md  share
[root@Node2 ~]# ls node-v6.10.2-linux-x64/bin/ -l
total 29792
-rwxrwxr-x 1 help help 30503659 Apr  4 17:01 node
lrwxrwxrwx 1 help help       38 Apr 19 16:33 npm -> ../lib/node_modules/npm/bin/npm-cli.js
# 设置软链
[root@Node2 ~]# ln -sv /root/node-v6.10.2-linux-x64/bin/node /usr/local/bin/node
`/usr/local/bin/node' -> `/root/node-v6.10.2-linux-x64/bin/node'
[root@Node2 ~]# ln -sv /root/node-v6.10.2-linux-x64/bin/npm /usr/local/bin/npm
`/usr/local/bin/npm' -> `/root/node-v6.10.2-linux-x64/bin/npm'
# 设置npm代理镜像
[root@Node2 ~]# npm config set registry https://registry.npm.taobao.org
# 安装、配置grunt
[root@Node2 ~]# npm install -g grunt
[root@Node2 ~]# ln -s /root/node-v6.10.2-linux-x64/lib/node_modules/grunt/bin/grunt /usr/local/bin/grunt
[root@Node2 ~]# grunt --version
grunt-cli v1.2.0  grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,ES 5+ 里的head插件就是通过grunt启动的。
  

  2)安装head
[root@Node2 ~]# git clone git://github.com/mobz/elasticsearch-head.git
[root@Node2 ~]# cd elasticsearch-head/      
[root@Node2 elasticsearch-head]# ls
Dockerfile                          Gruntfile.js       LICENCE                       proxy           src
Dockerfile-alpine                   grunt_fileSets.js  package.json                  README.textile  test
elasticsearch-head.sublime-project  index.html         plugin-descriptor.properties  _site
[root@Node2 elasticsearch-head]# npm install
### 将elasticsearch-head直接移到ES的plugins目录下应该也可以(没测试)  修改_site/app.js
// 把localhost改为ip
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.10.2:9200";修改Gruntfile.js
connect: {
    server: {
        options: {                                                                                                                                                                                                                                                   
            hostname: "0.0.0.0", #这里
            port: 9100,            base: '.',
            keepalive: true
        }   
    }   
}  

  启动grunt
[root@Node2 elasticsearch-head]# nohup grunt server &
[2] 6719
[root@Node2 elasticsearch-head]# nohup: ignoring input and appending output to `nohup.out'  

  

七、ElasticSearch配置安装中遇到的问题
         安装后,默认启动没问题,但配置es监听在别的ip上再启动就会报错(默认只监听在127.0.0.1)

  

0、启动elasticSearch

这里需要注意的是,es规定 root用户不能启动 es,所以需要创建一个用户来启动 es(源码安装)
# 创建用户名为 es 的用户
useradd es -p
# 设置 es 用户的密码
passwd es
# 将 /usr/local/elasticsearch-5.2.0 的拥有者设置为 es
chown -R es:es /usr/local/elasticsearch-5.2.0# 创建 es 的 data 和 logs 目录
mkdir -p /data/elasticsearch/data /data/elasticsearch/logs
chown -R es:es /data/elasticsearch编辑配置文件config/elasticsearch.yml
network.host: 你自己的服务器ip
http.port: 9200切换到 es 用户,启动 es
bin/elasticsearch

可能会出现如下两个错误:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]第一个问题解决方法:
#切换到root用户修改
vim /etc/security/limits.conf
# 在最后面追加下面内容
es hard nofile 65536
es soft nofile 65536修改后重新登录 es 用户,使用如下命令查看是否修改成功
ulimit -Hn 65536

第二个问题解决方法 提高vm.max_map_count 的大小
# 切换到root用户
vim /etc/sysctl.conf
# 在最后面追加下面内容
vm.max_map_count=262144# 使用 sysctl -p 查看修改后的结果
sysctl -p在阿里云上可能出现的问题:
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk解决方法:在es配置中加入下面命令即可
bootstrap.system_call_filter: false  

以root身份运行
  root@yxjay:/opt/elasticsearch-2.3.5/bin# ./elasticsearch
  Exception in thread "main" Java.lang.RuntimeException: don't run elasticsearch as root..
  解决方法1:
  在执行elasticSearch时加上参数-Des.insecure.allow.root=true,完整命令如下
  ./elasticsearch -Des.insecure.allow.root=true
  解决办法2:
  用vi打开elasicsearch执行文件,在变量ES_JAVA_OPTS使用前添加以下命令
  ES_JAVA_OPTS="-Des.insecure.allow.root=true"
  这个方法的好处是以后不用添加参数就能以root身份执行.
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668528-1-1.html 上篇帖子: elk高可用架构 下篇帖子: ELK 学习站点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表