Linux配置最新版Elasticsearch、head、kibana、logstash

一、es的安装
1、下载https://www.elastic.co/downloads/elasticsearch


2、环境centos7、jdk8
(1)如果是centos6,会报一些警告,倒是没有什么影响,但比较难受
(2)jdk8,不能低于这个版本,但我也没有试过jdk9


3、新建用户(es直接用root用户无法启动,可以启动时设置bin/elasticsearch -Des.insecure.allow.root=true,但不推荐)
(1)useradd es
(2)passwd es


4、建es目录
(1)mkdir /es
(2)将es安装包上传到es目录
(3)解压tar -zxvf elasticsearch-6.2.4.tar.gz
(4)将es目录权限给es用户  chown -R es:es es


5、使用es用户
su es


6、创建data数据目录和日志目录
mkdir -p /es/elasticsearch/data
mkdir -p /es/elasticsearch/logs


7、编辑es的配置文件
vi config/elasticsearch.yml
cluster.name: xxx 集群名称,同一集群必须一样
node.name: xxx 节点名称,同一集群必须不一样
path.data: /es/elasticsearch/data/
path.logs: /es/elasticsearch/logs/
network.host: 0.0.0.0 指定外网可以访问
http.port: 9200
# 集群发现
#集群节点ip或者主机(单机不需要,注释掉)
discovery.zen.ping.unicast.hosts: ["192.168.1.50", "192.168.1.51","192.168.1.52"]     
#设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)                                                                         
discovery.zen.minimum_master_nodes: 3  


8、用root用户,修改 Linux下/etc/security/limits.conf文件设置
更改linux的最大文件描述限制要求 
添加或修改如下: 
* soft nofile 262144 
* hard nofile 262144(soft代表软件限制,hard代表硬件限制)
更改linux的锁内存限制要求 
添加或修改如下: 
用户(elasticsearch) soft memlock unlimited 
用户(elasticsearch) hard memlock unlimited
最后配置如下


vim /etc/security/limits.conf


* soft nofile 262144    (这里的262144是elasticsearch6要求的最小数,低于这个值会报错)                                                                                                                                          
* hard nofile 262144                                                                                                                                             
es soft memlock unlimited (es是用户名)                                                                                                                                        
es hard memlock unlimited 


注销,再次登录用ulimit -a查看open files是否是你设置的数


9、root用户,修改linux下/etc/security/limits.d/20-nproc.conf文件设置(这个文件名可能不一样,但都是xx-nproc.conf)
更改linux的的最大线程数,添加或修改如下: 
* soft nproc unlimited


vim /etc/security/limits.d/20-nproc.conf
*          soft    nproc     unlimited (这里的*代表任何用户)
root       soft    nproc     unlimited


10、修改Linux下/etc/sysctl.conf文件设置
不更改,es启动会报错max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
(1)更改linux一个进行能拥有的最多的内存区域要求,添加或修改如下: 
vm.max_map_count = 262144
(2)更改linux禁用swapping,添加或修改如下: 
vm.swappiness = 1
vim /etc/sysctl.conf


vm.max_map_count = 262144
vm.swappiness = 1


修改后执行sysctl -p使配置生效


11、启动es,访问xx.xx.xx.xx:9200,出现json数据代表成功




二、elasticsearch-head插件安装
采用nodejs安装
6.X中,elasticsearch-head
不能放在elasticsearch的 plugins、modules 目录下
不能使用 elasticsearch-plugin install


1、修改config/elasticsearch.yml 
添加
http.cors.enabled: true  (如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。)
http.cors.allow-origin: "*" (如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。)


2、下载elasticsearch-head
https://github.com/mobz/elasticsearch-head
我是从windows下载后,解压重命名为elasticsearch-head,然后xftp到/es下面
即完整目录为/es/elasticsearch-head


3、将/es/elasticsearch-head权限给es用户,用root用户执行
chown -R es:es es


4、安装nodejs
(1)下载https://nodejs.org/en/download/ 到/es下
(2)解压tar -xvf node-v8.11.2-linux-x64.tar.xz(注意是-xvf,没有z)
(3)配置环境变量
vi /etc/profile
下方追加
export NODEJS_HOME=/es/node-v8.11.2-linux-x64
export PATH=$PATH:$NODEJS_HOME/bin
(4)执行source /etc/profile使环境起作用
(5)检查nodejs
node -v
出现版本号代表成功


