一、ELK简介
1、组成
ELK是Elasticsearch、Logstash、Kibana三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合使用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用。
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
2、工作流程
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

二、ELK安装及配置

1、系统及软件版本介绍:
系统:CentOS6.5_64
elasticsearch:elasticsearch-2.3.5.tar.gz
logstash:logstash-2.3.4.tar.gz
kibana:kibana-4.5.4-linux-x64.tar.gz
redis:redis-2.8.17.tar.gz
JDK:jdk-8u73-linux-x64.tar.gz

2、服务器规划
在两台服务器安装ELK组件
A(需要分析的nginx日志服务器):安装logstash(logstash agent)
B(ELK服务端):安装elasticsearch、logstash(logstash index)、kibana、redis

软件包安装目录:/data/elk

3、创建用户

# groupadd app
# useradd -g app -d /data/elk elk

4、安装及配置JDK
logstash及elasticsearch需要JDK支持

# su - elk
$ tar zxf jdk-8u73-linux-x64.tar.gz
$ vim .bash_profile (添加及修改如下内容) JAVA_HOME=/data/elk/jdk1..0_73
PATH=${JAVA_HOME}/bin:$PATH:$HOME/bin export PATH JAVA_HOME $ . .bash_profile

执行java -version命令查看到如下内容表示JDK配置OK。

java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) -Bit Server VM (build 25.73-b02, mixed mode)

注:以上3-4步在A、B服务器都需要进行操作。

5、A服务器安装及配置logstash(logstash agent)

$ tar zxf logstash-2.3..tar.gz
$ mv logstash-2.3. logstash
$ mkdir logstash/conf
$ vim logstash/conf/logstash_agent.conf #手动创建logstash配置文件,添加如下内容
input {
file {
type => "nginx access log"
path => ["/app/nginx/logs/access.log"] #nginx日志路径
}
}
output {
redis {
host => "123.56.xx.xx" #redis server IP
port => "" #redis server port
data_type => "list" #redis作为队列服务器,key的类型为list
key => "logstash:redis" #key的名称,可以自定义
}
}

语法检查:

$ ./logstash -t -f ../conf/logstash_agent.conf
Configuration OK

启动logstash(最好是在B服务器安装好redis后再进行启动):

$ cd logstash/bin
$ nohup ./logstash -f ../conf/logstash_agent.conf &
$ tail -f nohup.out #查看日志,输出以下内容,表示logstash正常启动
{:timestamp=>"2016-12-05T11:06:35.407000+0800", :message=>"Pipeline main started"}

注:以下安装及配置内容全部在B服务器上进行

6、安装及配置redis

这个比较简单(过程略,端口使用6079)

启动redis

/data/elk/redis/bin/redis-server /data/elk/redis/conf/redis.conf

7、安装及配置elasticsearch

$ tar zxf elasticsearch-2.3..tar.gz
$ mv elasticsearch-2.3. elasticsearch
$ mkdir elasticsearch/{logs,data} #创建日志及数据存放目录
$ vim elasticsearch/config/elasticsearch.yml #修改如下内容
cluster.name: server
node.name: node-
path.data: /data/elk/elasticsearch/data
path.logs: /data/elk/elasticsearch/logs
network.host: 123.56.xx.xx
http.port:

启动elasticsearch

$ cd elasticsearch/
$ nohup ./bin/elasticsearch &

通过浏览器访问:

http://123.56.xx.xx:9200/

安装elasticsearch-head插件:

$ cd elasticsearch/bin/
$ ./plugin install mobz/elasticsearch-head

访问http://123.56.xx.xx:9200/_plugin/head/,可以查看集群状态,集群的内容,执行搜索和普通的rest请求等:

8、安装及配置logstash(logstash index)

