ELK-快速入门使用

一、ELK概述

ELK 是三个开源软件的缩写,分别表示: Elasticsearch , Logstash , Kibana 。
ELK 通常用来构建日志分析平台、数据分析搜索平台等

官方文档

https://www.elastic.co/cn/products

组件介绍

Elasticsearch 是个开源分布式全文检索和数据分析平台。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,负载均衡等特点。
Kibana 是一个针对Elasticsearch的开源数据分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
Logstash 是一款基于插件的数据收集和处理引擎。Logstash 配有大量的插件,以便人们能够轻松进行配置以在多种不同的架构中收集、处理并转发数据。
Beats 轻量级的数据收集处理工具(Agent),具有占用资源少的优点,适合于在各个服务器上采集数据后传输给Logstash,官方也推荐此工具。Beats有多多种类型,比较常用的是 FileBeats

组件关系图

ELK-快速入门使用_第1张图片

二、Logstash详解

架构图

ELK-快速入门使用_第2张图片

  • 处理过程可分为一个或多个管道。在每个管道中,会有一个或多个输入插件接收或收集数据,然后这些数据会加入内部队列。默认情况下,这些数据很少并且会存储于内存中,但是为了提高可靠性和弹性,也可进行配置以扩大规模并长期存储在磁盘上。
  • 处理线程会以小批量的形式从队列中读取数据,并通过任何配置的过滤插件按顺序进行处理。Logstash 自带大量的插件,能够满足特定类型的操作需要,也就是解析、处理并丰富数据的过程。处理完数据之后,处理线程会将数据发送到对应的输出插件,这些输出插件负责对数据进行格式化并进一步发送数据(例如发送到 Elasticsearch)。

三、基础环境安装

  • 修改网卡
vi /etc/sysconfig/network-scripts/ifcfg-ens33

#修改为开机自动分配网卡
ONBOOT=YES


#或者修改为静态ip
BOOYPROTO=static
ONBOOT=yes
#添加
IPADDR=192.168.47.152(ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.47.2(虚拟机网段)
DNS1=119.29.29.29
DNS2=182.254.116.116


  • 重启网卡服务
systemctl restart network 
  • 关闭防火墙
systemctl stop firewalld   (centos6 : service iptables stop)
systemctl disable firewalld (centos6 : chkconfig iptables off)
  • 安装gcc和wget
yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget
  • 安装jdk
# rpm -ivh jdk-8u181-linux-x64.rpm

配置环境变量(可不用)
# vi /etc/profile
export JAVA_HOME=/usr/java/latest
export CLASSPATH=.
export PATH=$PATH:$JAVA_HOME/bin

更新资源
# source /etc/profile

一台服务器安装nginx

  • 解压nginx
tar -zxvf nginx-1.11.1.tar.gz
  • 安装nginx到指定路径
./configure --prefix=/usr/local/nginx
  • 编译安装
make && make install

Filebeat环境搭建 (和nginx 安装在同一台服务器上)

  • 安装
[root@localhost ~]# tar -zxvf filebeat-6.4.0-linux-x86_64.tar.gz -C /usr
  • 配置
[root@localhost ~]# mkdir logs
[root@localhost ~]# vim /usr/filebeat-6.4.0-linux-x86_64/filebeat.yml
让beat取读取nginx的日志文件并且输出给logstash取处理
# Change to true to enable this input configuration.
enabled: true(打开)
 # Paths that should be crawled and fetched. Glob based paths.
paths:
- /usr/local/nginx/logs/access*.log(日志文件)
# output.elasticsearch:(关闭)
 # Array of hosts to connect to.
 # hosts: ["localhost:9200"]
output.logstash:(打开)
 # The Logstash hosts
hosts: ["192.168.23.143:5044"](logstash的ip号默认5044端口)
  • 到nginx安装目录启动nginx
[root@localhost nginx-1.11.1]# cd /usr/local/nginx/
[root@localhost nginx]# sbin/nginx -c conf/nginx.con

上传测试数据(访问nginx生成日志文件)

另一台服务器安装logstash

注意:任何 Logstash 配置都必须至少包括一个输入插件和一个输出插件。过滤插件是可选项。

[root@localhost ~]# tar -zxvf logstash-6.4.0.tar.gz -C /usr
  • 修改配置文件
[root@localhost logstash-6.4.0]# cd /usr/logstash-6.4.0/
[root@localhost logstash-6.4.0]# vim config/simple.conf
  • 配置文件中利用Grok表达式来转换日志文件为json串
    input {
    beats {
     port => "5044"
    }
    }
    # 数据过滤 解析
    filter {
    grok {
     match =>{
        "message" => "%{IPORHOST:client_ip} - %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%
    {WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:http_referer} %{QS:http_user_agent}"
     }
    }
    geoip {
      source => "client_ip"
    }
    date {
      match => [ "time" , "dd/MMM/YYYY:HH:mm:ss Z" ]
     }
    }
    # 输出到本机的 ES
    output {
    elasticsearch {
      hosts => [ "192.168.23.143:9200" ]
      index => "logs-%{+YYYY.MM.dd}"
    }
    }
    

启动测试

保证es集群的服务开启

**保证es集群的服务开启**
启动logstash
[root@localhost logstash-6.4.0]# bin/logstash -r -f config/elk.conf
启动filebeat
[root@localhost filebeat-6.4.0-linux-x86_64]# ./filebeat
数据采集

打开kibana取查看生成的索引

ELK-快速入门使用_第3张图片

Kibana数据可视化展示

ELK-快速入门使用_第4张图片

ELK-快速入门使用_第5张图片

ELK-快速入门使用_第6张图片
添加视图
ELK-快速入门使用_第7张图片

ELK-快速入门使用_第8张图片
添加仪表盘

ELK-快速入门使用_第9张图片

你可能感兴趣的:(BigData)