什么是ELK?

通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 、filebeat三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称为ELK stack,官方域名为stactic.co,ELK stack的主要优点有如下几个:
处理方式灵活: elasticsearch是实时全文索引,具有强大的搜索功能
配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:elasticsearch和logstash都可以灵活线性扩展
前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单
什么是Elasticsearch:
是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索搜索、支持分布式可实现高可用、提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。

什么是Logstash

可以通过插件实现日志收集和转发,支持日志过滤,支持普通log、自定义json格式的日志解析。

什么是kibana:

主要是通过接口调用elasticsearch的数据,并进行前端数据可视化的展现。

为什么使用 ELK?

ELK组件在海量日志系统的运维中,可用于解决以下主要问题:

  • 分布式日志数据统一收集,实现集中式查询和管理
  • 故障排查
  • 安全信息和事件管理
  • 报表功能

ELK组件在大数据运维系统中,主要可解决的问题如下:

  • 日志查询,问题排查,故障恢复,故障自愈
  • 应用日志分析,错误报警
  • 性能分析,用户行为分析

一:elasticsearch部署:

1.1:环境初始化:

IP:192.168.1.58
主机名:node-1
系统:CentOS 7
Java:1.8.0_201
elasticsearch:6.6.0

1.2: 获取elasticsearch-6.6.0

https://www.elastic.co/downloads/

下载安装ELK组件

[root@mha-master data]# wget  https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz
[root@mha-master data]# wget  https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz
[root@mha-master data]# wget  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz 

安装部署elasticsearch-6.6.0

[root@mha-master data]# yum install -y java-1.8.0-openjdk-devel java-1.8.0-openjdk
[root@mha-master data]# tar xf elasticsearch-6.6.0.tar.gz
[root@mha-master data]# cd elasticsearch-6.6.0/config
[root@mha-master config]# grep -vE "^$|^#" elasticsearch.yml 
        cluster.name: my-ELK
        node.name: node-1
        path.data: /data/ELK/elasticsearch/data
        path.logs: /data/ELK/elasticsearch/log
        network.host: 192.168.1.58
        http.port: 9200
        discovery.zen.ping.unicast.hosts: ["192.168.1.58"]      
        http.cors.enabled: true     # 开放插件head访问
        http.cors.allow-origin: "*"  # 开放插件head访问 

修改参数

   [root@mha-master data]#  echo "vm.max_map_count=655360">>etc/sysctl.conf
   [root@mha-master data]# sysctl -p
     [root@mha-master data]#  vim /etc/security/limits.conf
     * soft nproc 1000000
     * hard nproc 1000000
     * soft nofile 1000000
     * hard nofile 1000000

启动访问测试

[root@mha-master config]#   groupadd elsearch
[root@mha-master config]#  useradd elsearch -g elsearch -p elasticsearch
[root@mha-master config]#  chown -R elsearch:elsearch  /data/ELK   /data/elasticsearch-6.6.0
[root@mha-master config]# su -  elsearch
[root@mha-master config]# cd /data/elasticsearch-6.6.0
[root@mha-master elasticsearch-6.6.0]# ./bin/elasticsearch &
[root@mha-master elasticsearch-6.6.0]# curl http://192.168.1.58:9200
       {
         "name" : "node-1",
         "cluster_name" : "my-ELK",
         "cluster_uuid" : "Frii070FSEKiOSYlE86lOg",
         "version" : {
           "number" : "6.6.0",
           "build_flavor" : "default",
           "build_type" : "tar",
           "build_hash" : "a9861f4",
           "build_date" : "2019-01-24T11:27:09.439740Z",
           "build_snapshot" : false,
           "lucene_version" : "7.6.0",
           "minimum_wire_compatibility_version" : "5.6.0",
           "minimum_index_compatibility_version" : "5.0.0"
         },
         "tagline" : "You Know, for Search"
       }           

安装head插件

[root@mha-master elasticsearch-6.6.0]# yum install -y npm
[root@mha-master data ]# git clone https://github.com/mobz/elasticsearch-head.git
[root@mha-master data ]# cd  elasticsearch-head/
[root@mha-master elasticsearch-head]# npm install -g grunt-cli
[root@mha-master elasticsearch-head]# npm install
    修改配置文件:
    Gruntfile.js 
                        connect: {
                    server: {
                            options: {
                                    port: 9100,
                                    hostname: "*",  # 新增
                                    base: '.',
                                    keepalive: true
                            }
                    }
            }

    });
    _site/app.js        
      this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.1.58:9200";  #  修改为自己的服务
    [root@mha-master elasticsearch-head]# grunt server   #启动
    测试访问:"http://192.168.1.58:9100

ELK使用之-elasticsearch安装部署—1_第1张图片

elasticsearch和插件部署完毕