ELK安装配置

1.安装JDK前把原来的java卸载

[root@localhost ~]# rpm -qa|grep java
tzdata-java-2016c-1.el6.noarch
java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64
[root@localhost ~]# yum -y remove java

# 创建用户(高版本的elasticsearch不能再root环境运行,版本2的好像行,坑死了)

[root@localhost ~]# useradd elk
[root@localhost ~]# passwd elk

cd  /home/elk

安装JDK(如果没有wget命令,yum安装,yum –y install wget),当然用wind下载好JDK在拉进linux安装也行

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz

tar xf jdk-8u141-linux-x64.tar.gz

mv jdk1.8.0_141/  jdk8

 

vim /etc/profile

加入

export JAVA_HOME=/home/elk/jdk8

export JAVA_BIN=/home/elk/jdk8

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

 

[root@localhost elk]# source /etc/profile

 

[root@localhost elk]# java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

 

 

 

2.修改系统环境配置满足运行Elasticsearch

vim /etc/security/limits.conf,配置永久 打开最大文件数,和用户进程数

* soft nofile 65536

* hard nofile 65536

* soft nproc 10240

* hard nproc 10240

ulimit -SHn 65536               #临时打开最大文件描述符

ulimit -SHu 65536               #临时打开最大进程数

#Linux 6.4之后,如果只修改了该文件中的nproc,那么其他非root用户对应的max_user_processes并不会改变,仍然是1024,这个是因为受到了下面这个文件的影响,改成和nproc 10240一样

vim /etc/security/limits.d/90-nproc.conf                

 

#需要退出root用户重新登录普通用户才生效

 

# 限制虚拟内存

echo "vm.max_map_count=262144" >>/etc/sysctl.conf

[root@localhost ~]# sysctl -p

[root@localhost ~]# cd  /home/elk/

使用wget 下载elasticsearch安装包

wget  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz

解压

tar -zxvf elasticsearch-6.2.2.tar.gz

[root@localhost elk]# chmod -R  777 /home/elk/

[root@localhost ~]# su - elk

3.解压配置Elasticsearch的主要修改配置
image

 

配置文件的elasticsearch.yml主要修改(其实单台机安装什么都默认都可以启动,如果是虚拟环境注意 jvm.options默认的内存大小就行了,默认是2G但虚拟机环境不够的)

[root@localhost elk]# cd /home/elk/elasticsearch-6.2.2
[root@localhost elasticsearch-6.2.2]# vim config/elasticsearch.ym

...

#cluster.name: cluster          #单机还是不要开,如果两个节点做集群两个节点的名称一样就行,会自动加入得

#node.name: node-1               #单机还是不要开,集群两节点不能一样

network.host: 10.0.0.20                       #集群两节点不能一样

http.port: 9200                                                        #如果集群端口不能一样,第二个9201这样

bootstrap.memory_lock: false                                   #不设置会报错
bootstrap.system_call_filter: false

...

[root@localhost elasticsearch-6.2.2]# vim config/jvm.options

默认的

image

改成

-Xms512m
-Xmx512m

[root@localhost ~]# chmod -R  777 /home/elk/
[root@localhost ~]# su – elk

[elk@localhost ~]$ cd elasticsearch-6.2.2/bin/

[elk@localhost bin]$ ./elasticsearch

nohup  ./elasticsearch &                            #后台启动命令

访问测试 curl 10.0.0.20:9200

 

4.安装elasticsearch-head插件(插件我存在百度网盘)

解压

image

把0.1.3_0往浏览器插件拖

image

image

在插件上访问

image

 

 

#默认直接解压后就可以直接启动程序,如果修改后可能会出现以下问题

ERROR: [3] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [2048] for user [elk] is too low, increase to at least [4096]
[3]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

