您的位置:首页 > 其它

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

2016-05-27 09:25 465 查看


前言



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

下载安装
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.noarch.rpm
yum localinstall elasticsearch-1.7.1.noarch.rpm


启动服务  
service
elasticsearch start


测试访问  
curl
-X GET http://localhost:9200/[/code] 
安装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';



使用

在浏览器中访问Kibana的地址,如http://localhost:5601

配置Elasticsearch索引的index pattern,你可以选择默认的logstash-* 作为index pattern,也可以使用本文当中日志指定的类型 logstash-*-{type},这样的话就可以区分不同类型的日志了。

选择一个包含时间戳的字段

点击 Create 添加index pattern,此时便可以在页面的Discover标签页看到日志数据

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






(点击图片查看大图)

 

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

一个已保存的搜索

一个已保存的可视化实列

一个新的搜索





(点击图片查看大图)

 

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





(点击图片查看大图)


ELK在运维系统中的应用

日志收集和管理

故障排查

异常监控,如服务器监控、应用监控和错误报警等

数据分析,如性能分析、用户行为分析等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息