首页 » 技术文章 » 搭建ELK(Elasticsearch + Logstash + Kibana)日志分析平台

搭建ELK(Elasticsearch + Logstash + Kibana)日志分析平台

 
文章目录

前言

elk1
Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案,含括了日志的收集、分析和展示,常用于网站的访问日志、数据库日志或后台服务的日志收集和分析。

  • ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。
  • logstash是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
  • Kibana是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。

服务端部署

安装JAVA

yum install java-1.8.0-openjdk
export JAVA_HOME=/usr/java

安装Redis

  • 下载安装
    wget http://download.redis.io/releases/redis-3.2.0.tar.gz
    tar xzf redis-3.2.0.tar.gz
    cd redis-3.2.0
    make
    make install
    cp redis.conf /etc/
  • 启动redis nohup redis-server /etc/redis.conf  &

安装Elasticsearch

安装Kibana

  • 下载安装
    wget https://download.elastic.co/kibana/kibana/kibana-4.5.1-linux-x64.tar.gz
    tar xzf kibana-4.5.1-linux-x64.tar.gz
  • 启动服务,在安装目录里运行: bin/kibana
  • 注:默认配置下,Kibana会访问localhost的Elasticsearch,如果要连接其他Elasticsearch实列,请修改Kibana.yml里的Elasticsearch地址。

安装 Logstash

  • 下载安装
    wget https://download.elastic.co/logstash/logstash/logstash-1.5.1.tar.gz 
    tar zxvf logstash-1.5.1.tar.gz 
    
  • 新建配置文件 vi /etc/logstash-index.conf
    input {
      redis {
        host => "127.0.0.1"
        port => "6379"
        data_type => "list"
        key => "logstash"
        codec => json
      }
    }
    output {
      elasticsearch {
        host => "127.0.0.1"
        index => "logstash-%{+YYYY.MM.dd}-%{type}"
      }
    <span">}
  • 启动服务 nohup bin/logstash -w 8 -f  /etc/logstash-index.conf > /soft/logstash-1.5.1/log_index.txt 2>&1 &

客户端配置

  • 安装java、Logstash
  • 使用nginx日志收集做参考,新建配置 vi /etc/logstash-agent-nginx.conf
    input {
      file {
        type => "nginx-access"
        path => "/usr/local/nginx/logs/access.log"
      }
    }
    
    filter {
       grok {
           type => "nginx-access"
           pattern => "%{IPORHOST:source_ip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] %{QS:request} %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent} %{NUMBER:request_time:float}"
       }
       date {
           type => "nginx-access"
            locale => en
           match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
       }
       geoip {
           type => "nginx-access"
           source => "source_ip"
       }
    }
    
    output {
      redis{
        host =>"127.0.0.1"
        data_type => "list"
        key => "logstash"
      }
    }
  • 修改nginx配置 vi /usr/local/nginx/conf/nginx.conf
    log_format  main  '$remote_addr - $remote_user [$time_local] '
                                 '"$request" $status $body_bytes_sent '
                                 '"$http_referer" "$http_user_agent" $request_time';

使用

  1. 在浏览器中访问Kibana的地址,如http://localhost:5601
  2. 配置Elasticsearch索引的index pattern,你可以选择默认的logstash-* 作为index pattern,也可以使用本文当中日志指定的类型 logstash-*-{type},这样的话就可以区分不同类型的日志了。
  3. 选择一个包含时间戳的字段
  4. 点击 Create 添加index pattern,此时便可以在页面的Discover标签页看到日志数据

Discover标签页
Discover的功能是用于查看日志数据,在这里你可以很方便地根据索引、时间和具体的过滤项找到你想到的数据,还可以看到每条记录的详细信息和字段的数据统计情况。同时,你可以保存当前的搜索条件,可以用作可视化或是下次查看时直接打开。

elk_discover

 

Visualize标签页
Visualize的功能是把数据可视化,在这里Kibana提供了多种的可视化类型供选择,可以根据不同的数据源、不同的需求选择不同的可视化类型,它的数据来源可以是以下几种:

  • 一个已保存的搜索
  • 一个已保存的可视化实列
  • 一个新的搜索

elk-Visualize

 

DashBoard标签页
DashBoard是把多个可视化组件整合在一起的页面,这样你就可以很直观地看到不同数据间的关联

QQ截图20160525201007

ELK在运维系统中的应用

  • 日志收集和管理
  • 故障排查
  • 异常监控,如服务器监控、应用监控和错误报警等
  • 数据分析,如性能分析、用户行为分析等

原文链接:搭建ELK(Elasticsearch + Logstash + Kibana)日志分析平台,转载请注明来源!

104