ERROR: [1] bootstrap checks failed
[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解决:

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

问题4:进程数不够

max number of threads [2047] for user [elk] likely too low, increase to at least [2048]

解决:

ulimit -a 查看所有用户的进程数

vim /etc/security/limits.conf,配置永久 打开最大文件数,和用户进程数

* soft nofile 65536

* hard nofile 65536

* soft nproc 10240

* hard nproc 10240

vim /etc/security/limits.d/90-nproc.conf      #改成和nproc 10240一样

 

 

 

 

 

 

 

 

日常使用

curl  localhost:9200    访问测试

curl localhost:9200/_cluster/health   健康状况

 

本机两个节点集群

改名字 端口

curl localhost:9201/_cluster/health   健康状况

9、search搜索语句入门之URL搜索

简介:讲解URL中的_search搜索语句的基本使用,美化响应结果, 索引的基础操作

集群健康检查

http://10.0.0.20:9200/_cat/health?v

http://10.0.0.20:9200/_cluster/health(推荐)

状态说明

green:正常

yellow: 集群正常 数据正常,部分副本不正常

red: 集群部分正常,数据可能丢失,需要紧急修复

查询节点列表

http://10.0.0.20:9200/_cat/nodes?v

查看所有索引

http://10.0.0.20:9200/_cat/indices?v

目前 集群中没有任何索引

补充:

curl

    -X 指定http的请求方法 有HEAD GET POST PUT DELETE

    -d 指定要传输的数据

    -H 指定http请求头信息

新增索引

curl -XPUT 'localhost:9201/blog_test?pretty'

curl -XPUT 'localhost:9201/blog?pretty'

删除索引

curl -XDELETE 'localhost:9200/blog_test?pretty'

新增一条记录,并指定为article类型,ID为1

curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/1?pretty' -d '

{

  "title": "小D课堂啦啦啦",

  "content":"xdclass.net  小D课堂成立于2016年的,专注互联网在线教育,课程范围包括前端,后端,大数据,人工智能,微信开发等"

}'

 

修改在添加数据测试

curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/1?pretty' -d '

{

  "title": "第二个数据",

  "content":"xdclass.net  能找到吗"

}'

 

 

Logstash(搬运工)

image

logstash插件介绍:input,filter,output

image

image

image

 

1.下载、启动、配置

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.2.tar.gz

[root@localhost elk]# tar zxvf logstash-6.2.2.tar.gz

image

image

配置

vim  /home/elk/logstash-6.2.2/config/logstash.yml

pipeline.workers: 2                              #根据CPU核数增加1到2即可

vim  /home/elk/logstash-6.2.2/config/jvm.options

### jvm.options

-Xms256m

-Xmx256m

cd /home/elk

2.启动(没配置input\output情况下,验证服务是否正常)

cd logstash-6.2.2

./bin/logstash -e 'input {stdin {}} output {stdout {}}'

 

image

普通验证

输入  wo shi shui  测试   测试正常

2.关闭logstash,配置input filter out 验证,

cd  /home/elk/logstash-6.2.2/config/

vim test1.conf                                              

input {
    # 从文件读取日志信息 输送到控制台
    file {
        path => "/home/elk/elasticsearch-6.2.2/logs/elasticsearch.log"
        #codec => "json" ## 以JSON格式读取日志
        type => "elasticsearch"                    
        start_position => "beginning"
    }
}

# filter {
#
# }

output {
    # 标准输出,读取什么输出什么
    # stdout {}
    # 输出进行格式化,采用Ruby库来解析日志  
     stdout { codec => rubydebug }
}

 

filter使用

例子

切割插件mutate,随意输入一串以|分割的字符,比如 "123|000|ttter|sdfds*=123|dfwe

配置二 test2_filter.conf

========================================

input {

   stdin {}

}

filter {  

    mutate {  

        split => ["message", "|"]  

    }  

}  

output {

    # 标准输出

    # stdout {}

    # 输出进行格式化,采用Ruby库来解析日志   

     stdout { codec => rubydebug }

}

image

 

 

 

配置三 test3_es.conf

input {
    file {
          path => "/home/elk/elasticsearch-6.2.2/logs/elasticsearch.log"
          type => "elasticsearch"
          start_position => "beginning" #从文件开始处读写
     }
}

output{
    if [type] == "elasticsearch" {
        elasticsearch{
            hosts=>["10.0.0.20:9200"]
            index => "es-message-%{+YYYY.MM.dd}"
                             }
            stdout{codec => rubydebug}
    }
}

 

 

========================================

input {

        file {

                path => "/home/elk/elasticsearch-6.2.2/logs/elasticsearch.log"

                type => "elasticsearch"

                start_position => "beginning" #从文件开始处读写

        }

}

output{

    elasticsearch{

        hosts=>["10.0.0.20:9200"]     #输出到ES中

        index => "es-message-%{+YYYY.MM.dd}"

     }

   stdout{codec => rubydebug}     #输出到控制台  

}

========================================

验证

查看索引列表 http://localhost:9201/_cat/indices?v

查看数据 http://localhost:9201/es-message-2018.02.26/_search

3.启动验证

[root@localhost config]# cd ../bin/

[root@localhost bin]# ./logstash -f ../config/test1.conf

#把elasticsearch关了再启动,测试logstash输出的日子是否和elasticsearch一样,因为上面test1.conf采集的是elasticsearch日志

logstash启动成功

image

启动elasticsearch(注意:root是启动不成功的)

root@localhost bin]# su – elk

[elk@localhost ~]$ cd elasticsearch-6.2.2/bin/

[elk@localhost bin]$ ./elasticsearch

验证结果正常

image

elasticsearch的启动日志根据test1定义的格式输出

 

kibana

image

1.下载,安装

[root@localhost ~]# cd /home/elk

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz

tar -zxvf kibana-6.2.2-linux-x86_64.tar.gz

 

2.配置外网访问

[root@localhost elk]# vim kibana-6.2.2-linux-x86_64/config/kibana.ym

默认连接的是本机elasticsearch,可在配置文件中修改

elasticsearch.url: “http://10.0.10.20:9200

 

server.host: "0.0.0.0"

 

启动(前提示es  和 logs已经启动)

[root@localhost elk]# cd kibana-6.2.2-linux-x86_64/bin/
[root@localhost bin]# ./kibana

注意:因为启动时报错访问不到 http://localhost:9200/  所以把localhost解析下

vim /etc/hosts

10.0.0.20   localhost

测试启动正常

image

kibana状态及服务器资源使用率

http://10.0.0.20:5601/status

基础操作文档:https://www.elastic.co/guide/en/kibana/current/getting-started.html

image

 

 

 

 

 

上面我是运行命令行,并且只输出到屏幕上,大部分情况下,我们都是会定义一个logstash.conf配置文件来启动Logstash,这里我们写一个完整的logstash.conf,把把对象输出到屏幕和Elasticsearch

 

input {

stdin {}

}

output {

stdout {

codec => rubydebug {}

}

elasticsearch {

hosts => ["192.168.88.3:9200"]

}

}

posted @ 2018-04-26 17:05  彭荣俭  阅读(218)  评论(0编辑  收藏  举报