ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合。

    Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

    Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

    Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    搭建前准备:

    1、创建一个本地帐号elasticsearch和elasticsearch组;

    2、#vi /proc/sys/fs/file-max,添加797934

    3、#vi /etc/security/limits.d/90-nproc.conf

        root       soft    nproc     unlimited

    4、vi /etc/sysctl.conf

        kernel.msgmnb = 65536

        kernel.msgmax = 65536

        kernel.shmmax = 68719476736

        kernel.shmall = 4294967296

    步骤2-4是开启最大文件限制等操作

    搭建过程:

    由于没有集群,本次实验是在一台centos 6.5系统上搭建的,elk版本为5.4.0。

    elk安装

    1、机器的JAVA版本最低要求为1.8.0,centos 7自带JAVA1.8.0,centos 6.5的可在百度或者谷歌查找安装过程,并不难;

    2、在官网https://www.elastic.co/downloads下载Elasticsearch、Logstash、Kibana。我下载的是tar包。

    3、解压至/usr/loacl,如

        #tar -xf elasticsearch-5.4.0.tar.gz 

        #cp -r /home/cnc/elasticsearch-5.4.0/* /usr/local/elastisearch

    X-PACK安装

        #/usr/local/elastisearch/bin/elasticsearch-plugin install x-pack

        Kibaba的X-PACK安装方法同上

    elasticsearch配置文件修改:

        #vi /usr/local/elasticsearch-5.4.0/config/elasticsearch.yml

        添加如下项:

            http.cors.enabled: true

            http.cors.allow-origin: "*"

            bootstrap.system_call_filter: false

            xpack.security.enabled: false  ##关闭elasticsearch安全机制,不关闭会导致head插件连接不上集群

            network.host: 你的公网IP地址或127.0.0.1

    logstash配置文件修改:

        #vi /usr/local/logstash/config/logstash.yml

        添加如下:

            path.data: /usr/local/logstash-5.4.2/data/   ##数据存放位置,可随意指定也可默认

            path.config: /usr/local/logstash-5.4.2/conf.d  ##配置存放位置,可随意指定

            xpack.monitoring.enabled: true

            xpack.monitoring.elasticsearch.url: 公网IP地址(或127.0.0.1):9200 

            http.host: "(公网IP或127.0.0.1)" 

    kibana配置文件修改:

        #vi /usr/local/kibana/config/kibana.yml

        添加如下:

            http.host: "IP地址"

            elasticsearch.url: "http://IP地址:9200"         

    elastisearch-head插件安装

        所需要的软件:git gcc gcc-c++ node grunt,其中grunt需要用node来安装。centos 6.5安装node建议安装老版本,新版本要求gcc的版本要到最新。cenots 7可以无视。我的系统是centos 6.5所以安装的是nodev6.9.2,下载地址https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-x64.tar.gz

        #yum install -y git

        #git clone git://github.com/mobz/elasticsearch-head.git  ##下载head插件

        #tar -xf node-v6.9.2-linux-x64.tar.gz

        #ln -s node-v6.9.2-linux-x64/bin/node /usr/local/bin/node

        #ln -s node-v6.9.2-linux-x64/bin/npm /usr/local/bin/npm

        #cd elasticsearch-head-master   ##解压head插件包得到的文件

        #npm install -g cnpm --registry=https://registry.npm.taobao.org

        #vi Gruntfile.js

        修改如下选项:

        wKiom1lcpTnzrwhzAAAUtvwiUlk387.png 

        #npm isntall grunt-cli  ##head插件需要用grunt启动

        #grunt server           ##启动head插件

        logstash实例配置:

            收集本地/var/log/messages日志:

            input {

                file {

                path => "/var/log/messages"

                type => "system"

                start_position => "beginning"

                     }

                }

            output {

                elasticsearch {

            hosts => ["IP地址:9200"]

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

                              }

                    }

            收集交换机日志:

                前提是交换机已配置发送日志功能

                input{

                    udp{

                    port => 514  

                    type => "switch"

                        }

                      }

                output{

                    elasticsearch{

                    hosts => ['202.104.149.44:9200'] 

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

                        }

                       }