ELK安装配置及nginx日志分析

一、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.8.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) 64-Bit Server VM (build 25.73-b02, mixed mode)

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

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

$ tar zxf logstash-2.3.4.tar.gz
$ mv logstash-2.3.4 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 => "6079" #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.5.tar.gz
$ mv elasticsearch-2.3.5 elasticsearch
$ mkdir elasticsearch/{logs,data}  #创建日志及数据存放目录
$ vim elasticsearch/config/elasticsearch.yml  #修改如下内容
cluster.name: server
node.name: node-1
path.data: /data/elk/elasticsearch/data
path.logs: /data/elk/elasticsearch/logs
network.host: 123.56.xx.xx
http.port: 9200

启动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.4.tar.gz
$ mv logstash-2.3.4 logstash
$ mkdir logstash/conf
$ vim logstash/conf/logstash_indexer.conf #手动创建logstash配置文件,添加如下内容
input {
        redis {
                host => "123.56.xx.xx"
             port => "6079"
                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‘ [email protected]

定义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.4-linux-x64.tar.gz
$ mv kibana-4.5.4 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”即可。

时间: 2024-10-19 06:40:25

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

ELK系列一:ELK安装配置及nginx日志分析

本文分三个部分介绍了elk.elk安装配置及基于filebeat分析nginx日志的配置. 第一部分:elk介绍 一.什么是elk ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana.这三款软件都是开源软件,通常是配合使用. 二.Elasticsearch 1.Elasticsearch介绍 Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全

ELK系列二:kibana操作及nginx日志分析图表创建

本文主要介绍kibana4的基本操作,nginx日志分析饼形图.柱形图.客户端地理位置分布图等相关图表创建. 一.kibana基本操作 1.面板介绍 Settings:创建索引 Discover:查询数据,选择左上角的下拉按钮,可以选择相应的索引查找数据 Visualize:统计图表 Dashboard:显示面板,添加相应的图表在面板中 2.创建索引 索引创建时,按照不同的类型建,Time-field要选择@timestamp不选的话在discover面板中不出现时间过滤控件 二.饼形图创建(分

ELKR分布式搭建nginx日志分析系统

ELKR分布式搭建nginx日志分析系统 一.名词介绍 1.什么是elk ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana.这三款软件都是开源软件,通常是配合使用. 2.Elasticsearch 2.1.Elasticsearch介绍 Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引

nginx日志分析利器GoAccess(转)

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

nginx日志分析利器GoAccess

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

Nginx日志分析

日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,达到快速采集并分析Nginx日志. 很多个人站长选取Nginx作为服务器搭建网站,在对网站访问情况进行分析时,需要对Nginx访问日志统计分析,从中获得网站的访问量,访问时段等访问情况,传统模式下利用CNZZ模式,在前端页面插入js,用户访问的时候触发js,但只能记录页面的访问请求,像ajax之类的请求是无法记录的,还有爬虫信息也不会记录.或者利用流计算.离线统计分析Nginx访问日志,从日志中挖掘有用信息

【分享】Nginx日志分析(上)

在很多时候,我们会非常关注网站的访问量,比如网站的日PV是多少.网站某个功能上线之后点击量是多少,像这些东西都是需要从web容器中的访问日志统计出来的,下面我们看一下如何在nginx中统计网站的访问信息 1.设置Nginx访问日志记录格式 在默认情况下,nginx只是记录相关get信息,像post页面是不记录的,所以下面需要修改nginx.conf,让其访问日志记录post等请求信息,在nginx.conf中server段中加入如下信息 log_format  access  '$remote_

ELK最新版实战配置检索nginx日志

说明: 本文只是对相应的功能进行简介,并不会具体介绍部署方案,因为所有的包都是使用的tar.gz格式解压直接可用的,如果有什么不懂的地方或是本人有说错的地方,欢迎大家提问和质疑,也欢迎大家一起交流学习. 环境: OS:ubuntu14.0 Kernel:3.13.0-24-generic logstash:1.5.1 elasticsearch:1.6.0 kibana:4.1 nginx:1.9.1 tomcat:7.0 java:1.7.0 Step1: 所有ELK的安装包都可以去官网下载,

ELK 二进制安装并收集nginx日志

对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch(java).Logstash(jruby).Kibana技术栈的结合, ELK5.X搭建并收集Nginx日志 ELK ELK5.X搭建并收集Nginx日志一.基础环境配置及软件包下载 二.安装Elasticsearch