5、使用npm安装grunt,执行
npm install -g grunt-cli


6、切换到es用户,进入/es/elasticsearch-head目录,执行npm install
如果报错npm ERR! Error: EACCES: permission denied, access '/es/node-v8.11.2-linux-x64/lib/node_modules'
则需要切换到root用户,执行chown -R es:es es,因为之前的nodejs是在root用户下安装的,需要给es权限
如果因网络问题无法安装,可使用国内镜像npm install -g cnpm --registry=https://registry.npm.taobao.org
安装成功,最后会显示类似
added 917 packages in 20.153s


7、修改/es/elasticsearch-head/Gruntfile.js
找到connect:server,添加hostname一项,如下
connect: {
                        server: {
                                options: {
                                        hostname: '0.0.0.0',
                                        port: 9100,
                                        base: '.',
                                        keepalive: true
                                }
                        }
                }


8、启动head服务
在/es/elasticsearch-head 执行grunt server
(1)报错
Local Npm module "grunt-contrib-jasmine" not found. Is it installed?
执行npm install grunt-contrib-jasmine
还是报错
Failed at the [email protected] install script.
执行npm install [email protected]  --ignore-scripts
再执行npm install grunt-contrib-jasmine


在/es/elasticsearch-head目录下执行 grunt server
出现Started connect web server on http://localhost:9100 则启动成功


9、再启动elasticsearch
注意,一定要先操作(二、1)
浏览器输入x.x.x.x:9100
如果浏览器和安装es的机器不是同一个,在需要将左上方http://localhost:9200改为http://ip:9200 ,点击连接,连接后出现集群的名称


(注:安装过程中基本任何的报错都可以百度解决,所以不要怕出错,出错了就看红色Err提示的信息)








三、安装kibana
1、下载kibana,需要确保kibaka的版本和elasticsearch的版本是相同的
2、解压到/es目录下
3、配置config/kibana.yml
# vim config/kibana.yml
server.host: "x.x.x.x"                # kibana运行在哪台机器
elasticsearch.url: "http://x.x.x.x:9200"      # kibana监控哪台es机器
4、运行
bin/kibana
5、浏览器输入http://x.x.x.x:5601


注:如果后台运行服务
nohup 命令 &






四、logstash
1、下载对应版本的logstash
2、解压到/es目录下
3、测试logstash
(1)进入logstash目录
(2)运行bin/logstash -e 'input { stdin { } } output { stdout {} }'
(3)输入随意字符串,这里输入hello,按enter
显示
{  
       "message" => "hello",  
      "@version" => "1",  
    "@timestamp" => "2017-04-21T02:36:01.834Z",  
          "host" => "172_30_194_180"  
}  
代表OK
5、与logback结合
(1)在/es/logstash目录下建一个文件
vi logstash.conf
input {  
tcp {  
    ##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启9250端口接收logback发出的消息  
    host => "x.x.x.x"  
    port => 9250  
    #模式选择为server  
    mode => "server"  
    tags => ["tags"]  
    ##格式json  
    codec => json_lines  
  }  
 }  
output {  
    stdout { codec => rubydebug }  
    #这里是es的地址  
    elasticsearch { hosts => "x.x.x.x:9200" }  
}  
(2)启动用这个配置启动logstash
nohup bin/logstash -f logstash.conf &


(3)建一个spring boot项目

pom.xml中引入依赖

 
 
<dependency>
   <groupId>net.logstash.logback</groupId>
   <artifactId>logstash-logback-encoder</artifactId>
   <version>4.11</version>
</dependency>
在logback.xml中加logstash配置
<!--logstash-->  
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">  
    <destination>x.x.x.x:9250</destination>  
    <!-- encoder必须配置,有多种可选 -->  
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />  
</appender>  


加入到需要监控的logger中:
<root level="info">
<appender-ref ref="LOGSTASH"/>
</root>


(4)在项目打log
(5)启动项目
(6)使用elasticsearch-head查询索引,发现已经有logstash-***的索引了
(7)可以用kibana查看了


OK了。。。。


参考:

https://blog.csdn.net/pretendjoke/article/details/70295454

https://www.cnblogs.com/yincheng/p/logstash.html

https://www.cnblogs.com/zhyg/p/6994314.html

https://blog.csdn.net/qq_21383435/article/details/79367821

猜你喜欢

转载自blog.csdn.net/juan0728juan/article/details/80624034
今日推荐