$ tar zxf logstash-2.3..tar.gz
$ mv logstash-2.3. logstash
$ mkdir logstash/conf
$ vim logstash/conf/logstash_indexer.conf #手动创建logstash配置文件,添加如下内容
input {
redis {
host => "123.56.xx.xx"
     port => ""
data_type => "list"
key => "logstash:redis"
type => "redis-input"
}
}
filter {
grok {
     match => { "message" => "%{NGINXACCESS}" }
}
    geoip {
     source => "clientip"
     add_tag => [ "geoip" ]
     database => "/data/elk/logstash/GeoLiteCity.dat"
     add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
     add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
   mutate {
     convert => [ "[geoip][coordinates]", "float"]
}
   date {
     match => [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z" ]
      remove_field => [ "timestamp" ]
}
   useragent {
     source => "http_user_agent"
     target => "browser"
}
} output {
   elasticsearch {
     hosts => ["123.56.xx.xx:9200"]
}
   stdout {codec => rubydebug}
}

配置Logstash以使用GeoIP,下载最新的GeoLite城市数据库

$ cd /data/elk/logstash
$ curl -O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"
$ gzip -d GeoLiteCity.dat.gz

添加geo_point映射

curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
curl -XPUT 'http://123.56.xx.xx:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

定义nginx日志匹配规则

$ mkdir logstash/patterns
$ vim nginx #添加内容如下:
NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{NOTSPACE:http_x_forwarded_for}

检查配置并启动logstash

$ ./logstash -t -f ../conf/logstash_indexer.conf
Configuration OK
nohup ./logstash -f ../conf/logstash_indexer.conf &

9、安装及配置kibana

$ tar zxf kibana-4.5.-linux-x64.tar.gz
$ mv kibana-4.5. kibana
$ vi kibana/config/kibana.yml #修改内容如下
elasticsearch.url: "http://123.56.xx.xx:9200"

启动kibana

$ cd kibana/bin
$ nohup ./kibana &

访问kibana

浏览器打开http://123.56.xx.xx:5601/

创建索引

使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。

ELK安装配置及nginx日志分析的更多相关文章

  1. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  2. 使用elk+redis搭建nginx日志分析平台

    elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...

  3. 使用elk+redis搭建nginx日志分析平台(引)

    http://www.cnblogs.com/yjf512/p/4199105.html elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎 ...

  4. elk安装配置

    ELK介绍   官网https://www.elastic.co/cn/ 中文指南https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/det ...

  5. nginx日志分析利器GoAccess

    面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...

  6. nginx日志分析利器GoAccess(转)

    面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...

  7. nginx高性能WEB服务器系列之八--nginx日志分析与切割

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  8. Nginx 日志分析及性能排查

    Nginx 日志分析及性能排查 2017-03-04 Linux爱好者 (点击上方公众号,可快速关注) 作者:-外星人- my.oschina.net/362228416/blog/844713 如有 ...

  9. Nginx日志分析及脚本编写

    在我们日常的运维中,当Nginx服务器正常运行后,我们会经常密切关注Nginx访问日志的相关情况,发现有异常的日志信息需要进行及时处理. 那今天我将跟大家一起来研究和分析Nginx日志,nginx默认 ...

随机推荐

  1. html + ashx 实现Ajax省市联动

    基本思路:1.了解数据库中省和市的表结构及关联主键 2.创建html页面及select标签 3.通过ajax向ashx(一般处理程序)发送后台请求完成联动效果 表结构: 这里,开始创建一个命为demo ...

  2. selenium2.0处理case实例(一)

    通过自动化脚本, 判断下拉框选项值是否按照字母顺序(忽略大小写)显示 case场景如下: 1)打开www.test.com;2)判断下拉框选项是否按照字母顺序排列(忽略大小写)3)选择其中一个任意选项 ...

  3. OC - 8.Quartz2D核心要点

    简介 作用 绘制 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件(通常为内部结构较复杂的控件) UIKit中的绝大部分控 ...

  4. c#安全性、稳定性、高性能需要注重的点

    1.弱事件 2.类型安全(包括类型转换时可能的异常) 3.线程安全 5.装箱和拆箱 6.闭包传递局部变量时可能遇到的问题. 7.用于dictionary的键,要同时实现GetHashCode和Equa ...

  5. javascript Window对象 第16节

    <html> <head> <title>浏览器对象</title> <script type="text/javascript&quo ...

  6. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  7. ubuntu fcitx 安装 使用

    系统内置的ibus的86五笔,感觉有些老不太好用, 所以安装试用了一下fcitx下的五笔,记录一下安装方法 ,各种搜索... 我的ubuntn版本: #48-Ubuntu SMP Fri Aug 24 ...

  8. 《sed的流艺术之二》-linux命令五分钟系列之二十二

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  9. 如何判断一个Div是否在可视区域,判断div是否可见

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. TDirectory.IsEmpty判断指定目录是否为空

    使用函数: System.IOUtils.TDirectory.IsEmpty class function IsEmpty(const Path: string): Boolean; static; ...